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


     🍒🍒🍒欢迎关注🌈🌈🌈

    📝个人主页:我爱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.

  • 相关阅读:
    C语言 深度探究C语言中的多字节字符
    用SSH工具XShell连接谷歌云 root用户或普通用户
    SkeyeVSS技术农贸市场乱象治理解决方案
    48 路径总和 III
    【黑马-SpringCloud技术栈】【02】服务拆分及远程调用_服务提供者与消费者
    YOLOv5、YOLOv8改进:空间金字塔池化 SPPF改为 SimSPPF / ASPP / RFB / SPPCSPC / SPPFCSPC
    Linux 下搭建 Hive 环境
    【SpringMVC】运行过程
    精准突击!Mysql亿级数据开发手册,GitHub 132k starts | 实战解析。
    leetcode刷题笔记——单调栈
  • 原文地址:https://blog.csdn.net/weixin_66436111/article/details/128146127