Gekko автоматически использует значения из моделирования в установившемся режиме IMODE
= 1 (SS) или 3 (RTO), чтобы задать начальные значения, такие как начальные условия для других режимов. Он разработан таким образом, чтобы модели могли быть инициализированы с помощью решения в установившемся состоянии перед запуском динамических режимов, таких как моделирование, оценка движущегося горизонта или прогнозирующее управление модели (см. сводку IMODE).
Вот минимальный пример сценария, демонстрирующий инициализацию.
from gekko import GEKKO
m = GEKKO()
p = m.Param(5)
x = m.Var(3)
m.Equation(p==x.dt()+x)
# steady-state (SS) simulation
m.options.IMODE=1
m.solve(disp=False)
print(x.value)
# dynamic simulation initialized with SS solution
m.time = [0,1,2,3,4]
p.value = 4
m.options.IMODE=4
m.solve(disp=False)
print(x.value)
По умолчанию установлено значение x=3
. Моделирование установившегося состояния решает с помощью p=5
, чтобы получить x=5
из уравнения установившегося состояния 5=0+x
. Затем динамическое моделирование решает ODE с уравнением 4=dx/dt+x
, чтобы дать решение [5.0, 4.5, 4.25, 4.125, 4.0625]
в запрошенные моменты времени [0,1,2,3,4]
. Обратите внимание, что начальным условием является 5
, а не 3
, потому что динамическое моделирование инициализируется из стационарного решения.
person
John Hedengren
schedule
13.11.2019