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

模型预测控制(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=
  • 4
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
模型预测控制MPC)是一种基于模型控制方法,可以用于处理多变量、非线性和约束条件存在的系统。它通过在未来时间范围内对系统行为进行预测,并根据预测结果计算出优化的控制策略。MPC在实际应用中具有广泛的应用,包括工业过程控制、机器人控制和交通流控制等领域。 在MATLAB中,可以使用MPT3工具箱来实现模型预测控制。MPT3工具箱比于其他工具箱具有更简便的使用方法和更丰富的功能。你可以通过官方网站https://www.mpt3.org/Main/HomePage获取更多关于该工具箱的安装和使用说明。MPT3工具箱提供了一系列函数和类,可以帮助用户构建系统模型、定义约束条件、设置目标函数并生成控制器。 下面是一个使用MATLAB和MPT3工具箱实现模型预测控制的示代码: ``` clear; close all; clc model = LTISystem('A', [1 1; 0 1], 'B', [1; 0.5]); model.x.min = [-10; -10]; model.x.max = [10; 10]; model.u.min = -1; model.u.max = 1; model.x.with('reference'); model.x.reference = [0;0]; model.x.penalty = QuadFunction([1 0; 0 1]); model.u.penalty = QuadFunction(1); ctrl = MPCController(model, 5); loop = ClosedLoop(ctrl, model); % 可以将控制器转化为显式表示 % etrcl = ctrl.toExplicit(); % 绘制控制器的三维图形 etrcl.feedback.fplot(); ``` 这段代码中,首先定义了一个线性时不变系统模型,然后设置了状态和输入的约束条件、参考值以及惩罚函数。接下来使用MPCController函数构建了一个MPC控制器对象,并设置了预测步长为5。最后通过ClosedLoop函数将控制器与系统模型进行闭环连接,以实现控制器的闭环操作。 请注意,上述示代码仅为演示目的,实际应用中需要根据具体系统的需求进行参数设置和调整。 希望以上信息对你有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [模型预测控制MPC)+逻辑控制平面分区控制--matlab介绍](https://blog.csdn.net/answerMack/article/details/103665885)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Matlab实现显示模型预测控制(Explicit MPC)的几种方法](https://blog.csdn.net/qq_35694280/article/details/107237795)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值