Ниладри,
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:
С уважением,
Джон Хеденгрен