繁体   English   中英

CVXOPT二次编程接口

[英]CVXOPT quadratic programming interface

为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找到合适的形式来强制执行上述条件。 然后我可以同时编码h1h2不等式到new_G * new_x <= new_h通过设置new_hh1叠置在h2new_G成与一个对角矩阵n连续1秒,然后n连续-1对角线上的第

无论如何,以上内容都很笨拙,它使问题的范围扩大了一倍,甚至可能无法正常工作。

有没有更好的方式表达CVXOPT中的第二个问题?

Minimize 
           (1/2)*x.T*P*x + q.T*x
Subject to
           new_G * x <= new_h
               A * x  = b

哪里

           new_G = [G1;-G2],
           new_h = [h1;-h2].

          (G1 - matrix m1*n, G2 - matrix m2*n, new_G - matrix (m1 + m2)*n) 

new_G = numpy.concatenate( ( G1, -G2 ), axis = 0 )
new_h = numpy.concatenate( ( h1, -h2 ), axis = 1 )

`

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM