pyomo 列出可用的求解器

pyomo list available solvers

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

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

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

print(SolverFactory.list_detected_solvers())

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

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

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

根据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))