在整数线性程序中对变量进行优先级排序

时间:2018-05-31 14:37:40

标签: optimization linear-programming integer-programming

我想知道如何使用约束(不改变目标函数)优先考虑整数编程中的变量。 考虑以下问题

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

如何通过约束(而不是目标函数)强制优先于我的LP?

1 个答案:

答案 0 :(得分:1)

这实质上是一个多目标问题。标准方法是:

第1步:解决

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

让z *成为最佳目标。

第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}