我正在Windows机器上通过Pyomo / Python使用Bonmin。 Bonmin正在通过二进制文件以及HSL求解器使用。 我可以成功更改Bonmin的默认求解器,但是IPOPT仍使用MUMPS作为线性求解器。
我尝试在文件夹中包含bonmin.opt文件(Bonmin的可执行文件或.py文件),但Pyomo无法解释该文件。
要将线性求解器分配给Bonmin,我使用下面的命令行:
solver.options ['linear_solver'] ='ma27'
为在Bonmin中将线性求解器分配给IPOPT,我尝试了许多不同的命令,但找不到任何有效的命令。示例包括:
solver.options ['ipopt.linear_solver'] ='ma27'
solver.options ['ipopt_linear_solver'] ='ma27'
以及许多其他不同的语法。我搜索了Bonmin和IPOPT的所有手册,但是如果接受语法,我仍然会收到相同的警告:
注意:默认情况下,您将Ipopt与MUMPS线性求解器一起使用。其他线性求解器可能更有效(请参阅Ipopt文档)。
否则,甚至不接受语法。
您有什么建议吗?
答案 0 :(得分:0)
根据BONMIN文档here,如果要设置Ipopt的选项(在BONMIN中使用),则必须在文件bonmin.opt中进行设置。
像这样的事情,跳
import pyomo.opt
with pyomo.opt.SolverFactory("bonmin") as solver:
solver.options.option_file_name = "bonmin.opt"
with open("bonmin.opt", "w") as f:
# f.write() # Here you can specify options for BONMIN using the "bonmin." prefix
f.write("linear_solver ma27\n") # This is the IPOPT option
solver.solve(model)
有关IPOPT期权文件的更多信息,请参见here。