【工业控制】基于matlab多变量动态矩阵预测控制(DMC)【含Matlab源码 1499期】

2024-04-11 05:32

本文主要是介绍【工业控制】基于matlab多变量动态矩阵预测控制(DMC)【含Matlab源码 1499期】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、简介(附课程报告)

1引言
众所周知,上世纪 60 年代初形成的现代控制理论在航空、航天等领域取得了辉煌的成果。 然而人们不久就发现在完美的理论与控制之间还存在着巨大的鸿沟。主要表现在以下几个方面:
1.现代控制理论的基点是对象精确的数学模型,而在工业过程中所涉及的对象往往是多输入、多输出的高维复杂系统其数学模型很难精确建立,即使建立了模型从工程应用的角度来说往往需要简化从而很难保证对象精确的模型。
2.工业对象的结构、参数和环境都有很大的不确定性。由于这些不确定性的存在按照理想模型得到的最优控制在实际上往往不能保证最优有时甚至引起控制品质的严重下降。在工业环境中人们更关注的是控制系统在不确定性影响下保持良好性能的能力 即所谓鲁棒性而不能只是追求理想的最优性。
3.工业控制中必须考虑到控制手段的经济性。对工业计算机的要求不能太高. 因此控制算法必须简易以满足实时性的要求.而现代控制理论的许多算法往往过于复杂难以用低性能的计算机实现。
为了克服理论与实际应用之间的不协调,预测控制就是在这种背景下发展起来的。动态矩阵控制 DMC 是一种基于计算机控制的技术,它是一种增量算法, 并基于系统的阶跃响应。它直接以对象的阶跃响应离散系数为模型,采用多步预估技术,能有效解决时延过程问题。按使预估输出与给定值偏差最小的二次性能指标实施控制。
在这里插入图片描述
图 1 DMC 算法的控制结构
2 多变量 DMC 原理分析
DMC算法分为三部分:预测模型、滚动优化和反馈校正。
设被控对象有 m 个控制输入,p 个输出,假定已测得每一输出𝑦𝑖对每一输入
𝑢𝑗的单位阶跃相应𝑎𝑖𝑗(𝑡),则可由阶跃响应都在采样点上的值组成模型向量
在这里插入图片描述

⛄二、部分源代码

clear;clc;
num={[5],[3];[6],[9]};
den={[3 1 3],[1 2 5];[2 1 7],[2 3 6]};
sys=tf(num,den);%模型传递函数
g11=poly2tfd(num{1,1},den{1,1},0,0);
g12=poly2tfd(num{1,2},den{1,2},0,0);
g21=poly2tfd(num{2,1},den{2,1},0,0);
g22=poly2tfd(num{2,2},den{2,2},0,0);
delta=0.5;%采样时间
P=12;M=6;m=2;p=2;N=40; % M,P,m,p分别为控制时域长度,预测时域长度,输入量个数,输出量个数,N为建模时域
ny=2;
tfinal=500;
mymodel=tfd2step(tfinal,delta,ny,g11,g12,g21,g22);%计算阶跃响应模型

%作图,画出模型的阶跃响应曲线
figure(1)
subplot(2,2,1);
step(num{1,1},den{1,1});
title(‘u1-y1阶跃响应’);
xlabel(‘time’);
subplot(2,2,2);
step(num{1,2},den{1,2});
title(‘u1-y2阶跃响应’);
xlabel(‘time’);
subplot(2,2,3);
step(num{2,1},den{2,1});
title(‘u2-y1阶跃响应’);
xlabel(‘time’);
subplot(2,2,4);
step(num{2,2},den{2,2});
title(‘u2-y2阶跃响应’);
xlabel(‘time’);

ywt=[3,1];%Q矩阵
uwt=[400,300];%R矩阵
alpha=[1,1];%H矩阵
r=[1;2];%设定值
tend=500;%结束时间

%计算反馈校正H矩阵
H=[];
for i=1:p
h=alpha(1,i)*ones(N,1);
H=blkdiag(H,h);
end

%计算移位矩阵S
for i=1:p
for j=1:N-1
S((i-1)N+j,(i-1)N+j+1)=1;%次对角线元素为1
end
S((i
N),(i
N))=1;%右下角元素为1
end

%输出设定值R矩阵
R=[];
for i=1:p
r=r(i,1)*ones(P,1);
R=[R;r];
end

for i=1:p
for j=1:N
y_N((i-1)*N+j,1)=0;
y_N0((i-1)*N+j,1)=0;
end
for j=1:P
y_P0((i-1)*P+j,1)=0;
end
end
deltY=[];
deltU=[];
y_Ncor=[];

[kmpc,A,L,A_N,a,Q]=DMC_martixD(mymodel,uwt,ywt,M,P,m,p,N);%计算D矩阵

for i=1:1:tend
e(:,i)=y_Real(:,i)-y(:,i);
y_Ncor(:,i)=y_N(:,i)+He(:,i);
y_N0(:,i)=S
y_Ncor(:,i);

deltY(:,i)=R-y_P0(:,i);
deltU(:,i)=kmpc*(R-y_P0(:,i));
U(:,i+1)=deltU(:,i)+U(:,i);
y_N(:,i+1)=y_N0(:,i)+A_N*deltU(:,i);
for j=1:py(j,i+1)=y_N((j-1)*N+1,i+1);
end
t=0:delta:delta*i;y_Real1=lsim(sys(:,1),U(1,1:i+1),t)+lsim(sys(:,2),U(2,1:i+1),t);y_Real=y_Real1';

end

n=size(y_Real(1,:));
n=n(1,2);
t=1:1:n;

figure(2);
subplot(2,1,1);
plot(t,y_Real(1,1:n));
title(‘实际输出’);
ylabel(‘y1’,‘rotation’,0);xlabel(‘time’);

subplot(2,1,2);
plot(t,y_Real(2,1:n));
ylabel(‘y2’,‘rotation’,0);xlabel(‘time’);

⛄三、运行结果

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

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 门云阁.MATLAB物理计算与可视化[M].清华大学出版社,2013.

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

这篇关于【工业控制】基于matlab多变量动态矩阵预测控制(DMC)【含Matlab源码 1499期】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/893188

相关文章

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

使用DrissionPage控制360浏览器的完美解决方案

《使用DrissionPage控制360浏览器的完美解决方案》在网页自动化领域,经常遇到需要保持登录状态、保留Cookie等场景,今天要分享的方案可以完美解决这个问题:使用DrissionPage直接... 目录完整代码引言为什么要使用已有用户数据?核心代码实现1. 导入必要模块2. 关键配置(重点!)3.

SpringSecurity 认证、注销、权限控制功能(注销、记住密码、自定义登入页)

《SpringSecurity认证、注销、权限控制功能(注销、记住密码、自定义登入页)》SpringSecurity是一个强大的Java框架,用于保护应用程序的安全性,它提供了一套全面的安全解决方案... 目录简介认识Spring Security“认证”(Authentication)“授权” (Auth

python之流程控制语句match-case详解

《python之流程控制语句match-case详解》:本文主要介绍python之流程控制语句match-case使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录match-case 语法详解与实战一、基础值匹配(类似 switch-case)二、数据结构解构匹

Spring 中 BeanFactoryPostProcessor 的作用和示例源码分析

《Spring中BeanFactoryPostProcessor的作用和示例源码分析》Spring的BeanFactoryPostProcessor是容器初始化的扩展接口,允许在Bean实例化前... 目录一、概览1. 核心定位2. 核心功能详解3. 关键特性二、Spring 内置的 BeanFactory