您现在的位置:首页 >> 机器学习 >> 内容

m基于K-means聚类算法和神经网络的模糊控制器设计matlab仿真

时间:2022/12/17 22:18:08 点击:

  核心提示:05_006_m,包括程序操作录像+说明文档...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y52Ykp1v

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览




3.算法概述

       在模糊神经网络设计中,模糊规则的建立是系统设计的瓶颈问题,所以有关神经网络与模糊系统相结合的研究大多集中在模糊神经网络的建模,模糊神经网络结构和算法的研究是国内外学者研究的热点,新模糊神经网络模型和学习算法不断涌现。

       模糊神经网络一般结构如图1所示。第一层为输入层,缓存输入信号。第二层为模糊化层,对输入信号进行模糊化。第三层为模糊规则层。第四层为模糊决策层,主要针对满足一定条件的量进行分类并将模糊量去模糊化。第五层为输出层,输出运算结果。

4.部分源码

%闭环控制器

for k=1:SIM_times

    k

    time(k) = k*ts;

    %定义输入信号

    din(k)   = 2;  

    %定义输出信号

    %定义干扰

    q = 0.012 + (0.142 - 0.012) * rand(1,1);

    %定义输出

    Tmp = A * [x,s,o]' + C2 * [(1+Ku)*u1,q]';

    o   = Tmp(3);

    yout(k)   = o;

    e(k)      = yout(k) - din(k);

    x1   =(1-exp(-10*Ke*e1))/(1+exp(-10*Ke*e1));

    x2   =(1-exp(-Kec*ec))/(1+exp(-Kec*ec));

    %第1层输出

    for i=1:7

        o11(i) = x1;

        o12(i) = x2;

    end

    o1=[o11;o12];

    %第2层输出

    for i=1:2

        for j=1:7

            z1(i,j)  =-((o1(i,j)-a(i,j))^2)/(b(i,j));

            o2(i,j)  =  exp(z1(i,j));

        end

    end

    %第3层输出

    for j=1:7

        for l=1:7

            o3((j-1)*7+l)=o2(1,j)*o2(2,l);

        end

    end

    %第4层输出

    I=0;

    for i=1:49

        I = I + o3(i)*Weight(i);

    end

    o4   = I/(sum(o3));

    u(k) = o4;

    u1   =-u(k);

    e1        = e(k);

    ec        = e(k)-error1;

    error1    = e(k);    

    %梯度下降法调整权值

    for i=1:49

        dwp       =  e1*du*o3(i)/(sum(o3));

        %迭代

        Weight(i) =  Weight(i) + eta*dwp;

    end

    %中心值更新

    da11=zeros(1,7);

    for j=1:7

        for l=1:7

            da11(j) =  da11(j)+(o2(2,l)*((Weight((j-1)*7+l)*sum(o3))-I));

        end

        da12(1,j)   = -e1*du*(2*(o1(1,j)-a(1,j))*(o2(1,j)))/((b(1,j)^2)*(sum(o3))^2);

        da1(j)      = (da12(1,j))*(da11(j));

    end

    da21 = zeros(1,7);

    for j=1:7

        for l=1:7

            da21(j) = da21(j)+(o2(1,l)*((Weight((l-1)*7+j)*sum(o3))-I));

        end

        da22(2,j) = -e1*du*(2*(o1(2,j)-a(2,j))*(o2(2,j))/((b(2,j)^2)*(sum(o3))^2));

        da2(j)    = (da22(2,j))*(da21(j));

    end      

    da=[da1;da2];

    for i=1:2

        for j=1:7

            a(i,j)=a(i,j)-eta*da(i,j);

        end

    end             

    a_s(:,:,k) = a;

   

    %宽度更新

    db11=zeros(1,7);

    for j=1:7

        for l=1:7

            db11(j)=db11(j)+(o2(2,l)*((Weight((j-1)*7+l)*sum(o3))-I));

        end

        db12(1,j)=-e1*du*(2*(o1(1,j)-a(1,j))^2)*(o2(1,j))/((b(1,j)^3)*(sum(o3))^2);

        db1(j)=(db12(1,j))*(db11(j));

    end

    db21=zeros(1,7);

    for j=1:7

        for l=1:7

            db21(j)=db21(j)+(o2(1,l)*((Weight((l-1)*7+j)*sum(o3))-I));

        end

        db22(2,j)=-e1*du*(2*(o1(2,j)-a(2,j))^2)*(o2(2,j))/((b(2,j)^3)*(sum(o3))^2);

        db2(j)=(db22(2,j))*(db21(j));

    end      

    db=[db1;db2];

    for i=1:2

        for j=1:7

            b(i,j)=b(i,j)-eta*db(i,j);

        end

    end      

    b_s(:,:,k) = b;

05_006_m

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168