Rで非線形制約条件付非線形最適化を行う方法 by Rsolnp
Rsolnpというライブラリを使用するとRで非線形制約条件付非線形最適化を行うことができた。
install.packages("Rsolnp",repos="http://cran.r-project.org/")
でインストール完了。
(いつの間にかCRANに登録されていたのでレポジトリをR-ForgeからCRANへ変更 2010/4/14)
元から入っているサンプルの例題を解いてみる。
library(Rsolnp) # POWELL Problem fn1=function(x) { exp(x[1]*x[2]*x[3]*x[4]*x[5]) } eqn1=function(x){ z1=x[1]*x[1]+x[2]*x[2]+x[3]*x[3]+x[4]*x[4]+x[5]*x[5] z2=x[2]*x[3]-5*x[4]*x[5] z3=x[1]*x[1]*x[1]+x[2]*x[2]*x[2] return(c(z1,z2,z3)) } x0 = c(-2, 2, 2, -1, -1) powell=solnp(x0, fun = fn1, eqfun = eqn1, eqB = c(10, 0, -1))
すると
Iter: 1 fn: 0.03526 Pars: -1.59385 1.51051 2.07795 -0.81769 -0.81769
Iter: 2 fn: 0.04847 Pars: -1.74461 1.62029 1.80509 -0.77020 -0.77020
Iter: 3 fn: 0.05384 Pars: -1.71648 1.59482 1.82900 -0.76390 -0.76390
Iter: 4 fn: 0.05395 Pars: -1.71713 1.59570 1.82727 -0.76364 -0.76364
Iter: 5 fn: 0.05395 Pars: -1.71714 1.59571 1.82725 -0.76364 -0.76364
solnp--> Completed in 5 iterations
な感じのレスポンスが帰ってきて最適解が求まる。