« Rによる二次計画法 | メイン | Rによる二次計画法 例 »

Rによる二次計画法 等式制約がある場合

[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

等式制約条件も満たしています.


Rによる二次計画法 例

トラックバック

このエントリーのトラックバックURL:
http://blogs.topaz.ne.jp/mt/MT-3.37-ja/mt-tb.cgi/270