简体   繁体   English

壁虎中数组变量的总和

[英]Summation of array variable in gekko

I tried this code but it seems that something is wrong.我尝试了这段代码,但似乎有问题。 Normaly print (z.value) must return a single number but in my case it returns an array.通常 print (z.value) 必须返回一个数字,但在我的情况下它返回一个数组。 could someone help please有人可以帮忙吗

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)

Use z=m.vsum(y) to create a summation of the variable across the data sets with IMODE=2 .使用z=m.vsum(y)在 IMODE 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)

Your method to define z creates a summation of the initial values ym .您定义z的方法会创建初始值ym的总和。 When defining a model in Gekko, it is important to realize that the model is defined once for each data set.在 Gekko 中定义 model 时,重要的是要意识到 model 为每个数据集定义一次。 Gekko then takes the model and solves it for each data set.然后 Gekko 采用 model 并为每个数据集求解。 This is also the same approach when solving over multiple time points.在解决多个时间点时,这也是相同的方法。 Even though multiple values are reported for z , there is only one unique value ( 4.3146 ).即使报告了多个z值,也只有一个唯一值 ( 4.3146 )。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM