一、MPC控制器设计
1.1 关键参数设置
matlab
Np = 15; % 预测时域
Nc = 5; % 控制时域
Q = eye(Np); % 输出权重矩阵
R = 0.1*eye(Nc); % 输入增量权重矩阵
1.2 约束条件定义
matlab
umin = -40*ones(Nc,1); % 输入下限
umax = 40*ones(Nc,1); % 输入上限
ymin = -50*ones(Np,1); % 输出下限
ymax = 50*ones(Np,1); % 输出上限
二、二次规划问题构建
2.1 系统预测模型展开
构建状态转移矩阵和输入影响矩阵:
matlab
% 状态预测矩阵
Phi = cell(Np,1);
for i = 1:Np
Phi{i} = A^i;
end
% 输入影响矩阵
Gamma = cell(Np,1);
for i = 1:Np
for j = 1:i
Gamma{i} = Gamma{i} + A^(i-j)*B;
end
end
2.2 约束条件编码
matlab
% 构建QP参数
H = 2*(Gamma{1}'*Q*Gamma{1} + R);
f = 2*Gamma{1}'*Q*(Phi{1}*x0 - yr);
三、MATLAB仿真实现
3.1 主程序框架
matlab
%% 初始化
x = zeros(n,1); % 初始状态
yr = [10; 20]; % 参考轨迹
u_prev = zeros(Nc,1); % 初始控制输入
%% 仿真循环
for k = 1:T_end
% 构建QP问题
H = 2*(Gamma{1}'*Q*Gamma{1} + R);
f = 2*Gamma{1}'*Q*(Phi{1}*x - yr);
% 约束条件
Aeq = Gamma{1};
beq = yr - Phi{1}*x;
lb = u_prev(1:end-1) + umin(1:end-1);
ub = u_prev(1:end-1) + umax(1:end-1);
% 求解QP
options = optimoptions('quadprog','Algorithm','interior-point-convex');
delta_u = quadprog(H,f,[],[],Aeq,beq,lb,ub,[],options);
% 应用控制输入
u = u_prev(1) + delta_u(1);
apply_control(u);
% 更新状态
x = A*x + B*u;
y = C*x + D*u;
% 存储数据
save_data(t,y,u);
% 滚动更新
u_prev = [u; u_prev(1:end-1)];
end
3.2 关键函数实现
matlab
% 状态更新函数
function x = update_state(x, u)
x = A*x + B*u;
end
% 输出计算函数
function y = compute_output(x)
y = C*x + D*u;
end
四、结果可视化与分析
4.1 跟踪性能分析
matlab
figure;
subplot(2,1,1);
plot(t,y_ref,'r--',t,y,'b-o');
legend('参考轨迹','实际输出');
xlabel('时间(s)'); ylabel('输出值');
subplot(2,1,2);
stem(t(1:end-1),u);
xlabel('时间(s)'); ylabel('控制输入');
4.2 约束满足验证
matlab
figure;
plot(t, u, 'b-o', t, umin*ones(size(t)), 'r--', t, umax*ones(size(t)), 'g--');
legend('实际输入','下限','上限');
title('输入约束满足情况');
参考代码 实现MIMO的MPC仿真 www.youwenfan.com/contentcsq/79382.html
五、工程应用扩展
5.1 多胞模型预测控制
matlab
% 定义多个工作点
plant_modes = {@linearize_plant1,@linearize_plant2,@linearize_plant3};
mpc_controller = mpc_multimode(plant_modes);
5.2 鲁棒MPC实现
matlab
% 添加不确定性描述
mpcobj = mpc(sys, Ts, Np, Nc);
mpcobj.Model.Nominal.U = [0;0];
mpcobj.Model.Nominal.Y = [0;0];
mpcobj.Model.Uncertainty = ss([0.1 0;0 0.1]);
六、参考文献
-
Camacho E F, Bordons C. Model Predictive Control in the Science of Robotics[M]. Springer, 2013.
-
Bemporad A, Morari M. Control of Systems Integrating Logic, Dynamics, and Constraints[M]. Springer, 1999.
-
MATLAB MPC Toolbox User's Guide (R2025a)