当变量b> a时,MILP方程'a≥X≥b'的变通办法变得不可行

时间:2018-08-15 12:54:44

标签: optimization cplex

我在标题中写的内容微不足道。但是我想知道,对于这种问题,MILP是否有解决方法。

让我假设方程式如下:

X和a是时间相关的变量。 b是固定时间序列。

X应该始终在a和b之间,因此 a≥X≥b

但是b可能会包含比a的最大限制高的值。在这种情况下,我想说a = X或0 = X或其他。

我该如何解决这个问题?我考虑了一段时间,我或我的同事提出的所有解决方案最终都不是MILP方程式。也许这是不可能的。

1 个答案:

答案 0 :(得分:1)

让我用我更熟悉的符号重新陈述问题。我们有变量x[t]y[t]以及常量u[t]。我们要建模:

  y[t] <= x[t] <= u[t]  if y[t] <= u[t]
  x[t] = y[t]           if y[t] >  u[t] 

我们可以将其重写为:

  y[t] <= x[t] <= max(u[t],y[t])

  y[t] <= x[t]
  x[t] <= u[t] + M δ[t]
  x[t] <= y[t] + M (1-δ[t])
  δ[t] ∈ {0,1}

其中M是一个足够大的常数(但不要太大)。如果没有好的方法可以为M取得良好的价值,我们可以使用指标约束或SOS1变量(并非所有求解器都支持这些约束)。