问题描述
因此,这是该问题的后续问题:ARX Models in Gekko。
我想我没有提供足够的细节,我的问题也不是很清楚。 首先,我正在寻找要在MPC中使用它的系统模型,因此为了从我的MPC中获得良好的结果,标识必须是好的。
这是我用于GEKKO系统识别的代码。我使用了大约5个小时的数据,其中冰箱仅由恒温器控制。每5秒就会有来自我的传感器的数据。
具有Sysid()的标识
from gekko import GEKKO
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
#Load data
a_dataframe = pd.read_csv("State.txt")
a_dataframe.columns = ["State"]
u = a_dataframe["State"]
b_dataframe = pd.read_csv("Temp.txt")
b_dataframe.columns = ["Temp"]
T = b_dataframe["Temp"]
t = np.linspace(0,17180,3436)
#Identification
m = GEKKO()
na = 1 # output coefficients
nb = 1 # input coefficients
yp,p,K = m.sysid(t,u,T,na,nb,shift='calc',pred='meas')
#Plots
plt.figure()
plt.subplot(2,1,1)
plt.plot(t,u)
plt.subplot(2,2)
plt.plot(t,T)
plt.plot(t,yp)
plt.xlabel('Time')
plt.show()
我用sysid()获得的结果不好。尽管有这些结果,
我用以下代码模拟了ARX模型。使用从sysid()获得的p字典。
模拟
from gekko import GEKKO
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
na = 1# Number of A coefficients
nb = 1 # Number of B coefficients
ny = 1 # Number of outputs
nu = 1 # Number of inputs
# A (na x ny)
# actual A,B,C values are from 5 h data
A = np.array([[1.00037807]])
# B (ny x (nb x nu))
B= np.array([[[-0.01318095]]])
C = np.array([-0.00162522])
# create parameter dictionary
# parameter dictionary p['a'],p['b'],p['c']
# a (coefficients for a polynomial,na x ny)
# b (coefficients for b polynomial,ny x (nb x nu))
# c (coefficients for output bias,ny)
p = {'a':A,'b':B,'c':C}
m = GEKKO(remote=True)
y,u = m.arx(p)
# load inputs
#tf = 719 # final time
u1 = np.append(np.ones(500),np.zeros(500),0)
u2 = np.append(u1,np.ones(500),0)
u3 = np.append(u2,0)
u4 = np.append(u3,0)
u5 = np.append(u4,np.zeros(936),0)
u[0].value = u5
cv = y[0]
mv= u[0]
cv.value = 14.2
m.time = np.linspace(0,3436)
m.options.imode = 4
m.options.nodes= 2
#m.options.soLVER = 1
# simulate
m.solve()
模拟结果:
温度变化不符合逻辑。最后,冰箱关闭,温度持续下降。而且我的冰箱强度不足以达到-5°C。 我的问题是:
- 我在这里可能做错了什么?我是否使用了足够的数据进行识别?
- 为什么使用线性回归而不是sysid()会得到p的其他系数? (我上一篇文章的代码)
- sysid()是否像线性回归一样进行?
- 为什么通过线性回归可以获得更好的拟合结果,但是在绘制模拟时温度变化不大? (请参阅我上一篇文章中的线性回归模拟图)
预先感谢:)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)