有没有一种简单的方法来减少米尔普中正松弛变量的价值?
最近,我一直在学习优化,并且我的优化问题(最小化)是在MILP求解器中编码的,这告诉我这对我的模型来说是不可行的。因此,我引入了一些正/负松弛变量。 现在,我得到了一个可行的解决方案,但是积极的松弛变量比我可以接受的要大。 因此,我对这些变量(乘以大数量)进行了惩罚/权重,希望MILP求解器可以减少变量,但这无效(我得到了相同的解决方案) 通常,当松弛太大时,是否有任何方法可以遵循? 一般而言,有没有更好的方法来选择松弛变量?
Recently, I have been learning optimization, and my optimization problem, (minimization), is encoded in a MILP solver which tells me it's infeasible for my model. Hence, I introduced a few positive/negative slack variables.
Now, I get a feasible solution, but the positive slack variables are way bigger than what I can accept.
So, I gave penalties/weights to those variables (multiplied by large numbers), hoping that the MILP solver would reduce the variables, but that didn't work (I got the same solution)
Is there any approach to follow, in general, when the slack is too large?
Is there a better way to pick the slack variables, in general?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
对于数学编程/优化的新人来说,一个常见的陷阱是变量默认情况下是非负的,也就是说,他们始终具有0的隐含下限。您的数学模型可能无法明确指定此变量,因此这些变量可能需要为被宣布为免费(带有 - infinity的下限)。
通常,您应该仔细检查模型(作为LP文件),并将其与数学公式进行比较。
A common pitfall for people new to mathematical programming/optimization is that variables are non-negative by default, that is, they always have an implied lower bound of 0. Your mathematical model may not specify this explicitly, so those variables might need to be declared as free (with a lower bound of -infinity).
In general, you should double-check your model (as LP file) and compare it to the mathematical formulation.