我是LP新手,在Python中仅简要使用过PuLP

  • 为什么SCIP 3.2.1 - CPLEX 12.63CPLEX 12.6.3之间存在速度差异? SCIP仍不使用CPLEX解决吗?
  • 为什么有人将SCIP与CPLEX求解器一起使用,而不是直接使用CPLEX?

  • scipy - 使用SCIP的CPLEX vs CPLEX的速度-LMLPHP

    最佳答案

    这有什么区别

    该图未显示LP基准,而是混合整数编程基准

    混合整数编程求解器通常使用基于分支剪切的的算法(包括启发式算法和co。),其中会解决很多松弛(按顺序;将二进制/整数变量视为连续的)产生 LP问题)。

    然后一个决定就是选择如何解决这些松弛的子问题。最简单的决定(还有很多决定;例如,调整 Simplex-algorithm 的参数;在解决非线性圆锥形目标问题时会变得更加复杂)是选择LP解算器。

    SoPlex 是SCIP团队的LP解决方案实现。意义:

  • SCIP-SoPlex将使用SCIP的MIP算法(处理分支,切割生成和合作),并使用SoPlex作为内部LP子问题的求解器
  • SCIP-CPLEX将使用SCIP的MIP算法,并使用CPLEX作为内部LP子问题的求解器

  • 为什么将SCIP与CPLEX结合使用(而不是使用纯CPLEX方法)

    为什么不是那么容易解释。
  • 请记住,所有MIP求解器都是基于启发式的,并且在某些问题上,SCIP将比CPLEX 更快(尽管选择了基础的LP求解器)。

    一些理论的关键字:(MIP的)NP硬度没有免费的午餐定理
  • 更快可能意味着:由于基于MIP的策略而更快,而不是底层LP求解器的速度,因此您甚至可以在子问题上使用CPLEX来获得整体加速!
  • 参数和(内部算法组件的)可访问性而言,两个求解器(MIP求解器)可能也与不同。显而易见,您可以使用比CPLEX(因为它是开源的)更为通用的方式来调整SCIP
  • 正如注释中提到的 mattmilten :SCIP和CPLEX在支持可以解决的问题类别方面也有所不同。这样的一个例子可能是一些special nonlinear-constraints(导致MINLP)的可能性。使用SCIP解决此类问题,仍可以在内部使用CPLEX的LP-solver(与上面的参数相同)
  • 关于scipy - 使用SCIP的CPLEX vs CPLEX的速度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39924316/

    10-13 05:53