⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simulate.m

📁 遗传算法和神经网络联合用于数据融合
💻 M
字号:
clear

  %%%%%%%%%%训练模糊神经网络%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    %%%%%%%%%%%%%%%神经网络训练信号
    Temp=[6 6 6 6 6 6 6 6 7 7 7 7 7 7 8 8 9 8 8 8];
    Smog=[0 0 0 0 0 1 1 1 1 1 2 3 4 5 6 8 9 8 7 7];
    x=   [Temp;Smog]'; 
    D=   [0 0 0 0 0 1 1 1 2 2 3 3 4 4 4 5 5 5 5 5]'; 
    
    %D信号意义
    
    %0:非火灾
    %1:火灾可能性小
    %2:火灾可能性较小
    %3:火灾可能性中等
    %4:火灾可能性较大
    %5:火灾可能性大

    Wnum=2*6+2*6+6*6;                       %%权值数60
    
    %%%%生成遗传算法初始种群
    NIND=200;        %%个体数目(Number of individuals)
    WmaX=10.0;       %%权值最大范围[-WmaX WmaX]
    chrom=zeros(NIND,Wnum);        %%权值矩阵
    for i=1:NIND
        for j=1:Wnum
            chrom(i,j)=WmaX*rand;    %%十进制编码
            if rand<0.5              %%符号设置
                 chrom(i,j)=-1* chrom(i,j);
            end
        end
    end

    ec2=0.002;        %%GA算法 控制相对二范数误差
  
    %此段代码训练时打开
    a=zeros(2,6);   %隶属函数中心值和宽度
    b=zeros(2,6);             
    d=zeros(6,6);   %输出层权值    

    
    %%遗传算法训练 求得模糊网络参数[a,b,d]
    [a,b,d]=GA_new(x,D,Wnum,NIND,chrom,WmaX,a,b,d,ec2);
    
%%%%%%%%%训练结束%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
    %经G=20000次训练后 
    a =[-8.4585    2.1548    8.8663    8.5884    2.6502    5.6492;
         8.9133   -0.5494   -1.4952    3.9948   -3.6516   -7.2817]
    
    b =[-3.5260   -8.2207   -0.0846    2.0039   -1.1635    1.3539;
         3.2318   -4.9416    3.0783    4.9866    2.1025   -2.1942]
    
    d =[-0.7835   -1.1723   -3.3601    1.2951    5.0638   -0.9356;
         0.1228    8.9258    1.7120    8.1333   -5.1922   -4.2122;
        -2.0356   -3.3353   -2.8342   -4.1974    0.0113   -2.7504;
         8.8987   -8.1162    8.6731    2.9589   -2.1538   -1.8003;
        -2.6432   -2.3875   -3.5363   -3.2036   -2.0587   -0.2651;
         2.7479   -8.4928   -8.5451    5.8389   -2.8470   -6.0390]
    
   
    %%神经网络计算出结果
    y=net_new(x,a,b,d);                                  
    ee=D-y;
    (ee'*ee)/(D'*D)   %相对二范数误差
    
    =0.0028
    
    %y值与目标D相差很小,相对二范数误差0.0028
    y =

    0.0107
    0.0107
    0.0107
    0.0107
    0.0107
    0.9835
    0.9835
    0.9835
    2.0158
    2.0158
    2.6038
    3.2456
    3.8314
    4.2467
    4.3505
    4.9989
    5.0131
    4.9989
    4.7488
    4.7488

    
   
%%模糊输出判决结果测试%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    
    %训练样本
    xx=[7 1];   %输入信号  2维行向量
    net_fuzzy(xx,a,b,d)

    %输出
ans =

    2.0158


Result =

火灾可能性较小


    %测试样本
    xx=[6 3];   %输入信号  2维行向量
    net_fuzzy(xx,a,b,d)
    
    ans =

    3.1072


Result =

火灾可能性中等

    
    %测试样本
    xx=[10 10];   %输入信号  2维行向量
    net_fuzzy(xx,a,b,d)   
ans =

    5.2648


Result =

火灾可能性大
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -