LPSolve IDE找不到解决方案

时间:2019-08-01 13:57:22

标签: linear-programming lpsolve

我尝试使用LPSolve IDE解决以下问题:

min: x1;
r_1: 1.08 - k <= x1;
r_2: -1.08 + k <= x1;
c_1: y1 + y2 + y3 = k;
c_2: 2.29 a1 y1 + 2.28 a2 y1 + 2.27 a3 y1 = 1;
c_3: 1.88 b1 y2 + 1.89 b2 y2 + 1.9 b3 y2 = 1;
c_4: 8.98 c1 y3 + 8.99 c2 y3 + 9.0 c3 y3 = 1;

c_14: a1+a2+a3=1;
c_15: b1+b2+b3=1;
c_16: c1+c2+c3=1;


bin a1,a2,a3,b1,b2,b3,c1,c2,c3;

当我可以使用以下参数值来解决此问题时,不确定为什么我会以INFEASIBLE的形式从LPSolve获得输出:

a1=0, a2=1, a3=0
b1=0, b2=1, b3=0
c1=0, c2=1, c3=0

0 + 2.28 0.438596491 + 0 = 1
0 + 1.89 0.529100529 + 0 = 1
0 + 8.99 0.111234705 + 0 = 1

0.438596491 + 0.529100529 + 0.111234705 = 1.0789 (this is k)

1.08 - 1.0789 == 0.0011 <= x1
-1.08 + 1.0789 == -0.0011 <= x1

x1 = 0.0011

我是用错误的方式提出问题,还是做其他错误的事情?如果我将= 1约束放宽到> = 1,则会有一些结果,但是我需要将其设为1(因为它在我的解决方案中)。

1 个答案:

答案 0 :(得分:0)

Lpsolve仅适用于线性模型。您在模型中有变量的乘积,例如2.29 a1 y1。 lpsolve无法解决此类二次模型。

太糟糕了,您没有收到正确的错误消息。我想他们从来没有想到过这个输入。

请注意,二进制变量和连续变量的乘积可以线性化,从而导致所谓的big-M约束(请参阅link)。

这实际上是lpsolve - unfeasible solution, but I have example of 1的副本。令人尴尬的是,这是同一张海报中的一个更早的问题!