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 引發(fā)求解器異常時,不會更新參數。請嘗試以下操作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,以便遠程解決方案也將繞過引發(fā)的異常并使用APPINFO信息完成對選項文件的處理。本地運行時APPINFO信息在run目錄下,用in讀入。options.jsonload_JSONgk_post_solve.py
添加回答
舉報