【问题标题】:Changing Bonmin options (IPOPT linear solver) within Pyomo在 Pyomo 中更改 Bonmin 选项(IPOPT 线性求解器)
【发布时间】:2020-08-02 10:48:03
【问题描述】:

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

否则,语法甚至不被接受。

你有什么建议吗?

【问题讨论】:

    标签: pyomo hsl ipopt


    【解决方案1】:

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

    【讨论】:

    • 谢谢,这是我可以让代码与 ma27 一起运行的尽可能接近 - 但现在我收到如下警告。然后它继续使用 MUMPS 作为线性求解器而不是 MA27。警告:尝试将选项“linear_solver”设置为值“ma27”,但之前的值设置为禁止破坏。设置将保持为:“linear_solver ma27”。
    猜你喜欢
    • 2023-01-18
    • 2022-01-08
    • 2019-12-16
    • 2018-01-30
    • 2019-10-13
    • 2018-02-24
    • 1970-01-01
    • 2021-03-02
    • 2019-07-25
    相关资源
    最近更新 更多