Вы можете получить доступ к решению, установив debug=0
при вызове solve
:
m.solve(debug=0)
По умолчанию debug=1
выдает исключение при возникновении ошибки, например, при достижении максимального числа итераций. Вот пример, который обычно решается за 5 итераций. При m.options.max_iter=4
он достигает максимальных итераций до достижения успешного решения.
from gekko import GEKKO
m = GEKKO(remote=False) # create GEKKO model
x = m.Var(value=0) # define new variable, initial value=0
y = m.Var(value=1) # define new variable, initial value=1
m.Equations([x + 2*y==0, x**2+y**2==1]) # equations
m.options.MAX_ITER=4
m.solve(debug=0) # solve
print([x.value[0],y.value[0]]) # print solution
При debug=0
возвращается неверный ответ на итерации 4, когда решатель почти завершил решение.
[-0.89473125735, 0.44736562868]
Я рекомендую эту статью, если вам нужны предложения по инициализации вашей проблемы, чтобы помочь вам найти успешное решение:
- Safdarnejad, SM, Hedengren, JD, Lewis, NR, Haseltine, E ., Стратегии инициализации для оптимизации систем Dynami c , Компьютеры и химическое машиностроение, 2015, том. 78, стр. 39-50, DOI: 10.1016 / j.compchemeng.2015.04.016.