• 大小: 3KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-05-21
  • 语言: Matlab
  • 标签: PSO  RBF  

资源简介

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


评论

共有 条评论