【发布时间】:2014-12-09 10:23:20
【问题描述】:
为 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 找到合适的表格来强制执行上述条件。然后,我可以将new_h 设置为h1 堆叠在h2 和new_G 上,将h1 和h2 不等式编码为new_G * new_x <= new_h,使其成为n 连续@987654336 的对角矩阵@s 后跟 n 在对角线上连续的 -1s。
无论如何,以上内容非常笨拙,它使我的问题的维度增加了一倍,甚至可能不起作用。
CVXOPT 中的第二个问题有更好的表达方式吗?
【问题讨论】:
标签: python convex-optimization cvxopt quadratic-programming