首页 文章

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

提问于
浏览
0

我正在尝试为与特定变量的排名相关的约束编写混合整数线性编程,如下所示:

  • 我有X1,X2,X3,X4作为决策变量 .

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

我怎么能把这个约束写成混合整数线性规划?

谢谢!

1 回答

  • 0

    不那么容易 . 这是一个尝试:

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

    然后我们可以写:

    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
    

相关问题