为 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
我可以将第二个问题重新定义为第一个问题,方法是将维度数加倍并要求new_x
将其old_x
堆叠在自身之上:
new_x = [old_x]
[old_x]
我想我可以通过为A
. h1
然后,我可以将和h2
不等式编码到 中,方法new_G * new_x <= new_h
是设置new_h
为h1
堆叠h2
并new_G
成为对角矩阵,其中n
连续1
s 后跟对角线上的n
连续-1
s。
无论如何,以上内容非常笨拙,它使我的问题的维度增加了一倍,甚至可能不起作用。
是否有更好的方式来表达 CVXOPT 中的第二个问题?