线性不等式组的Python算法

2024-04-29 10:50:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用Python来解线性不等式组。 我的线性系统是这样的:

  • 3*x1+2*x2+4*x3>;0
  • x1-4*x2-7*x3>;0

我试过用NumPy,但是线性求解(a,b)是为方程(=)设计的,我有不等式(>;)。 我考虑过在我的问题中加入变量,把不等式转化成方程,比如:

  • 3*x1+2*x2+4*x3-x4+0*x5=0
  • x1+4*x2+7*x3+0*x4-x5=0

x4和x5为>;0。你知道吗

但我不知道我会有多少限制,也不知道线性求解只给变量严格的正值。你知道吗


我还研究了SciPylinprog。你知道吗

我可以加一个像x1+x2+x3这样的目标函数,这不是问题。 但是对于linprog,我只有一个不等式<;=0,但是我想排除值0。如果我能有<;0就好了。你知道吗

我希望我的问题很清楚。 我向谷歌求助,但一无所获。我想我错过了什么,因为我不是唯一一个有这个问题的人。 谢谢你的帮助。你知道吗


Tags: 函数ltgtnumpy目标线性方程x1
1条回答
网友
1楼 · 发布于 2024-04-29 10:50:26

我建议引入一个公差,它定义了接近于零的程度,并可能迭代公差值

即重写

3 * x1 + 2 * x2 + 4 * x3 > 0
x1 + 4 * x2 + 7 * x3 > 0

作为

3 * x1 + 2 * x2 + 4 * x3 >= t
x1 + 4 * x2 + 7 * x3 >= t

现在,你可以用麻辣.linprog解决这个问题。 其中t > 0。 也许t >= 0.01是可以接受的起点。 然后迭代t in [0.01, 0.001, 0.0001, ... ]

在某个时候,您的解决方案可能会开始发生变化,但变化的精度可能低于您的要求。你知道吗

希望这有帮助。你知道吗

相关问题 更多 >