当我修改约束的RHS(GLPK)时会发生什么?

时间:2018-06-13 06:24:57

标签: cplex gurobi glpk scip coin-or-cbc

增加对GLPK的MIP问题的约束小于或等于的RHS。但是,有时候,在重新优化之后,GLPK在时间限制内找不到任何可行的解决方案。所以我猜它不会检查以前的解决方案是否可行。有没有人有这方面的经验?或者可以指向一个不是源代码本身的文档?

此外,我想知道在为任何其他求解器(例如Gurobi,Cplex,SCIP,CBC)添加约束后,工作流程是什么,因此任何信息都是有用的。

干杯!

2 个答案:

答案 0 :(得分:2)

在更改模型中的某些内容后,通常会丢弃所有解决信息,并从头开始解决问题。即使您放松了问题,这并不一定意味着MIP求解器更容易求解,特别是它可能总是导致不同的LP解决方案,导致不同的分支,从不同的起点启动原始启发式并且不幸的到最后。所以最后,你可能只是不幸的是解算器现在需要更长的时间。

进行"热心启动"在MIP求解器中相当困难。 SCIP提供了这样的功能,参见http://scip.zib.de/doc-5.0.1/html/REOPT.php,但这只有在你改变客观系数或收紧约束时才有效(它基于以前不可行的所有东西仍然不可行的假设,所以你只需要再次搜索树的可行部分)。

在您的特定情况下,只需存储可行的解决方案并在下次运行中尝试它们就会有所帮助。这就是SCIP默认做的事情。此外,SCIP(以及您提到的所有替代品)应该比GLPK更稳定和更高效。请参阅http://plato.asu.edu/ftp/milpc.html,了解MIPLIB 2010上的MIP求解器基准,标准MIP基准集:GLPK能够在2小时的时限内解决87个实例中的2个,而CBC解决了53个,SCIP解决了76个,以及CPLEX和Gurobi都解决了所有87个实例。此外,Xpress和SAS在基准测试中表现非常出色。

答案 1 :(得分:0)

显然,如果你放松配方,问题就不会变得不可行(如果之前可行的话)。所以要么你误解了某些东西,要么代码都有错误。

我认为你还没有尝试过另一个解算器。你绝对应该这样做。一般而言,您在问题中提到的所有问题都被认为比GLPK更可靠/稳定。