实验水箱机理建模-最小二乘辨识参数说明书
一、实验要求
1. 单容水箱(2#水箱)的液位过程的建模:采用系统辨识方法,基于实
验数据建立离散时间非线性动态模型。输入变量为入口流量,输出变量为液
位。给定的数据集采样周期为 60 秒,自己可以划分为训练集和测试集。
2. 完成机理模型(机理模型参数如出口阀(2#泄水阀)流量系数假设未
知,需要基于数据学习估计)的仿真实验研究
二、数学模型建立
目前,数学模型的建立方法有两种。一是根据过程的内在机理,通过静态与
动态物料平衡和能量关系,用数学分析的方法求取过程的数学模型,称为机理建
模;二是根据过程输入、输出数据,即通过过程辨识与参数估计的方法建立被控
过程的数学模型,称为实验建模。
2.1 机理建模
图 2.1 单容水箱(2#)液位机理建模原理图
图 2.1 是多功能过程控制平台的单容水箱系统液位机理建模原理图,首先
给水泵电机一个固定的电压PWM信号P,根据流量实验可知经过短暂时间后水泵
可以给单容水箱提供一个固定的流量1;水箱的流出量为2,可以通过改变泄
水阀的开度改变2的大小。液位 h的变化反映了1与2大小不等而引起水箱蓄
水或泄水的过程。若将水箱输入流量信号1作为被控过程的输入变量,h为其输
表 2.1 机理建模所涉及到的符号含义
符号
ℎ
1
2
含义
水箱的横截面积
水箱的液位
水箱流入量
水箱流出量
泄水阀流量系数
模型如下:
根据物料平衡关系有
横截面积A表达如下:
泄水阀处的体积流量 q 为关于液位的非线性函数:
液位机理模型使用欧拉法进行离散化如下:
其中,泄水阀流量系数μ为未知量,可通过数据学习得到。将所示单容水箱
其中h0为水箱底部到流量传感器的距离,其中μ为出口阀流量系数。得水箱液位h
出变量,则该被控过程的机理模型即为 h 与1之间的数学表达式。
1−2=ℎ
=π2
=2= ℎ
与进水阀体积流量之间的微分方程形式机理模型为:
ℎ=− ℎ +
ℎ+1 −ℎ = ℎ()
+q()
其中,为采样时间,为采样时刻。
实验所用水箱系统中,水箱参数:=0.075m ,=0.017672 .
0.01767+ ()
ℎ(+1)=ℎ()− ℎ()
0.01767
实验所取数据采样时间=1min,通过从实际水箱控制系统获得的40组液
位和进水阀体积流量数据,使用最小二乘法对泄水阀流量系数进行辨识,辨识
0.01767=− ℎ()
ℎ(+1)−ℎ()− ()
0.01767
辨识得:=−1.153×10−5。
ℎ(+1)=ℎ()+1.153×10−5 ℎ()
+ ()
0.01767
0.01767
因此该实际水箱的液位模型为:
使用实际水箱模型的另外 40 组无关数据,对上式所示模型进行测试,结果
如下。
采用如下所示的性能评价指标均方根误差(RMSE)和平均绝对百分比误差
图 3.2 机理模型测试
(MAPE)对上图所示模型测试结果进行评价
= 1=1
[()−()]2
|()−()
=1 =1
×100%
|
()
求得=0.0011,=0.0057。
附录 1:机理建模源程序
%% 最小二乘辨识流量系数 %%
%清除变量空间;关闭所有窗口
clear all;close all;clc;
%读取、处理数据
data=xlsread('水箱数据.xlsx'); %80 组数据(80*2)
IN=data(:,1); %data 的第一列数据
OUT=data(:,2); %data 的第二列数据
%创建相关数组
L=40; %取 40 组辨识,剩下 40 组测试
phi=zeros(L,1);
Y=zeros(L,1);
Y_test=zeros(L,1);
Y_real=zeros(L,1);
A=0.01767; %水箱横截面积
h=OUT./100; %所有数据除以 100 换算单位:cm->m
Q=IN.*10^-5; %流量单位换算:L/min -> 立方米/分
% 要辨识的参数θ(theta);公式:Y=φ*θ(Y=phi*theta)
for k=1:L
phi(k,1)=-sqrt(h(k))/A;
Y(k)=h(k+1)-h(k)-Q(k)/A;
end
% 关键公式:得到辨识参数
theta=inv(phi'*phi)*phi'*Y
%% 辨识模型验证
for k=1:L
Y_test(k)=h(L+k-1) - theta*sqrt(h(L+k-1))/A + Q(L+k-1)/A; %一步预测值
Y_real(k)=h(L+k); %真实值
%% 画图
plot([1:L],Y_real,'b',[1:L],Y_test,'r'); %横坐标-纵坐标-颜色;横坐标-纵坐标
end
-颜色
xlabel('时间/min');
ylabel('液位/m');
legend('真实值','预测值');
title('最小二乘辨识水箱机理模型');
%% 辨识精度指标
%RMSE(均方根误差);MAPE(平均绝对百分比误差)
RMSE = sqrt((sum((Y_test-Y_real).^2))/L);
MAPE = sum(abs((Y_test-Y_real)./Y_real))/L;
[RMSE,MAPE]