北京想象力网站建设公司,茂名网站建设服务,深圳营销型网站建设案例,黑科技软件合集网站大家好#xff0c;我是带我去滑雪#xff01; 基于粒子群优化的BP神经网络算法#xff08;Particle Swarm Optimization Backpropagation Neural Network#xff0c;PSO-BPNN#xff09;是一种利用粒子群优化算法优化BP神经网络的算法。它将BP神经网络的权重和偏置值作为粒… 大家好我是带我去滑雪 基于粒子群优化的BP神经网络算法Particle Swarm Optimization Backpropagation Neural NetworkPSO-BPNN是一种利用粒子群优化算法优化BP神经网络的算法。它将BP神经网络的权重和偏置值作为粒子群的位置并利用PSO算法来搜索最优解。该算法具体许多优点例如1、能够在搜索过程中不陷入局部最优解而是更有可能找到全局最优解或者接近全局最优解的解2、可以通过利用粒子群的速度来调整BP神经网络的权重和偏置值使得网络能够更快地优化3、可以通过直接根据网络性能来更新权重和偏置值避免了梯度消失问题4、由于采用了随机性初始化的粒子群可以减轻对初始值的依赖使得算法更加稳定和鲁棒5、PSO-BP算法的粒子群可以并行运行每个粒子都可以独立进行计算和更新。这使得算法能够有效利用并行计算的优势加速了训练过程。 PSO-BP神经网络算法的基本步骤 初始化粒子群的位置和速度。每个粒子的位置表示BP神经网络的权重和偏置值速度表示更新的步长 对于每个粒子根据当前位置计算网络的输出并计算误差例如均方误差 根据每个粒子的误差评估其适应度适应度可以使用误差的倒数或其他评价指标来表示 更新每个粒子的最优位置和最优适应度。如果当前适应度优于历史最优适应度则更新最优位置 更新每个粒子的速度和位置。速度的更新考虑了个体经验和群体共享经验以及随机项使得粒子能够在搜索空间中进行探索和利用 重复步骤2到步骤5直到满足停止条件例如达到最大迭代次数或达到期望的网络性能。 下面开始代码实战 clc; clear; tic close all; load(basket.mat)#导入数据 P trains(:,1:end-1) ; T trains(:,end) ; P_test tests(:,1:end-1) ; T_test tests(:,end) ; cur_season pred ; inputnumsize(P,2); hiddennum2*inputnum1; outputnumsize(T,2); w1numinputnum*hiddennum; w2numoutputnum*hiddennum; Nw1numhiddennumw2numoutputnum; nVarN; VarSize[1,nVar]; VarMin-0.5; VarMax0.5; MaxIt200; nPop359; w1; wdamp0.99; c11.5; c22.0; VelMax0.1*(VarMax-VarMin); VelMin-VelMax; empty_particle.Position[]; empty_particle.Cost[]; empty_particle.Velocity[]; empty_particle.Best.Position[]; empty_particle.Best.Cost[]; particlerepmat(empty_particle,nPop,1); GlobalBest.Costinf; for i1:nPop particle(i).Positionunifrnd(VarMin,VarMax,VarSize); particle(i).Velocityzeros(VarSize); particle(i).CostBpFunction(particle(i).Position,P,T,hiddennum,P_test,T_test); particle(i).Best.Positionparticle(i).Position; particle(i).Best.Costparticle(i).Cost; if particle(i).Best.CostGlobalBest.Cost GlobalBestparticle(i).Best; end end BestCostzeros(MaxIt,1); for it1:MaxIt for i1:nPop particle(i).Velocity w*particle(i).Velocity ... c1*rand(VarSize).*(particle(i).Best.Position-particle(i).Position) ... c2*rand(VarSize).*(GlobalBest.Position-particle(i).Position); particle(i).Velocity max(particle(i).Velocity,VelMin); particle(i).Velocity min(particle(i).Velocity,VelMax); particle(i).Position particle(i).Position particle(i).Velocity; IsOutside(particle(i).PositionVarMin | particle(i).PositionVarMax); particle(i).Velocity(IsOutside)-particle(i).Velocity(IsOutside); particle(i).Position max(particle(i).Position,VarMin); particle(i).Position min(particle(i).Position,VarMax); particle(i).CostBpFunction(particle(i).Position,P,T,hiddennum,P_test,T_test); if particle(i).Costparticle(i).Best.Cost particle(i).Best.Positionparticle(i).Position; particle(i).Best.Costparticle(i).Cost; if particle(i).Best.CostGlobalBest.Cost GlobalBestparticle(i).Best; end end end BestCost(it)GlobalBest.Cost; disp([Iteration num2str(it) : Best Cost num2str(BestCost(it))]); ww*wdamp; end BestSolGlobalBest; %% Results figure; %plot(BestCost,LineWidth,7); semilogy(BestCost,LineWidth,7); xlabel(Number of iterations) ylabel(The variation of the error) title(Evolution) grid on; fprintf([ Optimal initial weight and threshold:\n,num2str(BestSol.Position),\n Minimum error,num2str(BestSol.Cost),\n]) cur_testzeros(size(cur_season,1),1); [~,bestCur_sim]BpFunction(BestSol.Position,P,T,hiddennum,cur_season,cur_test); probsoftmax(bestCur_sim); disp([1次尝试通过游戏的概率为 ,num2str(prob(1))]); disp([2次尝试通过游戏的概率,num2str(prob(2))]); disp([3次尝试通过游戏的概率,num2str(prob(3))]); disp([4次尝试通过游戏的概率,num2str(prob(4))]); disp([5次尝试通过游戏的概率,num2str(prob(5))]); disp([6次尝试通过游戏的概率,num2str(prob(6))]); disp([7次以上尝试通过游戏的概率,num2str(prob(7))]); toc function [err,T_sim]BpFunction(x,P,T,hiddennum,P_test,T_test) inputnumsize(P,7); outputnumsize(T,7); [p_train,ps_train]mapminmax(P,0,1); p_testmapminmax(apply,P_test,ps_train); [t_train,ps_output]mapminmax(T,0,1); netnewff(p_train,t_train,hiddennum); net.trainParam.epochs1000; net.trainParam.goal1e-3; net.trainParam.lr0.01; net.trainParam.showwindowfalse; w1numinputnum*hiddennum; w2numoutputnum*hiddennum; W1x(1:w1num); B1x(w1num1:w1numhiddennum); W2x(w1numhiddennum1:w1numhiddennumw2num); B2x(w1numhiddennumw2num1:w1numhiddennumw2numoutputnum); net.iw{1,1}reshape(W1,hiddennum,inputnum); net.lw{2,1}reshape(W2,outputnum,hiddennum); net.b{1}reshape(B1,hiddennum,1); net.b{2}reshape(B2,outputnum,1); net train(net,p_train,t_train); t_sim sim(net,p_test); T_sim1 mapminmax(reverse,t_sim,ps_output); T_simT_sim1; errnorm(T_sim-T_test); index0 T_sim0; index1 T_sim1; penalty1000*abs(sum(T_sim(index0)))1000*sum(T_sim(index1)-1); errerrpenalty; end 需要数据集的家人们可以去百度网盘永久有效获取
链接https://pan.baidu.com/s/1E59qYZuGhwlrx6gn4JJZTg?pwd2138 提取码2138 更多优质内容持续发布中请移步主页查看。 点赞关注,下次不迷路