我想知道如何使用约束(不改变目标函数)优先考虑整数编程中的变量。 考虑以下问题
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?
答案 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}