我无法通过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设置所有选项?
任何帮助或方法来克服这一点将不胜感激。感谢
答案 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 _"开头的选项将会 放在临时选项文件中(删除该前缀)。我没有 知道这是否已经成为一个版本。