pyomo 列出可用的求解器

Posted

技术标签:

【中文标题】pyomo 列出可用的求解器【英文标题】:pyomo list available solvers 【发布时间】:2018-12-24 13:07:30 【问题描述】:

要在 pyomo 中实例化求解器,通常使用求解器工厂:

from pyomo.opt import SolverFactory
opt = SolverFactory('glpk')

有没有办法知道 SolverFactory 接受哪些字符串? 解决方案如下所示:

print(SolverFactory.list_detected_solvers())

【问题讨论】:

【参考方案1】:

Pyomo 没有随任何求解器一起分发,而是为求解器提供了各种按需调用的接口。因此,没有求解器的主列表。

您可以使用终端命令pyomo help -s 获得与所需行为近似的东西。您还可以查看SolverFactory('glpk').available() == True 了解各种求解器。

AMPL 和 GAMS 都在其网站上提供求解器列表。由于 Pyomo 能够与任一问题格式交互,因此您也可以将其用作参考。请记住,仍然需要在您的系统上安装相关的求解器。

【讨论】:

【参考方案2】:

根据Qi Chen的回复,我想出了这个蛮力解决方案:

import pyomo.environ as pyo
from itertools import compress

pyomo_solvers_list = pyo.SolverFactory.__dict__['_cls'].keys()
solvers_filter = []
for s in pyomo_solvers_list:
    try:
        solvers_filter.append(pyo.SolverFactory(s).available())
    except (ApplicationError, NameError, ImportError) as e:
        solvers_filter.append(False)
pyomo_solvers_list = list(compress(pyomo_solvers_list,solvers_filter))

【讨论】:

以上是关于pyomo 列出可用的求解器的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Pyomo 指定 GAMS 求解器特定的选项?

在 ubuntu 中安装 Ipopt 求解器以与 Pyomo 一起使用

如何在 pyomo 中使用/选择/安装混合整数非线性求解器

在 Intel Mac OS X 上使用带有 Pyomo 的 PATH AMPL 求解器

皮莫 | Couenne 求解器 |将索引变量域限制为两个整数值

Pyomo:从 Python 代码访问解决方案