【问题标题】:How to view the final simplex tableau table from CPLEX using PYOMO如何使用 PYOMO 从 CPLEX 查看最终的单纯形表
【发布时间】:2017-11-13 04:53:06
【问题描述】:

我正在使用 PYOMO 以 CPLEX 作为我的求解器来求解线性程序。我想以某种方式访问​​最终的单纯形表,方法是将其输出到日志文件或将其保存到我的工作区中的变量中。以下脚本是我用来解决我的 LP 的。很可能,我可以将一个选项传递给 CPLEX 求解器以保存最终画面,但到目前为止我的搜索没有结果。

self.solver = pyomo.opt.SolverFactory('cplex')
self.results = self.solver.solve(self.m, tee=True, keepfiles=True, options_string='lpmethod=1')

谢谢。

【问题讨论】:

    标签: tableau-api cplex pyomo simplex


    【解决方案1】:

    我不知道有什么方法可以用 Pyomo 做到这一点。我认为第一步是弄清楚如何使用 Cplex 执行此操作,然后在 Pyomo 的 GitHub 页面上添加一个功能请求(或拉取请求),如果它需要与求解器进行任何额外的交互。

    我认为最好的办法是在 Cplex 的 Python API 中寻找方法。这就是 Pyomo 与 Cplex 交互最灵活的地方。任何其他接口(例如 LP 文件、NL 文件)都仅限于 Cplex 通过命令行选项提供的功能。

    【讨论】:

    • 谢谢加布。我花了很多时间研究 CPLEX Python API,并能够使用 PYOMO Suffix 方法提取一些敏感度信息(请参见下面的示例),但无法弄清楚如何提取画面。 self.m.dual = Suffix(direction=Suffix.IMPORT)self.m.lrc = Suffix(direction=Suffix.IMPORT)self.m.urc = Suffix(direction=Suffix.IMPORT)self.m.slack = Suffix(direction=Suffix.IMPORT)self.m.rc = Suffix(direction=Suffix.IMPORT)
    【解决方案2】:

    我最终使用scipy.optimize.linprog 来获得单纯形画面。它适用于我正在测试我的代码的中小型问题,尽管我猜它对于较大问题的效果不如 CPLEX。获取画面的关键是使用一个回调函数,我可以从中提取画面,以及关于 LP 的一些其他信息。

    【讨论】:

      猜你喜欢
      • 2018-06-21
      • 1970-01-01
      • 2017-07-08
      • 2019-11-18
      • 2021-08-07
      • 2012-05-28
      • 1970-01-01
      • 2017-09-18
      • 1970-01-01
      相关资源
      最近更新 更多