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

news2024/10/7 10:25:25

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

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:p
    y(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 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/73468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OneHotEncoder独热编码

首先了解机器学习中的特征类别:连续型特征和离散型特征。 拿到获取的原始特征,必须对每一特征分别进行归一化,比如,特征A的取值范围是[-1000,1000],特征B的取值范围是[-1,1].如果使用logistic回归,w1*x1w2…

Docker-compose编排

一、Docker Compose前言 Docker Compose的前身是Fig,Fig被Docker收购之后正式更名为Compose,Compose向下兼容Fig Docker Compose是一个用于定义和运行多容器Docker应用的工具,只需要一个Compose的配置文件和一个简单的命令就可以创建并运行应…

STC 51单片机61——呼吸灯

#include "reg52.h" sbit LedHuxi1P1^0; #define time (65536-1000) // 单次定时1ms unsigned char T_High, T, ti, dir; void InitTimer0(void) { TMOD0x01; TL0 time; //initial timer1 low byte TH0 time >> 8; …

从来没有一家互联网公司不问【设计模式+SSM框架底层源码】

结构型模式 创建型模式 行为型模式 六大原则 免费分享学习设计模式整理的学习笔记文档 Spring5源码解读 **其实,学习编程不是学习配置东西,然后写编程套路。写程序最重要的是你能心中有自己的一套架构思路,比如我现在就没有写Java的项目…

还在公域流量里面投入大量广告费而无法变现,不如试试私域流量吧

大家好,我是林工,不知道大家听说过私域流量这个词没有,听起来是一个听起来很模糊的概念。很多人都知道它大概的意思,但具体要落实到“私域流量怎么做”这件事情上,大都都是一问三不知,不知道该如何入手。 其…

艾美捷魔力红组织蛋白酶B活性分析试剂盒研究手册

艾美捷ICT魔力红组织蛋白酶B活性分析试剂盒包含: 套件937:25测试 魔红基质(MR-RR2),1 25测试小瓶,#6133 Hoechst 33342,1毫升,#639 吖啶橙,0.5 mL,#6130 工具包手册…

低版本docker cp报错Error: Path not specified未指定路径解决办法

大概就是版本过低。此时我们可以通过另外得途径解决 1:查找启动容器得id docker inspect -f ‘{{.Id}}’ 40e8c27c975f 例如我这里找es得 2:进入到docker容器挂在到本地得共享盘地址 一般就事 以我得乌班图为例 /var/lib/docker rootubuntu:/var/lib/do…

Android动画 补间动画

目录 1.什么是补间动画 2.XML实现方式 3.代码实现方式 4.展现形式 1.什么是补间动画 补间动画:属于Android中View动画的一种,就是涵盖了 平移、缩放、旋转 和 透明度四种变化的动画。实现方式有两种:xml文件 和 java代码。 四种补间动…

[附源码]计算机毕业设计大学生志愿者服务管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

擎创技术流 | ClickHouse实用工具—ckman教程(6)

哈喽~小伙伴们,今天依旧是每一周一期的技术分享~ 关于“ckman”的技术分享已经第6期了,大家是不是跟小编一样收获颇丰?新知识虽然新鲜有趣,但也别忘了回顾旧知识巩固基础噢~↓↓↓ 擎创技术流 | ClickHouse实用工具—ckman教程&…

10万字208道Java经典面试题总结(附答案)

前言 最近有很多粉丝问我,有什么方法能够快速提升自己,通过阿里、腾讯、字节跳动、京东等互联网大厂的面试,我觉得短时间提升自己最快的手段就是背面试题,最近总结了Java常用的面试题,分享给大家,希望大家都…

[附源码]Python计算机毕业设计SSM基于微信平台的车险投保系统设计与实现(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

VINS、MAVROS等的坐标系统一(草稿,未得出明确结果)

由于不同算法之间的坐标系不同,导致计算的结果混乱,该博客的目的是记录和统一不同算法之间的坐标系,保证坐标系的统一 一、VINS算法 vins算法,使用D435I相机。该坐标方向为:右前上分别为xyz。角度:由于是四…

SpringBoot+Vue实现前后端分离的心理咨询系统

文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript、Vue.js 、css3 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库:MySQL 5.7/8.0 数据库管理工具:phpstudy/Navicat JD…

代码随想录刷题记录 day38 最后一块石头的重量+目标和+1和0

代码随想录刷题记录 day38 最后一块石头的重量目标和1和0 参考:代码随想录 1049. 最后一块石头的重量 II 思想 把数组的石头尽可能地分成大小相等地两个集合 即sum/2; 容量为sum/2地背包尽可能地装满石头。 代码 class Solution {public int last…

C/C++入门002-C语言组成

文章目录1. C工程创建1.1 基于Code::Blocks创建工程1.2 Code::Blocks界面设置2. C语言程序组成2.1函数2.1.1 主函数2.1.2 其它函数2.1.3 如何执行定义好的函数2.2 输出函数printf2.2.1 编译输出为exe可执行文件2.3 C语言要求2.3.1 注释2.4 C语言程序练习2.4.1 输出三角形代码1&…

【MySQL基础】数据库定义语言DDL相关操作有那些?

目录 一、什么是DDL? 二、对数据库的常用操作 三、对表结构的常见操作 四、修改表结构格式 💟 创作不易,不妨点赞💚评论❤️收藏💙一下 一、什么是DDL? DDL(Data Definition Language) 被称为数据库定义语言,该…

如何基于企业微信通讯录,同步生成对外的LDAP服务?

不少企业使用企业微信作为办公协同的工具,并通过企业微信的组织架构(即通讯录)来管理员工身份。那么如何利用当前企业微信的组织架构和用户身份,同步生成对外的 LDAP 服务呢? 为什么要同步创建 LDAP 服务? …

【超级详细步骤】pyinstaller 打包 exe 其实特别简单

文章目录为什么要打包?安装pyinstaller技术提升pyinstaller 打包单个.py文件步骤1:单击以下区域输入 cmd 切换到目标文件目录2:输入 pyinstaller -F -w Analog_clock.py 回车即可3:打包成功会在.py文件同级目录下出现以下文件&…

VM——http协议及json解析

1、http协议实现参考:(180条消息) C# Http通讯协议的整理_C#Code- Sheep的博客-CSDN博客_c# http协议 2、Json解析参考:c#解析json字符串处理(最清晰易懂的方法) - 轩辕箭 - 博客园 (cnblogs.com) 3、VM中http实现步骤&#xff…