1 簡介
人工魚群算法是一種基于自然界魚群的生活行為而提出的一種智能優化算法。人工魚群算法由于其諸多優點自從提出來後就得到了廣泛的應用,這是群體智能算法的一個典型應用,是人們在群體智能研究的方面的又一個重要成就。人工魚群算法可以簡單的描述為:在自然界的一片水域中,魚類一般是通過随機自由遊動來尋找食物的,在尋找食物的過程中,魚類往往聚內建群,這是魚類長期自然選擇形成的生活習性。一般情況下,魚個數較多的地方往往是食物也較多的地方。人工魚群算法就是通過模 仿自然魚的覓食、聚群、追尾、随機遊動的行為而形成的一種優化算法。
2 部分代碼
%讀取訓練資料
[f1,f2,f3,f4,class] = textread('trainData.txt' , '%f%f%f%f%f',150);
%特征值歸一化
%[input,minI,maxI] = premnmx( [f1 , f2 , f3 , f4 ]') ;
[input,inputps]=mapminmax([f1 , f2 , f3 , f4 ]');
%構造輸出矩陣
s = length( class ) ;
output = zeros( s , 3 ) ;
for i = 1 : s
output( i , class( i ) ) = 1 ;
end
%建構神經網絡
net = newff( minmax(input) , [7 3] , { 'logsig' 'purelin' } , 'traingdx' ) ;
%魚群算法優化權值和門檻值
[net,e_iter,passed_times]=af_lwb(net,input,output);
%設定訓練參數
net.trainparam.show = 50 ;
net.trainparam.epochs = 500 ;
net.trainparam.goal = 0.01 ;
net.trainParam.lr = 0.01 ;
%開始訓練
net = train( net, input , output' ) ;
%讀取測試資料
[t1 t2 t3 t4 c] = textread('testData.txt' , '%f%f%f%f%f',150);
%測試資料歸一化
[testInput,testInputps]=mapminmax([t1,t2,t3,t4]');
%仿真
Y = sim( net , testInput );
%統計識别正确率
[s1 , s2] = size( Y ) ;
hitNum = 0 ;
for i = 1 : s2
[m , Index] = max( Y( : , i ) ) ;
if( Index == c(i) )
hitNum = hitNum + 1 ;
end
end
sprintf('識别率是 %3.3f%%',100 * hitNum / s2 )