python - 在 GEKKO 中设置动态模拟的初始值和稳态结果

标签 python gekko

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

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

最佳答案

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

关于python - 在 GEKKO 中设置动态模拟的初始值和稳态结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58808013/

相关文章:

python不会将日期字符串转换为日期时间

python - 对 Gekko 整数变量进行平方时的错误解决方案

python - 在 Python 中使用 Gekko 求解函数

python - Pandas 切片列的每个行项目

python - 使用 Clock.schedule_interval 每秒更新显示的变量

python - lpsolve - 每次更改约束顺序时结果都会不同

numpy - 如何在 GEKKO 中间体中使用 np.log 或 np.exp

python - 调试 Apache/Django/WSGI 错误请求 (400) 错误

python - 子进程: "Exec format error" in gekko package

gekko - 当我使用较少的 nlp 迭代时,APOPT 正在为 MINLP 问题找到更好的局部最小值。我期待相反的结果,我错过了什么?