优化失败。无法找到一个可行的起点

时间:2017-02-02 16:15:16

标签: python scipy

请帮我查一下以下代码的错误。我已经看到有一个类似问题的线程,但不幸的是,那里提供的解决方案并没有解决我的问题。

代码:

A_ub=[[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1], [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1]]

b_ub=[0, 0, 0, 0]

A_eq=[[0, -0.7092198581560284, 0.7092198581560284, 0, 0, 0, 0, 0, 0, 0, 0], [-1, -0.7092198581560284, -0.7092198581560284, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0.7092198581560284, 0, 1, 0, 1, 1, 0, 0, 0, 0], [0, 0.7092198581560284, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, -0.7092198581560284, 0, -1, -1, 0, 0, 1, 0, 0], [0, 0, 0.7092198581560284, 0, 0, 0, 0, 0, 0, 1, 0]]

b_eq=[0, 1, 0, 1, 0, 0, 0, 0]

c=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]

res = linprog(c, A_ub, b_ub,A_eq, b_eq)

print res

我收到以下错误:

  

有趣:2.0

     

消息:'优化失败。无法找到可行的起点   点“。

     

nit:5

     

状态:2

     

成功:错误

     

x:nan

1 个答案:

答案 0 :(得分:1)

您的解决方案空间为空,不存在可行点。例如,检查第二个相等约束: [-1, -0.7092198581560284, -0.7092198581560284, 0, 0, 0, 0, 0, 0, 0, 0]乘以决策变量的向量应等于1.

默认情况下,决策变量假定为非负数,因为不存在该约束的正系数,因此很容易看出模型不可行的一个例子。 因此,如果所有x必须大于或等于0,则-1 * x1 -0.7092198581560284 * x2 -0.7092198581560284 * x3 = 1没有可行的解决方案。

x的界限虽然不能解决你的问题。即使x是真实的,解空间也是空的。我的猜测是,强烈限制解空间的等式约束是矛盾的。根据您要模拟的内容,您必须查看整个程序,以确定问题所在。