排序约束的混合整数线性规划

时间:2018-12-09 01:20:43

标签: optimization linear-programming nonlinear-optimization mixed-integer-programming

我正在尝试为与特定变量的等级相关的约束条件编写混合整数线性规划,如下所示:

  • 我将X1,X2,X3,X4作为决策变量。
  • 有一个约束要求将i定义为X1的等级(例如,如果X1是X1,X2,X3,X4中最大的数字,则i = 1;如果X1是第二大数字,则i = 2,如果X1是第三大数字,则i = 3,否则i = 4)

如何将这个约束写入混合整数线性规划中?

1 个答案:

答案 0 :(得分:0)

不太容易。这是一个尝试:

首先为y(i)引入二进制变量i=2,3,4

然后我们可以写:

 x(1) >= x(i) - (1-y(i))*M   i=2,3,4
 x(1) <= x(i) + y(i)*M       i=2,3,4
 rank = 4 - sum(i,y(i))
 y(i) ∈ {0,1}                i=2,3,4

这里M是一个足够大的常数(一个很好的选择是数据的最大范围)。如果您的求解器支持指标约束,则可以简化一些事情。

一个小例子说明了它的工作原理:

----     36 VARIABLE x.L  

i1 6.302,    i2 8.478,    i3 3.077,    i4 6.992


----     36 VARIABLE y.L  

i3 1.000


----     36 VARIABLE rank.L                =            3.000