【发布时间】:2023-01-13 08:33:48
【问题描述】:
我在 try .. except 构造中运行 m.solve() 以优雅地处理求解器由于最大迭代或收敛到不可行而引发的任何异常,但想询问 APPINFO 和 APPSTATUS 以确定是否找到解决方案。我很惊讶地发现我似乎总是得到 APPINFO=0 和 APPSTATUS=1,即使求解器报告未找到解决方案。
我在解释 APPINFO 和 APPSTATUS 上的文档时遗漏了什么?
重现错误的一段代码。
from gekko import GEKKO
m=GEKKO(remote=False)
m.x=m.Var()
m.y=m.Var()
m.total=m.Intermediate(m.x+m.y)
m.Equation(m.total>20) #if included, no feasible solution exists
m.Equation(m.x<9)
m.Equation(m.y<9)
m.Maximize(m.total)
m.options.SOLVER=3
try:
m.solve()
except Exception as e:
print('Exception',e)
print('APPINFO', m.options.APPINFO)
print('APPSTATUS', m.options.APPSTATUS)
【问题讨论】: