提供されている CVXOPT 用の QP ソルバーは、次の形式の問題を解決します ( http://cvxopt.org/userguide/coneprog.html#quadratic-programmingを参照)。
Minimize
(1/2)*x.t*P*x + q.T*x
Subject to
G*x <= h
A*x = b
これは問題なく動作しますが、問題の制約を両側の不等式で解決したい場合は少し厄介です。
Minimize
(1/2)*x.t*P*x + q.T*x
Subject to
G1*x <= h1
G2*x >= h2
A*x = b
2 番目の問題を最初の問題として再定義できます。次元の数を 2 倍にし、をそれ自体の上に積み重ねることを要求するnew_x
ことによってです。old_x
new_x = [old_x]
[old_x]
の適切な形式を見つけることで、上記の条件を強制できると思いますA
。h1
次に、とh2
不等式の両方を にエンコードして、スタックするようにnew_G * new_x <= new_h
設定し、対角線上に連続した s とそれに続く連続した sを持つ対角行列にします。new_h
h1
h2
new_G
n
1
n
-1
とにかく、上記は非常に不器用です。私の問題の次元が2倍になり、うまくいかないかもしれません。
CVXOPT の 2 番目の問題をより適切に表現する方法はありますか?