洛根·比尔开发了GEKKO包使用 Python 进行 MPC(以及机器学习、优化)渴望 NSF 拨款这可能对您的问题有用。
pip install gekko
这里有一个温度控制实验室教授如何进行建模、估计和控制。您的应用程序的第一步可能是执行系统识别,以获得以下动态关系的时间序列模型:
- 外部温度和内部温度(干扰模型)
- 输入功率和内部温度(控制模型)
下面是一个包含两个加热器和两个温度的 Python 脚本示例:
from gekko import GEKKO
import pandas as pd
import matplotlib.pyplot as plt
# load data and parse into columns
url = 'http://apmonitor.com/do/uploads/Main/tclab_dyn_data2.txt'
data = pd.read_csv(url)
t = data['Time']
u = data[['H1','H2']]
y = data[['T1','T2']]
# generate time-series model
m = GEKKO(remote=False) # remote=True for MacOS
# system identification
na = 2 # output coefficients
nb = 2 # input coefficients
yp,p,K = m.sysid(t,u,y,na,nb,diaglevel=1)
plt.figure()
plt.subplot(2,1,1)
plt.plot(t,u)
plt.legend([r'$u_0$',r'$u_1$'])
plt.ylabel('MVs')
plt.subplot(2,1,2)
plt.plot(t,y)
plt.plot(t,yp)
plt.legend([r'$y_0$',r'$y_1$',r'$z_0$',r'$z_1$'])
plt.ylabel('CVs')
plt.xlabel('Time')
plt.savefig('sysid.png')
plt.show()
您可以替换输入数据u
和输出数据y
确定适合您的应用程序的模型。