我正在使用“ IMODE = 4”进行动态仿真。我想知道GEKKO中是否可以选择将“ IMODE = 1”设置为动态仿真的初始值的稳态仿真结果。
或者,在分别运行动态仿真之前,是否需要运行稳态仿真并设置值?
答案 0 :(得分:4)
Gekko自动使用IMODE
= 1(SS)或3(RTO)的稳态模拟中的值来给出初始值,例如其他模式的初始条件。通过这种方式设计,可以在启动动态模式(例如仿真,移动视域估计或模型预测控制(see IMODE summary)之类的动态模式之前,使用稳态解初始化模型。
这是演示初始化的最小示例脚本。
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
,因为动态仿真是从稳态解中初始化的。