我坚持通过在 MIP 中编写约束来查找每列的最大值。不幸的是,错误是
Error 59 Endogenous prod smin smax require model type
Error 256 equation eq2.. VAR prod smin smax
假设我将 EM(f,t,i) 作为正变量,这是之前这样的约束的结果
i1 i2 i3 i4 i5
f1.t1 7 5 6 0 6
f1.t2 8 4 6 1 6
f1.t3 6 7 3 2 4
f2.t1 8 7 5 3 1
f2.t2 0 5 5 7 0
f2.t3 0 8 0 5 9
我当前的编码:
eq2(f,i).. last(i) =e= smax((t),EM(f,t,i));
所以,我想修复上面的编码并找到每列的最大值,然后收集在last(i)变量中。 我的目标应该是
last(1) = 8, last(2) = 8, last(3) = 6, last(4) = 7, last(5) = 9
请帮助我实现这个 MIP 模型。谢谢。
要模特
y(i) = smax(j,x(i,j))
你需要做类似的事情:
y(i) >= x(i,j) for all i,j
y(i) <= x(i,j)+(1-δ(i,j))*M for all i,j
sum(j,δ(i,j)) = 1 for all i
δ(i,j) ∈ {0,1} (binary variables)
其中M是一个足够大的常数。通常我们可以简化事情,但这取决于模型的其余部分。