4

我无法通过 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 设置所有选项?

任何帮助或克服这一点的方法将不胜感激。谢谢

4

1 回答 1

3

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

Gabe Hackebeil 在Github 问题上回应:

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

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

于 2017-08-23T13:11:01.127 回答