关于变量的条件语句添加到线性编程的约束中

时间:2019-07-23 20:38:53

标签: python python-3.x pulp

我正在寻找使用Pulp建模和解决以下线性问题的最佳方法,其中我的变量有条件语句要添加到约束中:

这里是一个例子:

Max (x1*100 - a*80 - b*100) + (x2*80 - c*120 - d*75)

s.t。

a + b = x1

c + d = x2

x1 > 0

x2 > 0

if x1 > 0 then x2 = 0

if x2 > 0 then x1 = 0

a, b, c, d <= 100

在纸浆问题中,我已经将x1,x2,a,b,c和d声明为变量。

我试图在obj函数中添加2个指标函数(一个用于x1,一个用于x2),但是Pulp不接受它们。

我找到了一些好的答案: Converting conditional constraints to linear constraints in Linear Programming

但是不知道用于编码的确切措辞。

1 个答案:

答案 0 :(得分:1)

制作2个二进制变量X1和X2

然后设置

X1+X2 <=1

0 <= x1 <= X1*M
0 <= x2 <= X2*M

其中M是足够大的数字(请注意,M越小,问题越容易解决)