Optimization 使用Pyomo MindtPySolver设置MIP和NLP解算器路径
我正在使用pyomo5.6.8,并尝试使用Optimization 使用Pyomo MindtPySolver设置MIP和NLP解算器路径,optimization,pyomo,nonlinear-optimization,Optimization,Pyomo,Nonlinear Optimization,我正在使用pyomo5.6.8,并尝试使用MindtPySolver解决一个非线性优化问题 我在本地计算机上没有问题,只需使用以下参数调用solve方法: SolverFactory('mindtpy').solve(model, mip_solver='cbc', nlp_solver='ipopt') 然而,当我在Azure上使用云计算时,Pyomo无法找到CBC和IPOPT解算器的路径。当需要解决线性问题时,我可以使用以下命令绕过该问题,方法是在使用LP解算器创建SolverFacto
MindtPySolver
解决一个非线性优化问题
我在本地计算机上没有问题,只需使用以下参数调用solve
方法:
SolverFactory('mindtpy').solve(model, mip_solver='cbc', nlp_solver='ipopt')
然而,当我在Azure上使用云计算时,Pyomo无法找到CBC和IPOPT解算器的路径。当需要解决线性问题时,我可以使用以下命令绕过该问题,方法是在使用LP解算器创建SolverFactory
实例时添加executable
参数:
SolverFactory("cbc", executable="/path/to/my/virtual/env/bin/cbc")
在我的非线性规划案例中,MindtpySolver
不接受额外的参数。我查看了文档和源代码,没有找到指定解算器路径的选项,不幸的是,在我的Azure环境中,默认情况下无法识别该路径
我尝试使用源代码中的“solver_args”选项传递选项,如下所示:
SolverFactory('mindtpy').solve(
model,
nlp_solver_args={
"executable": "/path/to/my/virtual/env/bin/ipopt"
},
mip_solver_args={
"executable": "/path/to/my/virtual/env/bin/cbc"
},
mip_solver='cbc', nlp_solver='ipopt',
)
但我仍然收到类似“警告:找不到'ipopt'可执行文件,这是解算器所必需的”这样的错误。我坚持所有解算器(这里是cbc和ipopt)都可以在我的虚拟环境中找到。
有没有一种方法可以使用
MindtPySolver
指定解算器路径?我可能也有同样的问题,我的优化问题是混合整数非线性程序,它必须使用“SolverFactory('mindtpy')。solve(model,mip_solver='glpk',nlp_solver='ipot')”解算器位于Django框架中,带有Apache2 WSGI服务,该服务由WSGIDaemonProcess:Conda Env提供
当通过Web浏览器调用api时。它将出现错误,如找不到“ipopt”解算器。还有“glpk”解算器。SolverFactory只允许我们设置一个可执行文件
顺便说一句,已经找到了如何修复它
在通过Conda install安装ipopt和插件解算器之后
只是深入python包并编辑原始文件
我的路径如下:
找到下面的函数并进行更改 def_默认_可执行文件(自身): 可执行文件=可执行文件('/home/user/miniconda3/envs/py385/bin/glpsol') def_默认_可执行文件(自身): 可执行文件=可执行文件(“/home/user/miniconda3/envs/py385/bin/ipopt”) 您可以通过终端命令中的类型找到插件解算器的位置 “哪个ipopt”,“哪个glpsol”