以下LP代码在哪里出错?

时间:2019-05-13 13:35:27

标签: python scipy linear-programming

我正在尝试用两个约束解决两个变量的LP问题,其中一个是不等式,另一个是Scipy中的等式约束。 为了转换约束中的不等式,我在其中添加了一个名为A的变量。

Min(z) = 80x + 60y

约束:

0.2x + 0.32y <= 0.25
x + y = 1
x, y <= 0

我通过添加额外的变量A

通过以下等式更改了不等式约束
0.2x + 0.32y + A = 0.25
Min(z) = 80x + 60y + 0A
X+ Y + 0A = 1

from scipy.optimize import linprog
import numpy as np

z = np.array([80, 60, 0])
C = np.array([
[0.2, 0.32, 1],
[1, 1, 0]
])
b = np.array([0.25, 1])
x1 = (0, None)
x2 = (0, None)
sol = linprog(-z, A_eq = C, b_eq = b, bounds = (x1, x2), method='simplex')

但是,我收到一条错误消息

  

方法='simplex'的linprog输入无效。界线长度   与c的长度不一致

我该如何解决?

1 个答案:

答案 0 :(得分:2)

问题是您没有为tinymce.init({ valid_children : '-p[img],h1[img],h2[img],h3[img],h4[img],+div[img],span[img]' }); 提供界限。如果您例如运行

A

您将获得:

linprog(-z, A_eq = C, b_eq = b, bounds = (x1, x2, (0, None)), method='simplex')

如您所见,满足了约束条件:

     con: array([0., 0.])
     fun: -80.0
 message: 'Optimization terminated successfully.'
     nit: 3
   slack: array([], dtype=float64)
  status: 0
 success: True
       x: array([1.  , 0.  , 0.05])

还有

0.2 * 1 + 0.32 * 0.0 + 0.05 = 0.25  # (0.2x + 0.32y + A = 0.25)