gekko中数组变量的求和



我试过这段代码,但似乎出了问题。正常打印(z.value(必须返回一个数字,但在我的情况下,它返回一个数组。有人能帮忙吗

from gekko import GEKKO
import numpy as np
import matplotlib.pyplot as plt
xm = np.array([0,1,2,3,4,5])
ym = np.array([0.1,0.2,0.3,0.5,0.8,2.0])
m = GEKKO()
x = m.Param(value=xm)
a = m.FV()
a.STATUS=1
y = m.CV(value=ym)
y.FSTATUS=1
z = None
m.Equation(y==0.1*m.exp(a*x))
z = m.Intermediate(sum([y[i] for i in range(len(y))]))

m.options.IMODE = 2
m.solve(disp=False)
print(z.value)
print(y.value)

使用z=m.vsum(y)创建具有IMODE=2的数据集变量的总和。

from gekko import GEKKO
import numpy as np
import matplotlib.pyplot as plt
xm = np.array([0,1,2,3,4,5])
ym = np.array([0.1,0.2,0.3,0.5,0.8,2.0])
m = GEKKO()
x = m.Param(value=xm)
a = m.FV()
a.STATUS=1
y = m.CV(value=ym)
y.FSTATUS=1
m.Equation(y==0.1*m.exp(a*x))
z = m.vsum(y)
m.options.IMODE = 2
m.solve(disp=False)
print(z.value)
print(y.value)

定义z的方法将创建初始值ym的总和。在Gekko中定义模型时,重要的是要意识到每个数据集只定义一次模型。然后,Gekko获取模型,并对每个数据集进行求解。当在多个时间点上求解时,这也是相同的方法。即使为z报告了多个值,也只有一个唯一值(4.3146(。

最新更新