我一直在尝试让 ipopt 在 pyomo 上工作。我已经使用 Anaconda Navigator 下载了 pyomo(版本 5.7.3)和 ipopt,并且使用 Spyder 来编辑和运行我的
.py
代码。我一直在使用 pyomo 教程中的以下代码来了解 ipopt 是否已成功安装并工作。
import pyomo.environ as pyo
from pyomo.opt import SolverFactory
model = pyo.ConcreteModel()
model.nVars = pyo.Param(initialize=4)
model.N = pyo.RangeSet(model.nVars)
model.x = pyo.Var(model.N, within=pyo.Binary)
model.obj = pyo.Objective(expr=pyo.summation(model.x))
model.cuts = pyo.ConstraintList()
opt = SolverFactory('ipopt')
opt.solve(model)
# Iterate, adding a cut to exclude the previously found solution
for i in range(5):
expr = 0
for j in model.x:
if pyo.value(model.x[j]) < 0.5:
expr += model.x[j]
else:
expr += (1 - model.x[j])
model.cuts.add( expr >= 1 )
results = opt.solve(model)
print ("\n===== iteration",i)
model.display()
当我设置
opt = SolverFactory('ipopt')
并运行代码时,它会给出以下警告:
WARNING: Could not locate the 'ipopt' executable, which is required for solver ipopt
我第一次尝试自己解决这个问题是从下面的链接手动下载
ipopt
可执行文件(ipopt 3.11.1-win64):
https://www.coin-or.org/download/binary/Ipopt/
之后,我提取了文件并将它们放入
pyomo
解算器位置:
C:\Anaconda\envs\myenv\Lib\site-packages\pyomo\solvers\plugins\solvers
这不起作用,所以我还尝试使用以下代码指定
ipopt
可执行文件的路径:
opt = pyo.SolverFactory("ipopt", executable="C:\Anaconda\envs\myenv\Lib\site-packages\pyomo\solvers\plugins\solvers\ipopt\bin\ipopt.exe")
但是,这样做会给我以下警告:
WARNING: Failed to create solver with name 'ipopt': Failed to set executable
for solver ipopt. File with name=C:\Anaconda\envs\myenv\Lib\site-packages\
pyomo\solvers\plugins\solvers\ipopin\ipopt.exe
either does not exist or it is not executable. To skip this validation,
call set_executable with validate=False.
提醒
ipopin\ipopt.exe
部分不是拼写错误。我不知道为什么会这样。我还尝试将可执行文件复制粘贴到 bin
文件夹之外,并将其放入 ipopt
文件夹中:
opt = pyo.SolverFactory("ipopt", executable="C:\Anaconda\envs\myenv\Lib\site-packages\pyomo\solvers\plugins\solvers\ipopt\ipopt.exe")
不幸的是我最终还是得到了
WARNING. Could not locate the 'ipopt' executable, which is required for solver ipopt
。
我还尝试从下面的链接下载
ipopt
可执行文件,但 ipopt.exe
被我的病毒扫描程序消除,因为它认为下载的文件是威胁:
https://projects.coin-or.org/CoinBinary/browser/binary/Ipopt/Ipopt-3.13.2-win64-msvs2019-md.zip?rev=1072
在这种情况下我可以尝试其他方法让 IPOPT 发挥作用吗?
如果你从 anaconda 运行你的 jupyter 笔记本,那么你应该能够在 anaconda 的安装列表中看到你的求解器
尝试回答这个问题:安装 IPOPT 求解器以在 Windows 中与 pyomo 一起使用 您可以从以下位置手动下载可执行文件:https://www.coin-or.org/download/binary/Ipopt/并将其添加到:C:\ProgramData\Anaconda3\Library 或您的环境中。