我在看 here imode=3 等效于稳态模拟(我猜 imode=2),但允许额外的自由度。
我如何决定使用 imode=3 而不是 imode=2?
我正在使用 imode=2 进行优化,其中我定义了求解器计算的变量以满足使用 m.Var 和其他使用 m.Param 的约束。我需要对变量进行哪些更改才能使用 imode=3 ?
最佳答案
尼拉德里,
IMODE 2 适用于具有多个数据点的稳态问题。
下面是一个例子:
from gekko import GEKKO
import numpy as np
xm = np.array([0,1,2,3,4,5])
ym = np.array([0.1,0.2,0.3,0.5,1.0,0.9])
m = GEKKO()
m.x = m.Param(value=np.linspace(-1,6))
m.y = m.Var()
m.options.IMODE=2
m.cspline(m.x,m.y,xm,ym)
m.solve(disp=False)
这是具有多个数据点的三次样条近似。当您切换到 IMODE 3 时,它非常相似,但它只考虑您模型的一个实例。所有值属性都应该只有 1 个值,例如当您优化三次样条以找到最大值时。
p = GEKKO()
p.x = p.Var(value=1,lb=0,ub=5)
p.y = p.Var()
p.cspline(p.x,p.y,xm,ym)
p.Obj(-p.y)
p.solve(disp=False)
以下是有关 IMODE 的其他信息:
此致,
约翰·赫登伦
关于python-3.x - Gekko优化问题中IMODE的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55895002/