MPC控制笔记(一)

转自 我的博客

笔记参考1:Understanding Model Predictive Control(Youtube 带自动生成字幕)
笔记参考2:Understanding Model Predictive Control(B站 生肉)

一、什么是MPC模型预测控制

MPC(Model Predict Control)是一种反馈控制(feedback control)算法, 使用模型来预测过程的未来输出。

举例:
[场景] 车道保持
[已知模型] 车辆模型,比如速度控制, 转向控制对应的偏航量
[预测] 根据已知模型和所选的控制策略(action),进行轨迹预测
[优化] 通过优化控制策略,来尽可能的拟合预测的轨迹。

如下图所示为一个MIMO系统u1,u2输入与y1,y2输出相互影响。如果使用PID控制的话,每一个子系统单独设计一个PID控制器,两个相互影响的子系统没有任何的交联,使得系统难以设计,如果像图二一样设计一个较大的系统,则参数较多难以实现,而使用MPC控制器的话可以较好的解决两种问题,综合相互间的影响来设计参数。
MIMO

MIMO BIG
MPC控制
MIMO MPC

此外MPC控制还可以方便的支持各种约束条件,具备一定的预测能力(有点像前馈feedforward控制)。

二、MPC的特点

综合上述,总结一下MPC的特点:

  • 支持MIMO系统,便于构建输入输出间的相互影响参数
  • 支持方便添加约束条件
  • 具有预测能力、
  • 需要较好的处理器和较大的内存,因为需要大量的在线优化,存储大量的变量

Onlineopt

三、MPC参数选择

选择一个好的参数不仅影响MPC控制的性能,而且还会影响到MPC每一个timestep内进行在线优化的计算复杂度。这里将会给出关于控制器采样周期、预测及控制范围(prediction and control)、约束及权重。

采样周期的选择

采样周期过大,则系统反应过慢导致难以及时进行修正控制,而采样周期过小,则会导致系统产生大量的在线优化计算,给系统带来较大的开销。因而建议采样周期设计采用开环响应时间(10~90%上升时间)的十分之一或二十分之一
timestep

预测范围(prediction horizon)的选择

预测范围指的是一次优化后预测未来输出的时间步的个数。建议范围:在开环响应时间内采样20-30个样本的范围
predhorizon

控制范围(control horizon)的选择

如下图 [k, k+m]范围为控制范围,之后的红色部分称为 held constant,其中控制范围是要通过优化器来进行优化的参数动作。
ctrlhorizon

过小的控制范围,可能无法做到较好的控制,而较大的控制范围,比如与预测范围相等,则会导致只有前一部分的控制范围才会有较好的效果,而后一部分的控制范围则收效甚微,而且将带来大量的计算开销。
consrtgr

建议控制范围应该在预测范围的1020%之间,最小值为23个timestep时间步
sujest

约束

对于约束,一般分为Hard约束和Soft约束,Hard约束是不可违背必须遵守的,在控制系统中,输入输出都可能会有约束限制,但是在设计时不建议将输入输出都给予Hard约束,因为这两部的约束有可能是有重叠的,导致优化器会产生不可行解。
建议输出采用较小容忍度的Soft约束,而输入的话建议输入和输入参数变化率二者之间不要同时为Hard约束,可以一个Hard一个Soft。
costraint

四、Linear MPC (Adaptive MPC 与 Gain-Scheduled MPC)

Linear MPC适用于:

对于非线性系统而言,需要在不同的operating point处进行线性化处理如下图。
op

Adaptive MPC

在 Adaptive MPC中,当operating condition发生变化的时候,需要进行一次近似线性化计算,在每个时间步中,使用其近似线性模型来更新内部的平台模型(plant model,比如飞控模型,自行车模型等)。
在 Adaptive MPC中,在不同的operating point条件下,其优化问题的结构保持不变,即状态数量,约束数量不会随着operating condition而改变。
adaptivempc

Gain-Scheduled MPC

在 Gain-Scheduled MPC中,在不同的operating point条件下,其优化问题的结构会发生变化,需要为每一个operating point构建一个MPC控制器,且相互之间独立,其状态数量约束数量也可能不同。
在 Gain-Scheduled MPC模式下,需要设计调度算法来切换不同的MPC模型。
GMPC

二者选型

[Adaptive MPC] 当能够构建平台(如飞行器,自动车等)的runtime线性模型,且在不同的operating point下优化问题的结构不变。

[Gain-Scheduled MPC] 当能够构建平台(如飞行器,自动车等)的runtime线性模型,且在不同的operating point下优化问题的结构发生变化。

五、Non-Linear MPC (Adaptive MPC 与 Gain-Scheduled MPC)

Non-Linear MPC适用于(相对强大,能够提供更准确的预测能力,与决策支持,但是非线性优化的计算开销较大)

编写 MPC 控制器的代码需要考虑到模型预测控制的算法实现,以及需要用到的函数库。以下是一个使用MATLAB的mpc函数库编写MPC控制器的示例代码,供参考: ```matlab % MPC 控制器代码示例 clear all; clc; % 设置 MPC 控制器参数 Ts = 0.1; % 采样时间 Np = 10; % 预测步数 Nc = 3; % 控制步数 % 设置模型 sys = tf([1],[1 2 1]); % 二阶系统 % 将模型转换为离散状态空间模型 sysd = c2d(sys,Ts); % 设置 MPC 控制器对象 mpcobj = mpc(sysd,Ts,Np,Nc); % 设置输出约束 mpcobj.OutputVariables = struct('Min',-1,'Max',1); % 设置输入约束 mpcobj.InputVariables = struct('Min',-1,'Max',1); % 设置初始状态 x0 = [0;0]; % 初始状态 % 设置参考信号 ref = ones(1,100); % 参考信号 % 运行 MPC 控制器 u = zeros(1,100); % 初始化输入信号 y = zeros(1,100); % 初始化输出信号 x = x0; % 初始化状态变量 for k = 1:100 % 计算 MPC 控制器的输出 [u(k),info] = mpcobj(x,ref(k)); % 模拟系统响应 y(k) = sysd.C*x + sysd.D*u(k); % 更新状态变量 x = sysd.A*x + sysd.B*u(k); end % 绘制结果 t = (0:99)*Ts; subplot(2,1,1); plot(t,y,'LineWidth',2); xlabel('Time (s)','FontSize',14); ylabel('Output','FontSize',14); title('MPC Controller Output','FontSize',16); subplot(2,1,2); plot(t,u,'LineWidth',2); xlabel('Time (s)','FontSize',14); ylabel('Input','FontSize',14); title('MPC Controller Input','FontSize',16); ``` 在上述代码中,我们首先设置了 MPC 控制器的参数,包括采样时间、预测步数和控制步数。然后,我们通过MATLAB的mpc函数库创建了 MPC 控制器对象,并设置了输出和输入约束。接下来,我们设置了初始状态和参考信号,并在一个循环中运行了 MPC 控制器,计算出相应的输出信号和输入信号。最后,我们绘制了结果。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值