模型预测控制(MPC):无约束线性模型预测控制
发布时间
阅读量:
阅读量
一、理论基础:
考虑如下基于状态方程的线性系统:

在当前时刻k时,可以得到预测时域 N 内的输出如下:

进一步,可得出如下紧凑形式:

其中:

在有限时域 N 内定义如下代价函数:

其中:

上述代价函数为二次型,可通过求导获得最优决策变量,即:

通过带入紧凑形式方程,矩阵求导得出:

实施控制作用时,只实施一个时刻,进行滚动优化,即:

二、代码
clear
clc
%% 系统参数
A = [1.1 2; 0 0.95];
B =[0 ; 0.079];
C = [1 1];
x_0 = [1.1 -0.7];
%% 控制参数
Nc = 1;
Q = eye(size(A,1));
R = 0.1;
%% 计算增益
[F,phi] = mpcgain(A,B,Nc);
QQ = Q;
RR = R;
for i = 2:Nc
QQ = blkdiag(QQ,Q);
RR = blkdiag(RR,R);
end
k_mpc = [1,zeros(1,Nc-1)]*inv(phi'*QQ*phi+RR)*phi'*QQ*F;
%% 实施控制作用
k_step = 100;
x_k = zeros(size(A,1),k_step+1);
x_k(:,1) = x_0;
for k = 1:k_step+1
u = -k_mpc*x_k(:,k);
x_k(:,k+1) = A*x_k(:,k) + B*u;
end
figure
hold on
for i = 1:size(A,1)
plot(x_k(i,:));
end
三、思考
下图分别 N =1,N =2,N =3的优化结果,可以看出当 N =1时,系统发散并未稳定。



因此,增加预测时域长度是保证MPC稳定性的一种手段,不同系统可能就需要考虑不同尺度的时域大小。从而产生出了无穷时域的策略。但无穷时域意味着优化时决策变量无穷维度,从而带来了新的问题,下一节将展示无穷时域下如何进行无约束线性MPC的滚动优化求解。
全部评论 (0)
还没有任何评论哟~
