我正在寻找使用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
但是不知道用于编码的确切措辞。
答案 0 :(得分:1)
制作2个二进制变量X1和X2
然后设置
X1+X2 <=1
和
0 <= x1 <= X1*M
0 <= x2 <= X2*M
其中M是足够大的数字(请注意,M越小,问题越容易解决)