模型预测控制(MPC)+逻辑控制(相平面分区控制)--matlab例程介绍

该博客介绍了如何在MATLAB Simulink中实现模型预测控制(MPC)与逻辑控制(相平面分区控制)的结合。通过示例展示了控制器的设计思路,包括逻辑控制器在系统超出极限时切断通路,预测控制器用于保持系统稳定。文章提供了MATLAB仿真框图、参数设置及扰动后的结果分析,强调了这种控制结构在模型失配情况下的鲁棒性和实用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模型预测控制(MPC)+逻辑控制(相平面分区控制)–matlab例程介绍
MATLAB-模型模糊神经网络预测控制demo(训练数据用):链接:https://blog.csdn.net/answerMack/article/details/103628559

构建思想

在这里插入图片描述
代码原理在word文档中:
逻辑控制器是对人主动开环控制及强时变控制的模拟,预测控制是对师傅经验的模拟,其共同特征是主动时变控制。两者的结合将是对人的控制思维特点的较全面模拟。本文提出的仿人逻辑控制器则是基于这样一种观察:有经验的师傅在系统超出极限时甚至处于危险时会毫不犹豫的切断某些重要通路,而在系统工作处于正常范围时则依照经验控制,使波动尽量小。这样人工处理的结果是:系统在正常区间运行平稳,突发事件瞬间切换,能够确保系统安全,模型失配时也能保证满意运行。虽然这样的处理也许不是全局最优的,但却是在确保强鲁棒性基础上的局部最优,这样一种策略对于某些工业控制至关重要。
在这里插入图片描述
控制器的工作原理如下:在系统工作时逻辑控制器和预测控制器同时工作,其控制输出量分别为K(t)和U(t)。逻辑控制设置较宽的误差控制带其作用是用最短的时间将系统带入正常状态,暂且不管小的波动。预测控制的作用是利用预测模型将系统稳定在正常状态,并使控制曲线最优。控制量切换要选择合适的时机对这两种控制信号进行切换。具体而言,当系统远离正常状态,即通过逻辑状态判断其运行状态处于K4+、K3+和K4-、K3-四种状态时,控制量切换到逻辑控制状态。而当运行状态在K+、K-和K时,控制量切换到预测控制器,此时相当于师傅的经验开始起作用。这样一种控制结构充分利用了逻辑控制对模型匹配要求极低的特点,在模型失配的情况下仍然能取得满意效果,而在模型匹配情况下取得最优效果。此控制器的本质是时变开环控制加闭环校正控制,其物理概念清晰,系数整定方便,是将人的思维控制方式融合到模型中的结果。

matlab simulink框图

此处运用matlab simulink模块构建:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
MPC控制器参数:
在这里插入图片描述
在这里插入图片描述

结果展示

在这里插入图片描述

模型失配时 框图及结果

在这里插入图片描述
在这里插入图片描述

扰动后框图及结果

在这里插入图片描述
扰动值:
在这里插入图片描述
更改仿真时间到50s后的结果:
在这里插入图片描述
可以对结果分析:
在15秒添加扰动后,MPC+逻辑控制还是可以回到之前的顺滑轨迹,比之前回的慢了。

s函数代码


mpc2.m

Ts=.1;    % Sampling time
p=20;     % Prediction horizon
m=3;      % Control horizon

MPC2=mpc(tf(3,[2 3 4]),Ts,p,m);

NineState.m

%参数e0和de0是设定的相平面误差允许范围。
function [sys,x0,str,ts] = mfile(t,x,u,flag,e0,de0)

switch flag,
  %%%%%%%%%%%%%%%%%%
  % Initialization %
  %%%%%%%%%%%%%%%%%%
  % Initialize the states, sample times, and state ordering strings.
  case 0
    [sys,x0,str,ts]=mdlInitializeSizes;

  %%%%%%%%%%%
  % Outputs %
  %%%%%%%%%%%
  % Return the outputs of the S-function block.
  case 3
    sys=mdlOutputs(t,x,u,e0,de0);

  %%%%%%%%%%%%%%%%%%%
  % Unhandled flags %
  %%%%%%%%%%%%%%%%%%%
  % There are no termination tasks (flag=9) to be handled.
  % Also, there are no continuous or discrete states,
  % so flags 1,2, and 4 are not used, so return an emptyu
  % matrix 
  case {
    1, 2, 4, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值