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

な感じのレスポンスが帰ってきて最適解が求まる。