資源簡介
for i=1:popcount
pop(i,:)=rand(1,9);%初始化粒子位置
V(i,:)=rand(1,9);%初始化粒子速度
%計算粒子適應度值
Center=pop(i,1:3);
SP=pop(i,4:6);
W=pop(i,7:9);
Distance=dist(Center',SamIn);
SPMat=repmat(SP',1,SamNum);%repmat具體作用
UnitOut=radbas(Distance./SPMat);
NetOut=W*UnitOut;%網絡輸出
Error=SamOut-NetOut;%網絡誤差
%SSE=sumsqr(Error);
%fitness(i)=SSE;
RMSE=sqrt(sumsqr(Error)/SamNum);
fitness(i)=RMSE;
%fitness(i)=fun(pop(i,:));
end

代碼片段和文件信息
clc;
clear;
tic;
SamNum=100;?????????????????????????%訓練樣本數
TargetSamNum=100;???????????????????%測試樣本數
InDim=1;????????????????????????????%樣本輸入維數
UnitNum=2;??????????????????????????%隱節點數
MaxEpoch=1200;??????????????????????%最大訓練次數
%E0=0.2;?????????????????????????????%目標誤差
gbesthistory=[];
%?根據目標函數獲得樣本輸入輸出(訓練樣本)
rand(‘state‘sum(100*clock));
%NoiseVar=0.0005;
%Noise=NoiseVar*randn(1SamNum);
load?data1
SamIn=c1‘;
%SamIn=8*rand(1SamNum)-4;
SamOutNoNoise=1.1*(1-SamIn+2*SamIn.^2).*exp(-SamIn.^2/2);
%SamOut=SamOutNoNoise+Noise;
SamOut=SamOutNoNoise;
%測試樣本
load?data2
TargetIn=c2‘;
%TargetIn=-4:0.08:4;
TargetOut=1.1*(1-TargetIn+2*TargetIn.^2).*exp(-TargetIn.^2/2);
figure
hold?on
grid
%plot(SamInSamOut‘k*‘)
plot(TargetInTargetOut‘k*‘)
xlabel(‘Input?x‘);
ylabel(‘Output?y‘);
%%以上程序沒問題
%粒子群算法中的兩個參數
c1?=?1.49445;
c2?=?1.49445;
popcount=10;???%粒子數
poplength=6;??%粒子維數
Wstart=0.9;%初始慣性權值
Wend=0.2;%迭代次數最大時慣性權值
%個體和速度最大最小值
Vmax=1;
Vmin=-1;
popmax=4;
popmin=-4;
%粒子位置速度和最優值初始化
for?i=1:popcount
????pop(i:)=rand(19);%初始化粒子位置
????V(i:)=rand(19);%初始化粒子速度
????%計算粒子適應度值
????Center=pop(i1:3);
????SP=pop(i4:6);?
????W=pop(i7:9);
????Distance=dist(Center‘SamIn);
????SPMat=repmat(SP‘1SamNum);%repmat具體作用
????UnitOut=radbas(Distance./SPMat);
????NetOut=W*UnitOut;%網絡輸出
????Error=SamOut-NetOut;%網絡誤差
????%SSE=sumsqr(Error);
????%fitness(i)=SSE;
????RMSE=sqrt(sumsqr(Error)/SamNum);
????fitness(i)=RMSE;
????%fitness(i)=fun(pop(i:));
end
%適應度函數(適應度值為RBF網絡均方差)
[bestfitness?bestindex]=min(fitness);
gbest=pop(bestindex:);%全局最優值
pbest=pop;%個體最優值
pbestfitness=fitness;%個體最優適應度值
gbestfitness=bestfitness;%全局最優適應度值
%迭代尋優
for?i=1:MaxEpoch
???Vmax=1.00014^(-i);
???Vmin=-1.00014^(-i);
????for?j=1:popcount
???????%?if?(fitness(j) ???????????%?S(j)=0;
????????%end
????????%S(j)=1-(fitness(j)/100)^2;
???????%?GW(j)=Wstart-S(j)*(Wstart-Wend);
???????%?GW(j)=Wend+(GW(j)-Wend)*(MaxEpoch-i)/MaxEpoch;
????????GW=Wstart-(Wstart-Wend)*i/MaxEpoch;
????????%速度更新(第一種方法精度最高)
????????V(j:)?=?1.000009^(-i)*(gbestfitness/fitness(j)+2)*rand*V(j:)?+?c1*rand*(pbest(j:)?-?pop(j:))?+?c2*rand*(gbest?-?pop(j:));
????????%V(j:)?=?GW*((fitness(j)/2000)^2+1)*rand*V(j:)?+?c1*rand*(pbest(j:)?-?pop(j:))?+?c2*rand*(gbest?-?pop(j:));
????????%V(j:)?=?GW*V(j:)?+?c1*rand*(pbest(j:)?-?pop(j:))?+?c2*rand*(gbest?-?pop(j:));
????????%V(j:)?=?0.9*V(j???:)?+?c1*rand*(pbest(j:)?-?pop(j:))?+?c2*rand*(gbest?-?pop(j:));
????????%V(j:)?=?0.9*1.0003^(-j)*?V(j:)?+?c1*rand*(pbest(j:)?-?pop(j:))?+?c2*rand*(gbest?-?pop(j:));
????????%V(j:)?=?(gbestfitness/(exp(-fitness(j))+1)+0.5)*rand*V(j:)?+?c1*rand*(pbest(j:)?-?pop(j:))?+?c2*rand*(gbest?-?pop(j:));
????????V(jfind(V(j:)>Vmax))=Vmax;
????????V(jfind(V(j:) ????????
????????%粒子更新
????????pop(j:)=pop(j:)+0.5*V(j:);
????????pop(jfind(pop(j:)>popmax))=popmax;
????????pop(jfind(pop(j:)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????538??2014-07-14?22:19??PSO-RBF\data1.mat
?????文件????????527??2014-07-14?22:20??PSO-RBF\data2.mat
?????文件???????5271??2014-07-15?08:43??PSO-RBF\PSORBF.m
?????目錄??????????0??2015-04-16?12:35??PSO-RBF
-----------?---------??----------?-----??----
?????????????????6336????????????????????4
- 上一篇:商人過河MATLAB.rar
- 下一篇:hurst指數的MATLAB實現
評論
共有 條評論