有没有一种简单的方法可以减少 MILP 中正松弛变量的值?

Is there a simple way to reduce the value of positive slack variables in MILP?

最近,我一直在学习优化,我的优化问题(最小化)被编码在 MILP 求解器中,它告诉我它对我的模型不可行。因此,我引入了一些 positive/negative 松弛变量。 现在,我得到了一个可行的解决方案,但正松弛变量比我能接受的要大得多。 所以,我给这些变量 penalties/weights(乘以大数),希望 MILP 求解器会减少变量,但这没有用(我得到了相同的解决方案) 一般来说,当松弛过大时,有什么方法可以遵循吗? 一般来说,有没有更好的方法来选择松弛变量?

  1. 将两者添加到带有惩罚系数的 objective。
  2. 或者给宽松裤加一些上限。

刚接触数学 programming/optimization 的人常犯的一个错误是变量默认为 non-negative,即它们的隐含下限始终为 0。您的数学模型可能未指定此值明确地,因此可能需要将这些变量声明为自由变量(下限为 -infinity)。

一般来说,您应该double-check您的模型(作为 LP 文件)并将其与数学公式进行比较。