Python的线性不等式系统

时间:2017-11-03 12:44:43

标签: python

我试图在Python中解决线性不等式系统。 我的线性系统看起来像这样:

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

我尝试使用 NumPy ,但linalg.solve(a,b)是为等式(=)设计的,我有不等式(>)。 我已经考虑过将变量添加到我的问题中,将不等式转换为等式:

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

x4和x5> 0

但是我不知道我将会遇到多少限制,而且我不知道linalg.solve是否只给变量带来严格的正值。

我也会研究 SciPy linprog。

我可以添加像x1 + x2 + x3这样的目标函数,这将是一个问题。 但是对于linprog,我只有< = 0的不等式,但我想排除值0.如果我可以有< 0

我希望我的问题很明确。 我已向谷歌寻求帮助,但一无所获。我想我错过了一些东西,因为我不能成为唯一有这个问题的人。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我建议引入一个公差来定义你可以接近零的距离,也许可以迭代公差值

即。重写

wb.sheets[ws].api.Visible = False

as

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

现在,您可以使用spicy.linprog来解决这个问题。 其中3 * x1 + 2 * x2 + 4 * x3 >= t x1 + 4 * x2 + 7 * x3 >= t 。 也许t > 0可以接受为起点。 然后迭代t >= 0.01

在某些时候,您的解决方案可能会以低于您的精度要求开始变化。

希望这有帮助。