Python cvxopt忽略约束
根据以下示例,我将CVXOPT用于线性规划: 我很确定我表达了一个约束Python cvxopt忽略约束,python,linear-programming,Python,Linear Programming,根据以下示例,我将CVXOPT用于线性规划: 我很确定我表达了一个约束 X1 >= 0 但是得到一个负值。 怎么会?我收到了“找到最佳解决方案”的信息 约束值(右侧) 最小化函数: c = matrix( [-1.0, -1.0, -1.0] ) 电话: sol=solvers.lp(c,A,b) 但是: 感谢根据。因此,您应该期望您的约束仅满足此精度级别 编辑因此,为了确保您的“硬”约束确实得到满足,您需要将变量下限设置为等于您的“硬”约束(即在您的情况下为0)加上可行性公差:
X1 >= 0
但是得到一个负值。
怎么会?我收到了“找到最佳解决方案”的信息
约束值(右侧)
最小化函数:
c = matrix( [-1.0, -1.0, -1.0] )
电话:
sol=solvers.lp(c,A,b)
但是:
感谢根据。因此,您应该期望您的约束仅满足此精度级别 编辑因此,为了确保您的“硬”约束确实得到满足,您需要将变量下限设置为等于您的“硬”约束(即在您的情况下为0)加上可行性公差:
X1 >= 1.0e-7
根据标准,CVXOPT中的默认可行性公差为1.0e-7。因此,您应该期望您的约束仅满足此精度级别 编辑因此,为了确保您的“硬”约束确实得到满足,您需要将变量下限设置为等于您的“硬”约束(即在您的情况下为0)加上可行性公差:
X1 >= 1.0e-7
不确定你所说的“这不起作用”是什么意思,但请参阅我的更新以获得进一步澄清。我希望它能更清楚地解释我想要表达的内容。我已经将可行性容差设置为0,但仍然得到相同的结果。很明显,我做错了什么。然而,我发现了一个不同的解决方案,所以这个问题不再(对我)相关。谢谢也许这是一个旁白,但对我来说这似乎是一个非常关键的问题。我用非常简单的方程测试优化,只是为了看看CVXOPT是否有效,出于某种原因,我得到了那些奇怪的e-7、e-10等答案。然后多亏了安德斯的观点,我不知何故意识到,不确定你所说的“这不起作用”是什么意思,但请参阅我的更新以获得进一步澄清。我希望它能更清楚地解释我想要表达的内容。我已经将可行性容差设置为0,但仍然得到相同的结果。很明显,我做错了什么。然而,我发现了一个不同的解决方案,所以这个问题不再(对我)相关。谢谢也许这是一个旁白,但对我来说这似乎是一个非常关键的问题。我用非常简单的方程测试优化,只是为了看看CVXOPT是否有效,出于某种原因,我得到了那些奇怪的e-7、e-10等答案。多亏了安德斯的观点,我才意识到这一点
print (sol['x']):
[-4.83e-09]
[ 1.00e+00]
[ 1.00e+00]
-4.83e-09>=0
False
X1 >= 1.0e-7