【问题标题】:How to set the algorithm to barrier when use CPLEX in PuLP在 PuLP 中使用 CPLEX 时如何将算法设置为屏障
【发布时间】:2016-07-20 16:16:21
【问题描述】:

我使用 'prob.solve(CPLEX())' 在 PuLP 中调用 CPLEX。

但是,我想知道如何在这里使用障碍算法来获得更非零的解决方案。

谢谢。

【问题讨论】:

    标签: python cplex pulp


    【解决方案1】:

    我不是纸浆专家,但看起来这是可能的(不过,我不确定它的可靠性如何)。这里有一个hint,介绍了如何使用 CPLEX DLL 共享库设置 CPLEX 参数。我相信这已经过时了,但这是该线程中相应的 sn-p:

    >>>> solver = CPLEX_DLL()
    >>>> CplexDll.CPXsetintparam(solver.env, CPX_PARAM_MIPDISPLAY, 4)
    Good point I would prefer
     >>> solver.CPXsetintparam(CPX_PARAM_MIPDISPLAY, 4)
    As this only requires Knowledge of CPLEX parameters and not Pulp internals
    

    但是,在最新版本的 PuLP(1.6.1 版)中,CPLEX_DLL 类似乎具有 setLpAlgorithm 方法以使其更方便。这是一个例子,只是为了给你一个要点:

    >>> from pulp import *
    >>> cplex_dll_path
    '<path_on_your_machine>/libcplex1263.so'
    >>> solver = CPLEX()
    >>> solver.setLpAlgorithm(4)
    

    &lt;path_on_your_machine&gt;/libcplex1263.so 必须在pulp.cfg.(linux|osx|win) 文件中配置(在安装纸浆模块的目录中)。 solver.setLpAlgorithm(4) 中的幻数“4”对应于CPX_ALG_BARRIER(参见here)。

    话虽如此,如果您想更好地控制 CPLEX,直接使用 CPLEX Python API 可能会更好(尽管它是比 PuLP 更低级别的 API)。或者,查看更高级别的 docplex 包,它也允许您在云上解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 1970-01-01
      相关资源
      最近更新 更多