粒子群算法优化BP和Elman神经网络-matlab源码
生活随笔
收集整理的這篇文章主要介紹了
粒子群算法优化BP和Elman神经网络-matlab源码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
用于預測,輸入為3特征值,輸出為1輸出。內附數據集,拿來直接用,結構清晰,注釋詳細,全在一個程序里,方便對比。
本次用了BP、Elman神經網絡和PSO-BP、PSO-Elman神經網絡對比。
部分數據集:
部分代碼:
clear;clc;close all; load data4.mat; [train_x,inputps]=mapminmax(train_x); test_x=mapminmax('apply',test_x,inputps); [train_y,outputps]=mapminmax(train_y); test_y=mapminmax('apply',test_y,outputps); inputnum=3;hiddennum=5;outputnum=1;epoch_bp_elman=5000; dim=26;%=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum; N=50;%種群數量 epoch_pso=50;%粒子群算法迭代次數 epoch_bp=5000;epoch_elman=5000;%BP、Elman神經網絡迭代次數 w=0.8;c1=1.5;c2=1.5; Xmax=20;Xmin=-20;%粒子群x上下限 Vmax=10;Vmin=-10;%速度v上下限 %初始化種群個體位置和速度 x_bp=rand(N,dim)*(Xmax-Xmin)+Xmin;%初始BP v_bp=rand(N,dim)*(Xmax-Xmin)+Xmin; x_elman=rand(N,dim)*(Xmax-Xmin)+Xmin;%初始Elman v_elman=rand(N,dim)*(Xmax-Xmin)+Xmin; %初始化個體、全局最優位置和最優值(速度) %PSOBP net_bp=newff(train_x,train_y,hiddennum);%創建初始BP神經網絡,給目標函數用 p_bp_local=x_bp;%當前BP種群矩陣 pbest_bp_local=ones(N,1);%當前BP種群適應度 g_bp_quanju=ones(1,dim);%全局BP種群矩陣 gbest_bp_quanju=1e5;%全局BP種群適應度初始設置為10W %粒子群算法迭代開始 ......figure(1); plot(1:size(yy_bp,2),yy_bp,'b-'); title('PSO收斂曲線','fontsize',12); xlabel('迭代次數','fontsize',12);ylabel('適應度值','fontsize',12); %把粒子群算法迭代結果最優值賦給神經網絡當做權重和偏置 w1_bp=x_bp(1:inputnum*hiddennum); B1_bp=x_bp(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum); w2_bp=x_bp(inputnum*hiddennum+hiddennum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum); B2_bp=x_bp(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum); w1_elman=x_elman(1:inputnum*hiddennum); B1_elman=x_elman(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum); w2_elman=x_elman(inputnum*hiddennum+hiddennum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum); B2_elman=x_elman(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum);figure(2); plot(1:size(error_psobp,2),error_psobp,'r',1:size(error_bp,2),error_bp,'m--',1:size(error_psoelman,2),error_psoelman,'g-',1:size(error_elman,2),error_elman,'c--');% title('預測誤差','fontsize',12); xlabel('樣本數量','fontsize',12);ylabel('誤差值','fontsize',12); legend('PSO-BP誤差','BP誤差','PSO-Elman誤差','Elman誤差'); figure(3); plot(1:size(test_x,2),result_bp,'m-',1:size(test_x,2),result_sim_bp,'r-',1:size(test_x,2),test_y,'b-',1:size(result_sim_elman,2),result_sim_elman,'g-',1:size(result_elman,2),result_elman,'c--') legend('BP預測值','PSO-BP預測值','真實值','PSO+Elman預測值','Elman預測值');?粒子群算法收斂曲線圖:
預測結果:
源碼下載地址:
https://www.kuaifaka.net/purchasing?link=PklaHRa-------------------------------------------------------我的其他代碼--------------------------------------------------------
粒子群算法優化BP神經網絡-matlab源碼
頭腦風暴算法優化BP神經網絡-matlab源碼
層次聚類、k_means聚類-python源碼
Adaboost-python手推源碼不調用庫-有手就會
總結
以上是生活随笔為你收集整理的粒子群算法优化BP和Elman神经网络-matlab源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Exynos4412 裸机开发 —— I
- 下一篇: ubuntu 下安装五笔输入法