Matlab PSO优化RBF的程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Matlab PSO优化RBF的程序。

找了很久,凡是能找到的都找到了。网上就没有对的。自己写的一直有问题。我有个不完整的。大家看看能不能补全:

AllSamIn=[];

AllSamOut=[];

%前向通道数据预设

global minAllSamOut;

global maxAllSamOut;

% 从总样本中抽取10%的样本作为测试样本,其余作为训练样本

[AllSamInn,minAllSamIn,maxAllSamIn,AllSamOutn,minAllSamOut,maxAllSamOut] = premnmx(AllSamIn,AllSamOut);

TesSamIn=[];

TestSamOut=[];

TargetOfTestSam=[]; %测试样本目标

TrainSamIn=AllSamInn;

TrainSamOut=AllSamOutn;

%样本评估:

EvaSamIn=[]; %样本评估输入

EvaSamInn=tramnmx(EvaSamIn,minAllSamIn,maxAllSamIn); %归一化处理

global Ptrain;

Ptrain= TrainSamIn;

global Ttrain;

Ttrain=TrainSamOut;

Ptest = TestSamIn;

Ttest = TestSamOut;

spread=1.2;

vmax=0.5; %最大速率

minerr=0.001; %适应度阈值

wmax=0.90; %惯性权重的最大值

wmin=0.30; %惯性权重的最小值

global itmax;

itmax=300; %允许的最大迭代步数

c1=2; %学习因子

c2=2; %学习因子

for iter= 1:itmax

W(iter)=wmax-((wmax-wmin)/itmax)*iter; %惯性权重下降

end

%粒子在a,b之间随机初始化:

a=-1;

b=1;

m=-1;

n=1;

global N; %粒子种群数目

N=40;

global D; %粒子群长度

D=(indim+1)*hiddennum+(hiddennum+1)*outdim;

%粒子群位置初始化:

rand('state',sum(100*clock)); %产生0-1之间的随机数,粒子在a,b(-1,1)之间初始化

X=a+(b-a)*rand(N,D,1); %产生N行D列由0-1之间的矩阵

V=m+(n-m)*rand(N,D,1); %粒子群速度在m,n即-1和1之间初始化

%粒子群优化RBF神经网络的适应度值

global fvrec;

MinFit=[]; %最小适应度

BestFit=[]; %最大适应度

global net; %建立一个待初始化的神经网络

net=newrbe(P,T,spread);

%调用fitcal函数

fitness=fitcal();

fvrec(:,1,1)=fitness(:,1,1);

[C,I]=min(fitness(:,1,1));

MinFit=[MinFit C];

BestFit=[BestFit C];

L(:,1,1)=fitness(:,1,1); %记录每次反复的例子的适应度函数

B(1,1,1)=C; %记录粒子的最小适应函数

gbest(1,:,1)=X(I,:,1); %全局极值

%粒子群优化RBF神经网络的例子速度和位置计算

V(:,:,2)=W(1)*V(:,:,1)+c1*rand*(pbest(:,:,1)-X(:,:,1))+c2*rand*(G(:,:,1)-X(:,:,1));

%用vmax限制粒子的速度,如果V>vmax则V=vmax,如果V<-vmax则V=-vmax

for ni=1:N

for di=1:D

if V(ni,di,2)>vmax

V(ni,di,2)=vmax;

elseif V(ni,di,2)<-vmax

V(ni,di,2)=-vmax;

else

V(ni,di,2)=V(ni,di,2);

end

end

X(:,:,2)=X(:,:,1)+V(:,:,2);

%粒子群优化RBF神经网络的粒子适应度值更新

fitness=fitcal(X,net,indim,hiddennum,outdim,D,Ptrain,Train,minAllSamout,maxAllSamOut);

fvrec(:,1,j)=fitness(:,1,j);

[C,I]=min(fitness(:,1,j));

MinFit=[Minfit C];

BestFit=[BestFit min(MinFit)];

L(:,1,j)=fitness(:,1,j);

B(1,1,j)=C;

gbest(1,:,j)=X(I,;,j);

[C,I]=min(B(1,1,;));

%保存gbest是已经出现过的最好粒子

if B(1,1,j)<=C

gbest(1,:,j)=gbest(1,:,j)

else

gbest(1,:,j)=gbest(1,:,I);

end

%粒子群优化RBF神经网络的速度和位置更新

V(:,:,j+1)=W(j)*V(:,:,j)+c1*rand*(pbest(:,:,j)-X(:,:,j))+c2*rand*(G(:,:,j)-X(:,:,j))

相关文档
最新文档