在Pyomo中更改Bonmin选项(IPOPT线性求解器)

时间:2020-04-20 01:39:01

标签: pyomo hsl ipopt

我正在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文档)。

否则,甚至不接受语法。

您有什么建议吗?

1 个答案:

答案 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