繁体   English   中英

Python cvxopt忽略了约束

[英]Python cvxopt ignores constraints

我根据以下示例使用CVXOPT进行线性编程: http ://abel.ee.ucla.edu/cvxopt/examples/tutorial/lp.html我很确定我表达了一个约束条件

X1 >= 0 

但是得到负值。 怎么会? 我得到了“找到最佳解决方案”的消息

A = matrix( [ [0.0, 0.0, 1.0, 1.0, -0.0, -0.0, -1.0, -1.0, -1.0, 0.0, 0.0], 
              [0.0, 1.0, 1.0, 0.0, -0.0, -1.0, -1.0, -0.0, 0.0, -1.0, 0.0], 
              [1.0, 0.0, 0.0, 1.0, -1.0, -0.0, -0.0, -1.0, 0.0, 0.0, -1.0]
              ]
            ) 

约束值(右侧)

b = matrix( [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0] )

最小化功能:

c = matrix( [-1.0, -1.0, -1.0] )

呼叫:

 sol=solvers.lp(c,A,b)

但:

print (sol['x']): 
[-4.83e-09]
[ 1.00e+00]
[ 1.00e+00]

-4.83e-09>=0 
False

谢谢

根据用户指南CVXOPT的默认可行性公差为1.0e-7。 因此,您应该期望您的约束仅满足此准确度。

编辑因此,为了确保满足您的“硬”约束,您需要将下限变量设置为等于“硬”约束(即在您的情况下为0) 加上可行性公差:

X1 >= 1.0e-7

暂无
暂无

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

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