• 大小: 6KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-24
  • 语言: Matlab
  • 标签: pso  BP  MATLAB  

资源简介

粒子群算法PSO优化BP神经网络的MATLAB代码

资源截图

代码片段和文件信息

function psobp 
% BP neural network trained by PSO algorithm
% Copyright by Deng Da-Peng @ 2005
% Email: rexdeng@163.com
% You can change and distribute this code freely for academic usage
% Business usage is strictly prohibited
clc
clear all

AllSamIn=...; % Add your all input data
AllSamOut-...; % Add your all output data 

% Pre-processing data with premnmx you can use other functions
global minAllSamOut;
global maxAllSamOut;
[AllSamInnminAllSamInmaxAllSamInAllSamOutnminAllSamOutmaxAllSamOut] = premnmx(AllSamInAllSamOut);
% draw 10 percent from all samples as testing samples,the rest as training samples
i=[10:10:1000];
TestSamIn=[];
TestSamOut=[];
for j=1:100
TestSamIn=[TestSamInAllSamInn(:i(j))]; 
TestSamOut=[TestSamOutAllSamOutn(:i(j))];
end
TargetOfTestSam=...; % add reall output of testing samples
TrainSamIn=AllSamInn;
TrainSamOut=AllSamOutn;
TrainSamIn(:i)=[];
TrainSamOut(:i)=[];
% Evaluating Sample
EvaSamIn=...
EvaSamInn=tramnmx(EvaSamInminAllSamInmaxAllSamIn); % preprocessing

global Ptrain;
Ptrain = TrainSamIn;
global Ttrain;
Ttrain = TrainSamOut;

Ptest = TestSamIn;
Ttest = TestSamOut;

% Initialize BPN parameters
global indim;
indim=5;
global hiddennum;
hiddennum=3;
global outdim;
outdim=1;

% Initialize PSO parameters
vmax=0.5; % Maximum velocity
minerr=0.001; % Minimum error
wmax=0.90;
wmin=0.30;
global itmax; %Maximum iteration number
itmax=300;
c1=2;
c2=2;
for iter=1:itmax
W(iter)=wmax-((wmax-wmin)/itmax)*iter; % weight declining linearly
end 
% particles are initialized between (ab) randomly
a=-1; 
b=1;
%Between (mn) (which can also be started from zero)
m=-1;
n=1;
global N; % number of particles
N=40;
global D; % length of particle
D=(indim+1)*hiddennum+(hiddennum+1)*outdim;
% Initialize positions of particles
rand(‘state‘sum(100*clock));
X=a+(b-a)*rand(ND1);
%Initialize velocities of particles
V=m+(n-m)*rand(ND1);

global fvrec;
MinFit=[];
BestFit=[];

%Function to be minimized performance functioni.e.mse of net work
global net;
net=newff(minmax(Ptrain)[hiddennumoutdim]{‘tansig‘‘purelin‘});
fitness=fitcal(XnetindimhiddennumoutdimDPtrainTtrainminAllSamOutmaxAllSamOut);
fvrec(:11)=fitness(:11);
[CI]=min(fitness(:11));
MinFit=[MinFit C];
BestFit=[BestFit C];
L(:11)=fitness(:11); %record the fitness of particle of every iterations
B(111)=C; %record the minimum fitness of particle
gbest(1:1)=X(I:1); %the global best x in population

%Matrix composed of gbest vector 
for p=1:N 
G(p:1)=gbest(1:1);
end
for i=1:N;
pbest(i:1)=X(i:1);
end
V(::2)=W(1)*V(::1)+c1*rand*(pbest(::1)-X(::1))+c2*rand*(G(::1)-X(::1));
%V(::2)=cf*(W(1)*V(::1)+c1*rand*(pbest(::1)-X(::1))+c2*rand*(G(::1)-X(::1)));
%V(::2)=cf*(V(::1)+c1*rand*(pbest(::1)-X(::1))+c2*rand*(G(::1)-X(::1)));
% limits velocity of particles by vmax
for ni=1:N
for di=1:D
if V(nidi2)>vmax

评论

共有 条评论