这是我之前关于使用SCIP进行MIP的LP放松的question的后续内容 .
虽然我能够通过简单地将MIP(以CPLEX格式)传递给SoPlex来计算我的MIP的LP松弛解决方案,但我观察到SoPlex所花费的计算时间高于使用SCIP本身优化MIP(测试较小的输入) ) . 由于SCIP在解决MIP之前在内部使用SoPlex,这怎么可能?而且,我的LP Relaxation结果实际上给出了整数解,并且与MIP具有相同的目标值 . 我在LP Relaxation中犯了错误吗?或者它是我的问题/制定的一些属性?
我指的是求解器打印的总计算时间(不是我自己计算的) .
2 回答
这种行为很可能来自SCIP预处理例程,它缩小并重新构造输入MIP . 您可以通过在开始优化后查看SCIP输出来验证这一点,其中SCIP打印已删除变量的数量,删除约束等 .
有时,整数配方可以减少问题 . 如果您的问题包含例如二进制变量,则在执行探测时可能会修复很多这些变量:SCIP迭代地将二进制变量修复为0或1,如果一个固定导致不一致,则变量得到修复 .
这种行为可以通过不同的预先决定步骤来解释 . SCIP的预分解通常比SoPlex更快,并且删除更多的行和列 . 请查看统计数据中的相应信息 . 您可以通过键入
display statistics
在交互式shell中显示SCIP统计信息,而SoPlex使用命令行参数-q
打印更多信息(如果您使用的是SoPlex 2.0) . 您可以尝试的另一件事是参数调整 . 您是否在SoPlex中测试了不同的价格(-p3
为devex,-p4
为最陡边缘)或缩放器(-g1
-g3
或-g4
)?运行SoPlex时无需解决问题,它将显示可用参数 .