matlab dmc控制代码,动态控制矩阵(DMC)算法的浅析
一、预测控制的一般原理
在预测控制一般原理的基础上,采用不同的模型形式、优化策略和反馈措施,可以形成各种不同的预测控制算法。尽管目前已有各种各样的预测控制算法,但就方法原理而言,都具有一下特征:即利用过程模型预测系统在你一定的控制作用之下的未来的动态行为,并在此基础之上根据给定的约束条件和性能要求滚动的求解最优控制作用并实施当前作用,在滚动每一的时刻同各国检测实时信息修正对未来动态行为的的预测,它可以归纳为:预测模型、滚动优化和反馈校正三条原理。
二、动态矩阵控制(DMC)的原理
动态矩阵控制算法是一种基于被控对象非参数数学模型的控制算法,它是一种基于对象阶跃响应的预测控制算法,它以对象的阶跃响应离散系数为模型,避免了通常的传递函数或状态空间方程模型参数的辨识,又因为采用多步预估技术,能有效解决时延过程问题,并按预估输出与给定值偏差最小的二次性能指标实施控制,它适用于渐进稳定的线性对象,系统的动态特性中具有纯滞后或非最小相位特性都不影响改算法的直接应用,因此是一种最优控制技术。
三、MATLAB源程序分享
clear; %离线准备工作
Ts=1;
%采样周期
tfinal=100; %采样结束时间
N=tfinal/Ts; %建模时域
t=[0:1:100];
P=8;
%优化时域
M=5;
%控制时域
sysr=tf([6000],[1 2 230 315 6000]);
%实际系统模型
[ypr,tpr,xpr]=step(sysr,t);
model=[ypr(1:N)];
%因为step的第一个值是从0时刻开始的,而模型阶跃系数是从S1第一个时刻开始的
plant=c2d(sysr,Ts);
nump=get(plant,'num');
nump=nump{:};
%获得分子项系数
denp=get(plant,'den');
denp=denp{:};
%获得分母项系数
%计算a矩阵
A=zeros(P,M);
for i1=1:P
for
i2=1:M
if(i1
A(i1,i2)=0;
else
A(i1,i2)=model(i1-i2+1);
end
end
end
Q=eye(P);
%误差权矩阵
R=0*eye(M); %控制权矩阵
cT=[1,zeros(1,M-1)];
%M维行向量,取首元素
K=inv(A'*Q*A+R)*A'*Q;
dT=cT*K; %控制向量,P维行向量
h=ones(N,1); %选择校正系数
%下面完成在线计算
%首先初始化模块
sp=2;
W=ones(P,1)*sp;
S=zeros(N); %求位移矩阵S
for i=1:N
for j=1:N
if(i+1==j)
S(i,j)=1;
end
end
end
S(N,N)=1;
ss=[1,zeros(1,N-1)] ; %取输出的第一个元素
du=0;
uu=0;
u=zeros(N,1);
yn=zeros(N,1);
%预测输出
yn0=zeros(N,1);
%初始值预测
yr=zeros(N,1) ;
%系统未来N个时刻实际的输出值
for k=1:N
du=dT*(W-yn0(1:P));%电压增量
uu=uu+du;
if(uu>30)
uu=30;
end
if(uu
uu=-30;
end
u(k)=uu;
yn=yn0+model*du;
%预测输出
yr=filter(nump,denp,u);%实际输出
e=yr(k)-ss*yn;
ycor=yn+h*e;
%预测值校正
yn0=S*ycor;
%初始值预测
end
t=Ts.*(1:N);
subplot(211);
plot(t,yr);
grid on;
subplot(212);
stairs(t,u);
grid on;
四、作者一点感慨
由于我自己不是自动化专业的,初次学习读许多的专业名词不知道,在老师的帮助下花费了两个星期的时间看《预测控制第2版.席裕庚》,感觉书上的公示很多,特别是书上的那个方框图,看了蛮久的,最后才弄懂。最后老师要我们编写M文件代码,刚开始束手无策,还是一起上课的博士师姐NB,她弄出来上面的这个程序,然后老师要求其余没有弄出的小伙伴们去搞GPC(广义预测控制),瞬间萌萌哒了)._.(。
matlab dmc控制代码,动态控制矩阵(DMC)算法的浅析相关推荐
- matlab dmc控制代码,【原创】Matlab实现DMC控制加热炉程序
DMC单入单出控制程序 这是一个加热炉控制程序 程序是自己编的 请大家指正 [math]$\frac{0.6 \exp(-20)}{2400 s^2+85s+1}$ [/math] Contents ...
- dynamic time warping matlab,Dynamic Time Warping 动态时间规整算法
Dynamic Time Warping(DTW)是一种衡量两个时间序列之间的相似度的方法,主要应用在语音识别领域来识别两段语音是否表示同一个单词. 1. DTW方法原理 在时间序列中,需要比较相似性 ...
- 基于蝗虫(蚱蜢)优化算法优化的支持向量机分类模型及其MATLAB实现-附代码
基于蝗虫(蚱蜢)优化算法GOA优化的支持向量机分类模型SVM及其MATLAB实现-附代码 文章目录 基于蝗虫(蚱蜢)优化算法GOA优化的支持向量机分类模型SVM及其MATLAB实现-附代码 1. 模型 ...
- dmc预测控制 matlab,预测控制动态矩阵DMC算法研究分析及仿真.doc
个人收集整理 仅供参考学习 个人收集整理 仅供参考学习 PAGE / NUMPAGES 个人收集整理 仅供参考学习 预测控制中动态矩阵控制DMC算法研究及仿真 摘要:动态矩阵控制(dynamic ma ...
- 基于动态时间规整算法(DTW)的语音识别技术研究-含Matlab代码
⭕⭕ 目 录 ⭕⭕ ⏩ 一.引言 ⏩ 二.动态时间规整算法基本原理 ⏩ 三.语音识别实例分析 ⏩ 四.参考文献 ⏩ 五.Matlab代码获取 ⏩ 一.引言 在语音识别技术的发展过程中,动态时间规整算法 ...
- 动态分区分配算法代码_【代码】巩敦卫等TEVC论文:基于区间相似度分析的协同动态区间多目标进化优化算法...
分享代码:巩敦卫等TEVC论文:基于区间相似度分析的协同动态区间多目标进化优化算法. 说明:该代码基于Matlab2012a及Intlab5.5编写,对应文献:"Dunwei Gong, B ...
- Matlab基于动态粒子群算法的动态环境寻优算法 基本粒子群算法首先是在解空间中随机初始化所有粒子
Matlab基于动态粒子群算法的动态环境寻优算法 基本粒子群算法首先是在解空间中随机初始化所有粒子,每个粒子位置即代表问题的一个潜在解,在搜索过程中,采用适应度函数对每个粒子位置进行评价,适应度值好的 ...
- 动态时间规整matlab和python代码
几篇写得很好的文章 [重大修改]动态时间规整(Dynamic Time Warping) 算法笔记-DTW动态时间规整 动态时间规整算法(Dynamic Time Warping, DTW)之初探单词 ...
- 【语音识别】动态时间规整算法(RTW)语音识别系统【含GUI Matlab源码 341期】
⛄一.动态时间规整算法(RTW)语音识别 软件算法主要分为语音信号滤波去噪.预加重.分帧.端点检测.特征参数提取.模式匹配.算法的关键点和难点是特征参数提取和模式匹配.孤立词的语音识别应用程序也是基于 ...
- 基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码
基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码 文章目录 基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码 1 蝙蝠算法与BP神经网络分类模型 1.1 蝙 ...
最新文章
- JAVASCRIPT C# 相互访问
- 死磕苹果,小米飘了?
- nginx关闭favicon.ico日志
- Android窗口系统第二篇---Window的添加过程
- C#类库项目创建config文件
- Qt使用教程(C++版)
- 如何评价单片机大神郭天祥?
- PHP框架底层源码怎么看,php底层_php框架底层源码怎么看
- Apache Doris 在京东广告报表查询场景下的应用
- python爬虫 抓取豆瓣电影 电影分类排行榜的所有数据
- 深入boot.img格式文件结构解析
- android 高性能框架,高性能架构
- 泰拉瑞亚服务器一直显示什么,《泰拉瑞亚》Steam联机总是掉?教你一个稳定联机方法...
- 销售如何维护客情关系 销售维护客户有什么方法
- 2019天猫双十一活动--自动逛店领猫币
- 说一下自动化测试的优缺点
- Elasticsearch整合Mysql新闻搜索
- [编程] Java8 Stream(流式计算) 常见的一些用法汇总
- PHP 制作微信小程序API 简例
- 强烈推荐!帮你从零开始全面掌握UI设计的配色方法