我正在尝试获得与gekko的最佳时间间隔(在下面的示例中是10) from gekko import GEKKO
from random import random
n = 100000
arr = [random() for i in range(n)]
df = pd.DataFrame({"w1" : arr, 'w2' : arr}, \
index=pd.date_range(start='1/1/2018', periods=n, freq='T'))
df.w2 = df.w2.shift(10)
我有一个非线性系统,它有二次输入(操纵变量,MV)。为了使用GEKKO对该系统进行MPC模拟,我定义了以下函数来处理二次输入: def NTVin(T, u):
n = T.shape[0]
Tntv = zeros(n)
u2 = zeros_like(u, dtype = float64)
for i in range(len(u2)):
u2[i] = copy(u[i].VALUE)
for i in range(n):
Tntv[i] = dot(dot(u2, T[i,:,:]), u2)
retu
用Python中的IPOPT成功地解决了一个具有平方目标的优化问题。
from gekko import GEKKO
import numpy as np
m = GEKKO()
x = m.Var(); y = m.Param(3.2)
m.Obj((x-y)**2)
m.solve()
print(x.value[0],y.value[0])
但是,当我切换到绝对值目标np.abs(x-y) (abs的numpy版本)或m.abs(x-y) (abs的Gekko版本)时,IPOPT解决程序报告了一个失败的解决方案。绝对值近似m.sqrt((x-y)**2)也失败了。
失败解决方案
from
我想在GEKKO数组的每个元素上应用GEKKO的max3函数。例如:
from gekko import GEKKO
m = GEKKO()
a = m.Array(m.Var, dim = (5,))
b = m.Array(m.Var, dim = (5,))
我想比较a的每个元素和b,得到一个5维的GEKKO向量。所以,我实施
c = m.max3(a, b)
print(c)
print(c.value)
结果是一个大小为1的GEKKO变量,其值为0。有没有一种不用for循环就能得到5维GEKKO矢量的方法?
谢谢。
我目前正在为一个大学项目做一个蒸馏器的模型,这个数学问题是由DAE系统描述的,我正试图用GEKKO来解决这个问题。
我在列表处理方面面临一个问题:在这个例子中,我构建了一个函数,它输出混合物的压缩性因子,它需要输入3个gekko变量T1,x,y (x,y数组) zv1 = m.Param(value=ZCALC(n,comps,R0,p,T1.value,x,y))
m = GEKKO()
y = m.Array(m.Var,n,value=0.)
x = m.Array(m.Var,n,value=0.)
for i in range(n):
y[i].value = y0[i]
我试图用GEKKO来适应特定的数据集,使用FOPDT优化方法来估计k,τ和θ。
我在上看到了使用odeint的例子,并试图对GEKKO做同样的事情,但是我不能使用方程中θ的值。
我看到了这个问题,和docs ,但是在这个例子中,我想估计θ的值,而不是使用最初的猜测值。我试着使用gekko的延迟,但是我得到一个错误,只有延迟是int值(而不是gekko FV)才能工作。我也尝试在方程中直接使用时间,但是我不知道如何把x(Theta)放在里面,因为我不能用gekko变量来做语法。
import pandas as pd
import numpy as np
from gekko import GE
我是一个初学者,有一个问题,现在真的开始行动了。
代码如下:
n=3 #time step
#f, v and r are arrays,eg [3,4,5]
#r,v,f all have initial array which is when n=0
def force():
r=position()
f=r*2
return f
def position(n):
v=velocity(n)
for i in range(n): #This part may wrong...
r=v*i #How
我试图用GEKKO来解决一个非线性优化问题。我知道我可以把我自己的函数传递给中间函数或目标函数,但是由于我的中间函数是分段函数,所以我需要if-语句。
例如:
从我测试的结果来看,这是可行的。
def calc_weighted_average(values, characteristic):
# values are the model's variables that are changed by GEKKO.
# characteristic are always the same (they are a constant list I've defined).
我正在尝试求解Gekko中的DAE,其中一些组件依赖于卷积的解。
这需要一个恒定的dt,但我确信这是在选项中的某个位置。因此,我想要做的是使用一个函数来记录数组中状态变量的当前值,并返回到该值的总和。下面是我尝试使用一个简单的ODE示例:
import numpy as np
from gekko import GEKKO
import matplotlib.pyplot as plt
m = GEKKO()
class adder:
def __init__(self,):
self.i=m.Array(m.Param, 10)
s
通过,我能够在Gekko中建立一个动态参数估计。
下面是代码,其测量值如下(文件在我的系统中名为MeasuredAlgebrProductionRate_30min_18h.csv,并使用;作为分隔符):
import numpy as np
import matplotlib.pyplot as plt
from gekko import GEKKO
#%% Read measurement data from CSV file
t_x_q_obs = np.genfromtxt('MeasuredAlgebrProductionRate_30min_18h.csv', d