我正在使用“IMODE=4”进行动态模拟。我想知道 GEKKO 中是否有一个选项可以将“IMODE = 1”的稳态模拟结果设置为动态模拟的初始值。
或者,我是否需要在单独运行动态仿真之前运行稳态仿真并设置值?
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
给出。然后,动态仿真使用方程求解 ODE,以在请求的时间点给出解。请注意,初始条件是,而不是,因为动态模拟是从稳态解初始化的。x=5
5=0+x
4=dx/dt+x
[5.0, 4.5, 4.25, 4.125, 4.0625]
[0,1,2,3,4]
5
3