4

我正在使用“IMODE=4”进行动态模拟。我想知道 GEKKO 中是否有一个选项可以将“IMODE = 1”的稳态模拟结果设置为动态模拟的初始值。

或者,我是否需要在单独运行动态仿真之前运行稳态仿真并设置值?

4

1 回答 1

2

Gekko 自动使用来自稳态模拟IMODE= 1 (SS) 或 3 (RTO) 的值来给出初始值,例如其他模式的初始条件。它是这样设计的,因此可以在启动动态模式(如模拟、移动水平估计或模型预测控制)之前使用稳态解对模型进行初始化(参见 IMODE 摘要)。

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=55=0+x4=dx/dt+x[5.0, 4.5, 4.25, 4.125, 4.0625][0,1,2,3,4]53

于 2019-11-13T01:18:02.747 回答