使用Cplex回调加速LP程序

时间:2019-02-11 15:17:22

标签: cplex

我有一个Cplex程序,正在其中寻找最佳解决方案。不幸的是我的Cplex工作太慢。 在运行Cplex之前,我可以使用一些启发式方法以获得相对较好的解决方案。

问题: 我如何使用这些知识(即知道一个好的解决方案)来按程序加速?

解决方案尝试: 我正在尝试使用Cplex.start.set_start(来自CPLEX Python API)。但是,我不知道如何引入变量。

例如,除其他变量外,我还有:x1p3 = 0和x7p2 = 1。

我在如下情况下查看了set_start定义:set_start(self,col_status,row_status,col_primal,row_primal,col_dual,row_dual),但这并不能帮助我理解问题。

1 个答案:

答案 0 :(得分:1)

在开始求解模型之前,您可以做一些事情。但是,无需使用CPLEX回调。

  1. 您可以使用预处理算法来修复模型中的变量

    • 有两种预处理算法:精确启发式。确切的预处理当然不会影响您的最佳解决方案;另一方面,启发式预处理可能会削减您的最佳解决方案。
  2. 使用启发式方法为您的问题计算良好的界限。

    • 同样,您有两种边界类型: primary 边界和 dual 边界。这样的边界可以用来加速分支定界算法,因为它会引起分支树的某些削减
    • 如果使用原始启发式,则可以使用其解决方案为CPLEX提供所谓的 warm start 。这是与通常的解决方案不同的初始解决方案,它也可以加快模型的解析速度。