我正在寻找使用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函数中添加两个指示器函数(一个用于x1,一个用于x2),但它们不被纸浆接受。
我找到了一些很好的答案:Converting conditional constraints to linear constraints in Linear Programming
但是不知道用什么词来编码它。
发布于 2019-07-25 05:32:51
将2个二进制变量设为X1和X2
然后设置
X1+X2 <=1和
0 <= x1 <= X1*M
0 <= x2 <= X2*M其中M是一个足够大的数字(请注意,M越小,问题就越容易解决)
https://stackoverflow.com/questions/57171854
复制相似问题