通过pyomo设置ipopt选项

时间:2017-08-22 01:45:04

标签: python-3.x pyomo ipopt

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

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

1 个答案:

答案 0 :(得分: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 _"开头的选项将会   放在临时选项文件中(删除该前缀)。我没有   知道这是否已经成为一个版本。