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

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

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

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

print(SolverFactory.list_detected_solvers())

【问题讨论】:

    标签: python-3.x optimization pyomo


    【解决方案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))
      
      

      【讨论】:

        猜你喜欢
        • 2018-09-07
        • 1970-01-01
        • 1970-01-01
        • 2021-09-23
        • 2019-06-13
        • 2022-07-09
        • 1970-01-01
        • 1970-01-01
        • 2018-03-17
        相关资源
        最近更新 更多