gekko - 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]
解决方案
当只有 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]
。
推荐阅读
- bash - 错误 R14(超出内存配额)和错误 R10(启动超时)-> Web 进程未能在启动后 60 秒内绑定到 $PORT
- javascript - 添加新元素时添加功能按钮
- java - 当 JOIN FETCH 与主 ID 以外的参考列一起使用时,休眠执行多个查询
- reactjs - reactjs 和 d3v4 npm install 无法识别常用功能?
- javascript - Discord.js我如何检查所有公会成员的ID?
- javascript - Django Fullcalendar 不渲染
- unity3d - 协程统一 - 不可预知的行为
- sql - 带外键的活动记录查询
- javascript - 如何在 Playwright 中使用已安装的 chrome 版本?
- r - 将邮政编码与贫困指数相匹配