Pythonの凸最適化ツールキット--cvxopt

二次計画

二次計画標準

\ [\開始{アレイ} {1}
{\ RMは{} \クワッドを最小限} \左({1/2} \右){X ^ T} Pxを+ {Q ^ T} X \\
{\のRM {件名\クワッド}}のGx \ルH \\ \に
は{\ RM {\ qquad \ qquad}} Ax = bのの
\端{アレイを} \]

例えば

\ [\開始{アレイ} {1}
は{\ RM {} \クワッドを最小限} 2x_1 ^ 2 + X_2 ^ 2 + {X_1} {X_2} + {X_1} + {X_2} \\
{\のRM {主題{\ }クワッドに\}} {X_1} \ GE 0 \\
{\のRM {\ qquad \ qquad}} {X_2} \ GE 0 \\
{\のRM {\ qquad \ qquad}} {X_1} + {X_2} = 1
\端{アレイ} \]

間で

\ [\開始{アレイ} {L}
P = \左[{\開始{アレイ} {* {20} {C}}
{4}&1 \\
{1}&2
\端{アレイ}} \右] \ qquad Q = \左[{\} {アレイ} {* {20} {C}開始
\\ 1
1
\端{アレイ}} \右] \\
G = \左[{\ {} {アレイを開始します* {20} {C}}
{ - 1}&0 \\
{0}&{ - 1}
\端{アレイ}} \右] \ qquad H = \左[{\開始{アレイ} {* { 20}、{C}}
0 \\
0
\端{アレイ}} \右] \\
A = \左[{\開始{アレイ} {* {20} {C}
、{1}&1
\端{アレイ}} \右] \ qquadのB = 1つの
\端{アレイ} \]

コードは以下の通りであります:

cvxoptのインポート行列、ソルバ
Q = 2 *行列([[2、0.5]、[0.5、1 ]])
P =行列([1.0、1.0 ])
G =行列([ - 1.0,0.0]、 [0.0、-1.0 ])
H =行列([0.0,0.0 ])
A =マトリックス([1.0、1.0]、(1,2 ))
B =マトリックス(1.0 
ゾル = solvers.qp(Q、P、 G、H、A、B)
 プリント(ゾル[ ' X ' ])

注意:

マトリクス型double型の要素は、次のステートメントを提供することが可能で、でなければなりません。

A =マトリックス([1.0、1.0]、(1,2 )、 'D')

 

 

参考リンク:

https://cvxopt.org/examples/index.html

https://cvxopt.org/userguide/index.html

おすすめ

転載: www.cnblogs.com/yijuncheng/p/11248633.html