在GEKKO中设置带有稳态结果的动态仿真的初始值

时间:2019-11-11 20:07:50

标签: python gekko

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

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

1 个答案:

答案 0 :(得分:4)

Gekko自动使用IMODE = 1(SS)或3(RTO)的稳态模拟中的值来给出初始值,例如其他模式的初始条件。通过这种方式设计,可以在启动动态模式(例如仿真,移动视域估计或模型预测控制(see IMODE summary)之类的动态模式之前,使用稳态解初始化模型。

IMODE options

这是演示初始化的最小示例脚本。

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。然后,动态仿真用方程4=dx/dt+x求解ODE,以在请求的[5.0, 4.5, 4.25, 4.125, 4.0625]时间点给出解[0,1,2,3,4]。请注意,初始条件是5,而不是3,因为动态仿真是从稳态解中初始化的。