如何修复在矩阵 MIP 中查找最大值时出现的错误?

问题描述 投票:0回答:1

我坚持通过在 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 模型。谢谢。

math optimization model gams-math
1个回答
0
投票

要模特

  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是一个足够大的常数。通常我们可以简化事情,但这取决于模型的其余部分。

© www.soinside.com 2019 - 2024. All rights reserved.