0

我有一个 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)
4

1 回答 1

1

想到两件事:

  1. 尝试使用 MIP 强调参数(参见此处)。特别是,尝试价值“4 强调寻找隐藏的可行解决方案”。您也可以尝试提高启发式方法。
  2. 如果您的机器上有多个内核,则默认情况下 CPLEX 将使用所有可用内核来求解模型。您可以尝试并行求解多个模型,而不是将所有计算能力投入到一个模型中,每个模型的线程数都会减少。例如,如果您有 12 个内核,那么您可以使用 12 个模型求解一个模型,也可以并行求解 4 个模型,每个模型使用 3 个线程。根据 CPLEX 对您的实例利用多线程的能力,后一种方法可能更快。
于 2020-06-08T06:52:56.943 回答