📄 learnrbf.m
字号:
function [parameters,e]=learnrbf(P,T,t)
%本函数完成RBF网络的参数学习过程,过程中使用具有量子行为的粒子群算法(QPSO)
[m,n]=size(P);
maxsize=1;
popsize=100;
irangew_l=-5;
irangew_r=5;
para=unifrnd(irangew_l,irangew_r,popsize,m);
pbest=para;
MSET=zeros(1,popsize);
MSE=zeros(1,maxsize);
for i=1:popsize
MSET(i)=mse(P,T,pbest(i,:),t); %mse()为计算网络在训练集上产生均方误差的函数
end
g=find(MSET==min(MSET));
gbest=pbest(g,:);
mbest=sum(pbest)/popsize;
for time=1:maxsize;
b=1.0-(time-1)/(maxsize-1)*0.5;
for i=1:popsize;
for d=1:m;
a=unifrnd(0,1);
p=a*pbest(i,d)+(1-a)*pbest(g,d);
u=unifrnd(0,1);
if unifrnd(0,1)>=0.5
para(i,d)=p-b*abs(mbest(d)-para(i,d))*log(1/u);
else
para(i,d)=p+b*abs(mbest(d)-para(i,d))*log(1/u);
end
end
if mse(P,T,para(i,:),t)<mse(P,T,pbest(i,:),t);
pbest(i,:)=para(i,:);
end
end
for i=1:popsize
MSET(i)=mse(P,T,pbest(i,:),t);
end
g=find(MSET==min(MSET));
if mse(P,T,pbest(g,:),t)<mse(P,T,gbest,t)
gbest=pbest(g,:);
end
mbest=sum(pbest)/popsize;
MSE(time)=mse(P,T,gbest,t);
end
parameters=gbest;
e=MSE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -