pyomo列出可用的求解器

时间:2018-07-16 22:52:46

标签: python-3.x optimization pyomo

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

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

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

print(SolverFactory.list_detected_solvers())

2 个答案:

答案 0 :(得分:2)

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

使用终端命令<console>:2: error: not a legal formal parameter. Note: Tuples cannot be directly destructured in method or function parameters. Either create a single parameter accepting the Tuple1, or consider a pattern matching anonymous function: `{ case (param1, param1) => ... } val pc610 :IndexedSeq[Point[_3D]] =(0 until 100).map(pc610(i) => faceModel.sample.point(PointId(610))) 可以获得与所需行为近似的内容。您还可以检查pyomo help -s中的各种求解器。

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

答案 1 :(得分:1)

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