[R] [R言語] [2次計画法] [2次計画問題] [非線形計画法] [数理計画法] [最適化]
制約条件の順序は、等式制約がある場合前の記事で
等式制約 → 不等式制約
としなければならないと書きました.
制約条件を以下のように変更してみます(1番目の制約条件を等式制約に変更しました).
-4×b1 + -3×b2 + = -8
2×b1 + 1×b2 + ≧ 2
-2×b2 + 1×b3 ≧ 0
この場合、不等式制約と同じようにRの変数を設定します.
Dmat <- matrix(0,3,3)
diag(Dmat) <- 1
Dmat
[,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1
dvec <- c(0,5,0)
Amat <- matrix(c(-4,-3,0,2,1,0,0,-2,1),3,3)
Amat
[,1] [,2] [,3]
[1,] -4 2 0
[2,] -3 1 -2
[3,] 0 0 1
bvec <- c(-8,2,0)
実行するときにmeqという引数に等式制約の数を設定します.今回は1個ですので「meq=1」を設定します.
solve.QP(Dmat, dvec, Amat, bvec=bvec, meq=1)
$solution
[1] 1.123596 1.168539 2.337079$value
[1] -1.797753$unconstrained.solution
[1] 0 5 0$iterations
[1] 3 0$Lagrangian
[1] 0.2808989 0.0000000 2.3370787$iact
[1] 3 1
これで等式制約を含んだ2次計画法を実行することができました.
-4 × 1.123596 + -3 × 1.168539 -> 8.000001