1 回答
TA贡献2011条经验 获得超2个赞
处理求解器错误的一种方法是将求解命令包装在try,except语句中。APPINFO输出可以为您提供有关遇到什么类型的错误的指导,并让您对“不可行的解决方案”、“解决到可接受的水平”或其他 IPOPT 错误代码做出不同的响应。
try:
m.solve(disp=True)
except:
print('Solver error, looking at APPINFO')
if m.options.APPINFO==1:
print('APPINFO=1')
elif m.options.APPINFO==2:
print('APPINFO=2')
另一种选择是尝试不同的求解器,例如 APOT 或 BPOPT。
m.options.SOLVER = 1
编辑:APPINFO Gekko 引发求解器异常时,不会更新参数。请尝试以下操作debug=0:
m.solve(disp=True,debug=0)
if m.options.APPINFO!=0:
print('Solver error, looking at APPINFO')
if m.options.APPINFO==1:
print('APPINFO=1')
elif m.options.APPINFO==2:
print('APPINFO=2')
我刚刚更新了 Gekko,以便远程解决方案也将绕过引发的异常并使用APPINFO信息完成对选项文件的处理。本地运行时APPINFO信息在run目录下,用in读入。options.jsonload_JSONgk_post_solve.py
添加回答
举报
