首页 > 解决方案 > GEKKO 模式 4 和 7 的结果不一致

问题描述

解决2个节点的问题。

给定问题

    m = GEKKO()
    m.time = np.linspace(0, 5, 2)
    x = m.Var(1)
    m.Equation(x.dt() == 1)

如果使用 MODE 7 求解

    m.options.IMODE = 7
    m.options.SOLVER = 2
    m.solve(disp=False)

    x = [1.0, 1.0]

如果用 MODE 4 求解

    m.options.IMODE = 4
    m.options.SOLVER = 2
    m.solve(disp=False)
    
    x = [1.0, 6.0]

标签: gekko

解决方案


当只有 1 个时间步长时,Gekko 报告解决方案的方式似乎存在错误IMODE=7。切换到两个时间步可以为 和 提供一致且正确的解决IMODE=7方案IMODE=4

from gekko import GEKKO
import numpy as np
m = GEKKO()
m.time = np.linspace(0, 5, 3)
x = m.Var(1)
m.Equation(x.dt() == 1)
m.options.IMODE = 7
m.options.SOLVER = 2
m.solve(disp=False)
print(x.value)

IMODE=4解也[1.0, 3.5, 6.0]


推荐阅读