【问题标题】:Setting ipopt options through pyomo通过 pyomo 设置 ipopt 选项
【发布时间】:2018-01-30 03:45:07
【问题描述】:

我无法通过 pyomo 设置 ipopt 选项。

对于某些选项,可以简单地使用

executable = os.getcwd()+'/Ipopt/Ipopt/build/bin/ipopt.exe'
opt = SolverFactory("ipopt", executable=executable,solver_io='nl')
opt.options['nlp_scaling_method'] = 'user-scaling'

这很好用。如果我尝试为“fixed_variable_treatment”设置选项,即:

opt.options['fixed_variable_treatment'] = 'make_parameter'

我收到以下错误:

ERROR: "[base]\site-packages\pyomo\opt\base\solvers.py", 599, solve
        Solver (asl) returned non-zero return code (1)
ERROR: "[base]\site-packages\pyomo\opt\base\solvers.py", 604, solve
        Solver log:
        Unknown keyword "fixed_variable_treatment"

我假设这是因为您无法通过 python 设置所有选项?

任何帮助或解决此问题的方法将不胜感激。谢谢

【问题讨论】:

    标签: python-3.x pyomo ipopt


    【解决方案1】:

    解决方法是使用https://www.coin-or.org/Ipopt/documentation/node35.html 中所述的ipopt.opt 文件。选项文件放置在调用IPOPT的当前工作目录中。

    Gabe Hackebeil 回复了Github issue

    默认行为是通过命令向 Ipopt 发送选项 行,但并非所有 Ipopt 选项都可以通过命令获得 线。这大概就是其中之一。从历史上看,人们会把这个 工作中名为“ipopt.opt”的选项文件中的一种选项 目录,Ipopt 会自动拾取它。

    最近我在 Pyomo 的 Ipopt 界面中添加了功能,以 为您编写一个选项文件。以“OF_”开头的选项将是 放置在临时选项文件中(删除了该前缀)。我不 知道这是否已经发布。

    【讨论】:

    • 非常感谢您为此创建 Github 问题!我确实认为这会是这样的。将尝试建议的解决方法,看看会发生什么。
    • OF_ 技巧使其发布并且有效。只需使用“OF_fixed_variable_treatment”。
    猜你喜欢
    • 2022-01-08
    • 2020-08-02
    • 2017-02-17
    • 2020-04-09
    • 2019-07-04
    • 2023-03-04
    • 2019-06-23
    • 2016-10-18
    • 2019-09-09
    相关资源
    最近更新 更多