Advertisement

模型预测控制(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)

还没有任何评论哟~