欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
pso算法改進含MATLAB代碼
[打印本頁]
作者:
ghwthgn
時間:
2019-3-12 19:06
標題:
pso算法改進含MATLAB代碼
以前寫的改進pso算法,附件包含源代碼
MATLAB源程序如下:
%% No-dealing LOO RBF
% 程序運行完以后,觀察一下數據
%QPSO輸出
% Validation_err(curCount,Swarmsize) %每一代每一個粒子的驗證數據錯誤率
% Test_err(curCount,Swarmsize) %每一代每一個粒子的測試數據錯誤率(有可能比驗證集小)
% Position{curCount,Swarmsize} %每一代每一個粒子的位置,即所尋找的參數
% BestFitness(curCount,:)=gbest; %每一代得到的驗證集全局最小誤差,即適應度函數的迭代指標,越小越好
% BestPosition(curCount,:)=Pg; %每一代得到的對應驗證集全局最小誤差的最優參數
% BestFitness2(curCount,:)=gbest2; %每一代得到的驗證集取得全局最小誤差所對應的最優參數取得的測試集誤差(不一定最小)
% Bestlabel1(curCount,:)=z1_best; %每一代得到的驗證集全局最小誤差的預測標簽
% Bestlabel2(curCount,:)=z2_best; %每一代得到的驗證集取得全局最小誤差所對應的最優參數取得的測試集誤差的預測標簽
% best_position=Pg; %迭代完成以后驗證集取得最小誤差所對應的最優參數值
% best_accuracy=1-gbest; %迭代完成以后驗證集取得是識別率最大值
% best_accuracy2=1-gbest2; %迭代完成以后驗證集取得最大識別率對應的最優參數取得的測試集識別率
% best_validation_lable=z1_best; %迭代完成以后驗證集取得最大識別率的預測標簽
% best_test_lable=z2_best; %迭代完成以后驗證集取得最大識別率對應的最優參數取得的測試集識別率的預測標簽
%用最優參數模型對驗證集和測試機進行識別輸出
% V_label %QPSO輸出最優參數對應的驗證集最大識別率的預測標簽和驗證集原始標簽,第二列等于best_validation_lable=z1_best
% T_label %QPSO輸出最優參數對應的測試集識別率的預測標簽和測試集原始標簽,第二列等于best_test_lable=z2_best
% accuracy %QPSO輸出最優參數對應的驗證集識別率等于best_accuracy=1-gbest
% accuracy2 %QPSO輸出最優參數對應的測試集識別率等于best_accuracy2=1-gbest2
%% 載入數據
clear
global X
X=[];
load wound_data_max
% %% 歸一化
% X1=mapminmax(wound_data_max',0,1); %要進行一次轉置,這樣的歸一化是對列(也就是每個傳感器響應曲線)的歸一化,也有的是對每一次采樣得到的數據進行歸一化。
% X1=X1';
X=wound_data_max;
%%
Swarmsize=20; %種群規模
particlesize=2; %待優化的參數個數
LoopCount=200; %迭代次數
W=rand(Swarmsize,particlesize);
tic %計時開始
for i=1:Swarmsize
lbest(i)=inf;
end % the values of local fitness
gbest=inf; % the valuse of global fitness
Pl=W; % storgae W value to P, the best local eight values
Pg=W(1,:); % the best adaptation weight values (mininum mean square error)
%% The starting of Particle Swarm Optimization Algorithm
for curCount=1:LoopCount
%calculate the adapting value
for i=1:Swarmsize
[err,y,z]= fit_sqpso_m_rbf_LOO_2(W(i,:)); %對應的要優化的函數的名稱,本論文中對應的就是fit_sqpso_fda_m_svm,fit_sqpso_kfda_m_svm等六個函數。
%err是錯誤率
%a是矩陣,包含兩列第一列是給出的標簽類別信息,第二列是分類器預測出的標簽類別信息
Validation_err(curCount,i)=err; %每一次迭代每一個粒子的留一法錯誤率
Position{curCount,i}=W(i,:); %每一次迭代每一個粒子的位置,即所尋找的參數
J(i)=err; %驗證集錯誤率
zz1(i,:)=y; %第i個粒子時80個樣本的實際標簽
zz2(i,:)=z; %第i個粒子時80個樣本的預測標簽
if lbest(i)>J(i)
lbest(i)=J(i); %每個粒子到目前為止的最優值
Pl(i,:)=W(i,:); %Updated local optimal
end
end
% Search global optimal weight
[fitness, index]=sort(J); % arrange in order of size from mininum to maxinum
if gbest>fitness(1)
gbest=fitness(1); %到目前為止的全局最優值
Pg=W(index(1),:); %到目前為止的取得全局最優值的最優參數
z1_best=zz1(index(1),:); %到目前為止的全局最優值對應的80個樣本實際標簽
z2_best=zz2(index(1),:); %到目前為止的全局最優值對應的80個樣本預測標簽
end
BestFitness(curCount,:)=gbest; %每一次迭代得到的全局最小誤差,即每一代中適應度函數值最小的一個
BestPosition(curCount,:)=Pg; %每一次迭代得到的對應全局最小誤差的最優參數
Bestlabel1(curCount,:)=z1_best; %每一次迭代得到的80個樣本實際標簽
Bestlabel2(curCount,:)=z2_best; %每一次迭代得到的80個樣本預測標簽
%save('gbest.txt','gbest','Pg','z1_best','z2_best','-ascii','-double')
% Expressions of updated location and speed
for i=1:particlesize
P=0;
for j=1:Swarmsize
P=P+Pl(j,i);
end
Mbest(i)=P/Swarmsize;
end
% Updated particle locations
beta=0.5+0.5*(LoopCount-curCount)/LoopCount;
for i=1:Swarmsize
for j=1:particlesize
fai1=rand;
fai2=rand;
% p=(fai1*Pl(i,j)+fai2*Pg(j))/(fai1+fai2);
p=fai1*Pl(i,j)+(1-fai2)*Pg(j);
u=rand;
if u>0.5
W(i,j)=p+beta*abs(Mbest(j)-W(i,j))*log(1/u);
else
W(i,j)=p-beta*abs(Mbest(j)-W(i,j))*log(1/u);
end
end
end
if curCount==LoopCount
best_position=Pg; %最優參數值
best_accuracy=1-gbest; %全局最大值
best_actual_lable=z1_best;
best_test_lable=z2_best;
% disp('times of iteration is not enough');
end
end
%best_fitness=BestFitness(curCount); %適應度函數最小取值
% plot( BestFitness,'o') %通過曲線顯示整個過程fitness函數的走勢
% load train;y1=[y;y;y];Fs=5000;wavplay(y1,Fs); %起到提醒的作用,表示程序已經運行完畢
t=toc; %計時結束并且將時間值返回給t
save workspace_qpso_m_rbf_LOO(2)
復制代碼
所有資料51hei提供下載:
PSO.zip
(25.99 KB, 下載次數: 13)
2019-3-12 19:06 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1