整数线性程序中的变量优先级

prioritizing variables in an integer linear program

我想听听您的想法,我如何使用约束(不更改 objective 函数)在整数规划中确定变量的优先级。 考虑以下问题

Min x1+x2+x3+x4+5*x5+6*x6
subject to
x1+x2+x3+x4+x5+x6>=2
xi is {0,1}

解法清晰,两个任意变量

xj (j in{1,2,3,4}) should be 1.

现在,假设我有一个同时最大化的优先级函数,就像这个:

1*x1+2*x2+3*x3+4*x4+5*x5+6*x6.

有了这个,解决方案是唯一的:

x3=x4=1

如何通过约束(不是 objective 函数)将此优先级强制到我的 LP?

这本质上是一个多objective的问题。标准方法是:

第 1 步:求解

Min z = x1+x2+x3+x4+5*x5+6*x6
x1+x2+x3+x4+x5+x6>=2
x in {0,1}

设 z* 为最优值 objective。

第 2 步:现在求解

min 1*x1+2*x2+3*x3+4*x4+5*x5+6*x6
x1+x2+x3+x4+5*x5+6*x6 = z*
x1+x2+x3+x4+x5+x6>=2
x in {0,1}