pyomo 列出可用的求解器

问题描述 投票:0回答:4

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

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

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

print(SolverFactory.list_detected_solvers())
python-3.x optimization pyomo
4个回答
6
投票

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

您可以使用终端命令

pyomo help -s
获得近似于所需行为的内容。您还可以检查
SolverFactory('glpk').available() == True
的各种求解器。

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


3
投票

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


0
投票

已经被创作者解决了! https://or.stackexchange.com/questions/7145/how-to-install-ipopt-on-google-colab-for-pyomo

!pip install pyomo 
from pyomo.environ import *
import matplotlib.pyplot as plt
!wget -N -q "https://ampl.com/dl/open/ipopt/ipopt-linux64.zip"
!unzip -o -q ipopt-linux64

在建模代码中:

opt=SolverFactory('ipopt', executable='/content/ipopt')

0
投票

这让我发疯,无论我做什么都无法让这个 ipopt 工作......看到这篇文章并认为也许这可以工作,但它没有......此时我想要任何求解器可以更好地使用连续值而不是整数来进行 NLP。

我尝试了上面的选项:

!pip install pyomo 
from pyomo.environ import *
import matplotlib.pyplot as plt
!wget -N -q "https://ampl.com/dl/open/ipopt/ipopt-linux64.zip"
!unzip -o -q ipopt-linux64

我收到一条错误消息,内容如下:

[iopt-linux64.zip] 未找到中央目录结尾签名。要么这个文件不是 一个 zip 文件,或者它构成多部分存档的一个磁盘。在里面 后一种情况可以在以下位置找到中央目录和 zipfile 注释 该存档的最后一个磁盘。 unzip: 在 ipopt-linux64 或之一中找不到 zipfile 目录 ipopt-linux64.zip,并且找不到 ipopt-linux64.ZIP,期间。

© www.soinside.com 2019 - 2024. All rights reserved.