?? simulate.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 + -