当前位置:文档之家› Lecture 3 - 多变量动态矩阵控制算法

Lecture 3 - 多变量动态矩阵控制算法

17
MATLAB编程 编程
作阶跃响应( 作阶跃响应(粗)
step(system);
分析阶跃响应曲线,确定截断时间、 分析阶跃响应曲线,确定截断时间、采样周期和模型长度
截断时间 tend= 8 模型长度 N = 40 采样周期 Ts=0.2
作阶跃响应
stepresp=step(plant,[T:T:tend]);
13
入口
单变量DMC算法在线计算 算法在线计算(1) 单变量 算法在线计算
检测实际输出 y 并计算误差 y - y(1) → e 预测值校正 y (i ) + hi e → y (i ), i = 1,L , N
DMC在线计算流程
移位设置该时刻初值 y (i + 1) → y (i ), i = 1,L , N 设置控制增量 ∑ i=1 di (w − y(i)) → ∆u
A ∆uM ( k )
P 维预测输出值
P 维初始预测值
历史信息 每一时刻信息已知 动态更新
P×M 维动态矩阵A
模型信息
M 维控制增量
未来输入
离线辨识获得 在线优化获得 一旦确定保持不变
7
单变量DMC (2) 单变量
2. 目标函数
% J (k ) = ∑ qi [ w(k + i ) − yM (k + i | k ) ] + ∑ rj ∆u 2 (k + j − 1)
plant =
3.574e-006 z^3 + 3.912e-005 z^2 + 3.9e-005 z + 3.539e-006 ------------------------------------------------------------------------------------------z^4 - 3.957 z^3 + 5.898 z^2 - 3.925 z + 0.9841
[1 0 L 0]
h
+
-
a
[ I P× P
控制
0]
z
% y N 0 (k + 1)
−1
0 0 1 0 1 O 1 y ( k + 1) % cor 0 1
h1 M hN
e( k + 1)
预测
校正
单变量动态矩阵控制
2 i =1 j =1 P M
% = wP (k ) − yP0 (k ) − A∆U M (k )
2 Q
+ ∆U M
2 R
% q1 w(k + 1) − yM (k + 1| k ) % % = [ w(k + 1) − yM (k + 1| k ) L w(k + P) − yM (k + P | k ) ] O L % qP w(k + P) − yM (k + P | k ) 4 14 244 3
% y PM ( k ) % y P0 ( k )
0 L 0 ∆u (k ) a1 a a1 O 0 ∆ u ( k + 1) 2 M M O M a P a P −1 L a P − M +1 ∆ u ( k + M − 1) 14 4 4 424 4 4 4 14424 43 3
M×M维控制权矩阵 × 维控制权矩阵 维控制权矩阵R
8
单变量DMC (3) 单变量
3. 控制增量
% ∆u (k ) = cT ∆U M (k ) = cT ( AT QA + R ) −1 AT Q [ wP (k ) − yP0 ( k )] 1444 2444 3
dT
其中,M 维行向量 cT = [1 0 L 0] 表示取首元素的运算 P 维行向量 d T = cT ( AT QA + R)−1 AT Q [ d1 ,L, d P ] 为控制向量
y (k ) = 3.957 y ( k − 1) − 5.898 y (k − 2) + 3.925 y (k − 3) − 0.9841 y (k − 4) + 3.574e − 006u ( k − 1) + 3.912e − 005u ( k − 2) + 3.9e − 005u ( k − 3) + 3.539e − 006u ( k − 4)
% y N0 ( k +1) S % ycor ( k +1)
10
单变量DMC (5) 单变量
wP ( k )
dT
[ d1 L d P ]
-
∆u ( k )
+
z z −1
u (k )
y (k + 1)
对象
% yN 1 (k )
% y1 ( k + 1| k )
% yP 0 (k )
a1 ∆y N 1 (k ) % M aN
预测模型
4
单变量DMC 单变量
滚动优化
% min J (k ) = wP (k ) − yPM (k )
2 Q
+ ∆U M
2 R
s .t .
% % y PM ( k ) = y P0 ( k ) + A ∆ u M ( k )
5
单变量DMC 单变量
反馈校正
% % y c o r ( k + 1) = y N 1 ( k ) + h e ( k + 1)
MATLAB编程 编程
设置参数 P = 6, M = 4, Q = I ,
P=6;%预测时域/优化时域 M=4;%控制时域 Q = diag(ones(P,1),0);%误差权重Q=I(单位阵,P*P维) R = 0*diag(ones(M,1),0);%控制权重R=0(零矩阵,M*M维)
16
MATLAB编程 编程
离散化
T=0.01;%离散化时间 plant = c2d(system,T); nump = get(plant,'num');nump = nump{:};%获得分子项系数 denp = get(plant,'den');denp = denp{:};%获得分母项系数 nnump = length(nump) - 1; % 分子项系数个数(阶次) ndenp = length(denp) - 1; % 分母项系数个数(阶次)
18
MATLAB编程 编程
获得模型向量a 获得模型向量
a=stepresp((Ts/T):(Ts/T):tend/T); %获得模型向量 ,N*1维 获得模型向量a, 获得模型向量 维 a=[0.3728 1.8138 1.6352 1.1335 0.2251 0.7192 1.1324 1.5965 1.0174 0.7751 0.6180 1.1346 1.2110 1.1934 0.8095 0.8509 0.9424 1.1807 1.0795 0.9772 0.8634 0.9758 1.0587 1.0826 0.9907 0.9350 0.9657 1.0224 1.0558 0.9989 0.9788 0.9585 1.0225 1.0123 1.0283 0.9680 0.9988 0.9813 1.0334 0.9915]
% % yN0 (k + 1) = S ycor (k + 1)
6
单变量DMC (1) 单变量
1. 预测输出
% % y M ( k + 1 | k ) y0 (k + 1 | k ) y (k + 2 | k ) y (k + 2 | k ) % % + M = 0 M M % % y M ( k + P | k ) y0 (k + P | k ) 14424 4 3 14 424 4 3
11
单变量DMC算法离线计算 (1) 算法离线计算 单变量
离线计算
检测对象的阶跃响应,经光滑后得到模型系数 a1 ,L , aN 利用仿真程序确定优化程序,计算控制系数 d1 ,L , d P 选择校正系数 h1 ,L , hN
12
单变量DMC算法离线计算 (2) 算法离线计算 单变量
• 所需内存
4. 控制作用输出
% % y1 (k + 1| k ) y0 (k + 1| k ) a1 = + M ∆u (k ) M M y1 (k + N | k ) y0 (k + N | k ) aN % 4 14 244 { % 4 14 244 3 3
计算动态矩阵A 计算动态矩阵
A=zeros(P,M);%初始化动态矩阵 ,P*M维 初始化动态矩阵A, 初始化动态矩阵 维 A(:,1) = a(1:1:P); for i = 1:P, for j = 2: M, if i>=j, A(i,j) = A(i-1,j-1); end end end
1 ( k ) h
6. 状态更新
% % 0 ycor ( k + 1| k ) y0 (k + 2 | k + 1) 0 1 y (k + 3 | k + 1) O O M y (k + 2 | k ) % % 0 = cor M M 0 1 % % y0 ( k + N + 1| k + 1) 0 L 0 1 ycor (k + N | k ) 244 144 3 1444 2444 3 144 244 3
相关主题