如何加快cplex解决方案池?

时间:2020-06-05 13:44:15

标签: python-3.x cplex docplex

我需要一个MIP模型来生成其解决方案池。生成该池大约需要5分钟,但是我需要针对100k模型进行此池生成,因此我需要使该池至少快8倍地运行,但是不幸的是,我对加速cplex不了解。我可以更改一些设置以使其更快运行吗?是否可以使其在不同CPU上并行运行? 我的泳池设置:

    cpx = mdl.get_cplex()
    cpx.parameters.mip.tolerances.integrality.set(0)
    cpx.parameters.simplex.tolerances.markowitz.set(0.999)
    cpx.parameters.simplex.tolerances.optimality.set(1e-9)
    cpx.parameters.simplex.tolerances.feasibility.set(1e-9)
    cpx.parameters.mip.pool.intensity.set(2)
    cpx.parameters.mip.pool.absgap.set(1e75)
    cpx.parameters.mip.pool.relgap.set(1e75)
    cpx.parameters.mip.limits.populate.set(50)

1 个答案:

答案 0 :(得分:1)

我想到两件事:

  1. 尝试使用MIP强调参数播放(请参阅here)。特别是,尝试值“ 4强调找到隐藏的可行解决方案”。您还可以尝试提高启发式算法。
  2. 如果您的计算机上有多个内核,则默认情况下,CPLEX将使用所有可用的内核来求解模型。您可以尝试并行解决几个模型,每个模型的线程数减少,而不是将所有的计算能力全部投入到单个模型中。例如,如果您有12个核,则可以用12个模型求解一个模型,也可以并行求解4个模型,每个模型使用3个线程。根据CPLEX可以为您的实例充分利用多个线程的程度,后一种方法可能会更快。