基于粒子群优化的神经网络PID控制(Matlab)代码实现

news2024/11/18 8:37:18

 🍒🍒🍒欢迎关注🌈🌈🌈

📝个人主页:我爱Matlab


👍点赞➕评论➕收藏 == 养成习惯(一键三连)🌻🌻🌻

🍌希望大家多多支持🍓~一起加油 🤗

💬语录:将来的我一定会感谢现在奋斗的自己!

🍁🥬🕒摘要🕒🥬🍁

传统比例-积分-微分(Proportion Integral Derivative,PID)控制器存在参数整定困难,不能在线实时调整以及面对复杂非线性系统时应用效果不佳等问题,提出一种基于粒子群算法(Particle Swarm Optimization,PSO)优化的反向传播(Back Propagation,BP)神经网络PID控制方法。将BP神经网络与PID控制器相结合,利用BP神经网络的自适应学习能力在线实时调整PID控制参数,提升系统稳定性,针对BP-PID自学习过程中容易陷入局部极小值问题,利用改进的PSO算法对其进行优化,确保BP-PID系统收敛于全局最优解。基于仿真数据开展实验,结果表明,所提方法能够有效提升系统的控制精度和控制稳定度。 

✨🔎⚡运行结果⚡🔎✨

 

 

 

 

💂♨️👨‍🎓Matlab代码👨‍🎓♨️💂

clear all;
close all;

xite=0.50;
alfa=0.05; 
IN=4; H=5; Out=3;

ts=0.01;

% wi=0.50*rands(H,IN);
% wo=0.50*rands(Out,H);

%结合粒子群数值优化算法的神经网络权重初始化矩阵
wi=[
   -4.7730    5.0000    4.8238   -4.7085
    4.9337    4.8659   -4.9651   -4.8618
    4.9470    4.9485   -4.6965    4.8327
    5.0000    4.9508    4.5696    4.9154
    4.6047   -4.7804    5.0000   -4.7332
   ];
wo=[
    4.9438   -4.6610    4.9293    4.7416   -4.9323
    5.0000    4.9414    4.0693   -4.7460    5.0000
   -4.9147    4.8119    4.9292    4.9434    4.9398
   ];

%[wi , wo]=SPO_InitW();
wi_init_save=wi;   wo_init_save=wo;   
wo_1=wo;  wo_2=wo; 
wi_1=wi;  wi_2=wi;
 
%M=[10,1,10];
%激活函数系数
M=[9.9,9.8,9.4];

x=[0,0,0];
du_1=0;
u_1=0; u_2=0; u_3=0; u_4=0; u_5=0;u_6=0;u_7=0;
y_1=0; y_2=0; y_3=0; 
error_1=0; error_2=0;
  
Oh=zeros(H,1);
I=Oh;

  
sys=tf(400,[1,50,0]);
dsys=c2d(sys,ts,'z');
[num,den]=tfdata(dsys,'v');

for k=1:1:200 
    time(k)=k*ts;
    rin(k)=1.0; 
    yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;
    error(k)=rin(k)-yout(k);
    X(1)=error(k)-error_1;
    X(2)=error(k);
    X(3)=error(k)-2*error_1+error_2;
    xii=[X(1),X(2),X(3),1];
    xi=xii/norm(xii);
    epid=[X(1);X(2);X(3)];

    %%%前向传播----------------------------------------
    
    net2=xi*(wi');
     
    for j=1:1:H
        Oh(j)=( exp( net2(j)-exp(-net2(j)) ) )/(exp( net2(j)+exp(-net2(j)) ));
    end

📜📢🌈参考文献🌈📢📜

[1]曾雄飞.基于粒子群算法优化BP神经网络的PID控制算法[J].电子设计工程,2022,30(11):69-73+78.DOI:10.14022/j.issn1674-6236.2022.11.015.

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

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

相关文章

“空间代谢组学“用于食管鳞状细胞癌早期筛查的研究

​ 代谢组学文献分享—研究背景 近几年代谢组学的研究如火如荼的开展,极大地促进了各学科的发展,如疾病诊断与治疗、营养学、环境毒理学、进化和发育及药物等;与此同时,质谱成像技术(mass spectrometry imaging, MSI…

动态规划思想

1.动态规划思想:因为计算量太大而提出的解放方式。将一件大的事情分成若干个小的事情。2.找一个最优的隐藏序列,结合动态规划思想,可以把这个隐藏序列分成多个时间步,如果每个时间步都是最优的,那么最终的这个序列就是…

软件测试流程分享

工作以来,大大小小参与的项目也有十几个了,涵盖财务类、保险类、OA办公类软件,从测试流程上看,基本也都大同小异,这里将常见的测试流程做一些梳理,供刚入行的朋友学习参考,也欢迎大家完善补充。…

GD32F30x系列ADC源码,对初学者参考价值巨大,(非常详细篇)万字源码

GD32F30x系列ADC源码【1】adc_reg.h [参考]【2】ctrl_adc.h [重点]【3】gd32f30x_dma_reg.h [参考]【4】mon_adc.h [参考 1]【5】rcu.h [参考]【6】ctrl_adc.c [重要]【7】mon_adc.c [参考1]【8】main.c [参考2]这篇文章必须配合这个连接文件一起看,即ADC手册 嵌入式…

我的学校网页期末作业(纯html+css实现)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

在js中使用grpc(包括代理)后端使用Go

叙述 最近在研究web端的聊天系统,准备使用grpc作为通讯协议,因为客户端要主动的接受到消息,所以想要使用双向流的grpc。 但是经过几天的研究发现,grpc在浏览器上是不支持的,因为浏览器使用的协议是http1.1&#xff0c…

Apipost自动化测试功能详解

如何快速掌握接口自动化测试?首先我们看看: 1、什么是接口自动化测试? 通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。自动化测…

新浪股票行情数据接口有什么作用?

通过新浪股票行情数据接口可以让投资者在实际交易当中能够更加精准的洞悉盘口变化。该接口可以说是目前最好用的免费股票行情数据接口了,虽然一直并未公开,但暂时使用良好。大家用浏览器访问新浪的股票行情数据接口就能查看最新行情数据了。那么今天小编…

New Features Of JDK - JDK9 Modular System

Modular System 是 JAVA9 中提供的新特性,它从一个独立的开源项目而来,名为 Jigsaw Project。在此之前,我们对于 Java 技术栈中模块化的认知是基于 OSGI 的,实际上 OSGI 也确实形成了它自己独有的体系,并且是一定程度上…

TFT espi相关

文章目录1 .库文件设置1-1:这是库文件 tft _espi1-2:如何确定像素排列方式1-3:颜色显示异常处理方法2 .显示图片3.显示图片方法1 .库文件设置 1-1:这是库文件 tft _espi 链接:https://pan.baidu.com/s/1sT6s6VtpuwNV…

Spring【五大类注解的存储和读取Bean方法注解】

Spring【5大类注解的存储和读取Bean对象】🍎一. 五大类存储 Bean 对象🍒1.1 配置spring-config.xml扫描路径🍒1.2 添加五大类注解存储 Bean 对象🍉1.2.1 Controller(控制器存储)🍉1.2.2 Service…

ADAU1860调试心得(14)单片机启动与控制ADAU1860详解

ADAU1860实现脱机运行,是开发这个DSP的最后一步。这颗芯片有一颗HIFI 3Z的蓝牙MCU内嵌,用户可以用这颗MCU来进行脱机,甚至直接用C来开发1860(有专门的SDK,不在此做更多阐述),但是这个HIFI 3Z的软…

零代码使用air32做USB转串口

零代码实现USB转串口 环境搭建参考Air32F103使用手册 创建工程 新建工程 选择设备为AIR32F103CB 在弹出的RTE窗口勾选如下组件 配置工程 修改编译器为AC5,并启用MicroLIB 启用C99标准支持 添加代码 添加功能代码,在Source Group文件夹右键&#xff…

观测云产品更新|应用性能新增服务清单功能;用户访问监测 Session 查看器调整;事件新增移动端跳转选项等

观测云更新 应用性能新增服务清单功能 应用性能监测服务清单,支持实时查看不同服务的所有权、依赖关系、性能、关联的仪表版以及关联分析,快速发现和解决服务的性能问题,帮助团队高效地构建及管理大规模的端到端的分布式应用。 更多详情可…

FineReport可视化数据图表- 函数计算组成和语法示例

1.1设计报表 例如,使用内置数据集「销量」创建数据集ds1,对不同地区销量高低做判断。 将「地区」字段拖入 A2,将「销量」字段拖入B2,并设置「销量」展示方式为求和,然后对不同地区的销量情况进行求和,如下…

【吴恩达机器学习笔记】九、机器学习系统的设计

✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📣专栏定位:为学习吴恩达机器学习视频的同学提供的随堂笔记。 📚专栏简介:在这个专栏,我将整理吴恩达机器学习视频的所有内容的笔记&…

Allegro如何用list文件抓取器件操作指导

Allegro如何用list文件抓取器件操作指导 Allegro支持list文件在PCB上抓取器件,具体操作如下 在pcb相同目录下新建一个后缀为.lst文件,任意命名一个名字比如123.lst 原理图中批量选择需要抓取器件的信息,支持批量选择,无用的信息框选进去也是可以的 复制到新建lst文件中去…

主流嵌入式操作系统有哪些

嵌入式操作系统EOS(Embedded OperatingSystem)是一种用途广泛的系统软件,过去它主要应用于工业控制和国防系统领域。常见的嵌入式操作系统有wince、PALM OS、linux、Android、FreeRTOS。 WINDOWS CE是微软开发的一个开放的、可升级的32位嵌入式操作系统,…

【Matplotlib绘制图像大全】(二十六):Matplotlib读取本地图像

前言 大家好,我是阿光。 本专栏整理了《Matplotlib绘制图像大全》,内包含了各种常见的绘图方法,以及Matplotlib各种内置函数的使用方法,帮助我们快速便捷的绘制出数据图像。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmMatp…

基于SpringBoot和Vue的厨到家服务平台的设计与实现毕业设计源码063133

springboot厨到家服务系统 摘 要 在社会快速发展的影响下,餐饮迅速发展,大大增加了餐饮服务信息管理的数量、多样性、质量等等的要求,使餐饮的管理和运营比过去十年更加困难。依照这一现实为基础,设计一个快捷而又方便的厨到家服…