【优化预测】基于matlab粒子群算法优化BP神经网络(多输入多输出)【含Matlab源码 1418期】

您所在的位置:网站首页 matlab智能算法清华大学 【优化预测】基于matlab粒子群算法优化BP神经网络(多输入多输出)【含Matlab源码 1418期】

【优化预测】基于matlab粒子群算法优化BP神经网络(多输入多输出)【含Matlab源码 1418期】

#【优化预测】基于matlab粒子群算法优化BP神经网络(多输入多输出)【含Matlab源码 1418期】| 来源: 网络整理| 查看: 265

一、粒子群算法及BP神经网络简介

由于BP神经网络在应用过程中初始权值和阈值随机选取,容易出现局部收敛极小点,从而降低拟合效果,为了解决这个问题,采用PSO优化BP神经网络(PSO-BP)算法的初始权值和阈值,解决局部极小点问题,提高BP神经网络算法的预测精度。在PSO中,整个搜索空间的维数D。第i个粒子的位置见式(3)。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 图2 PSO-BP的算法流程

二、部分源代码 %粒子群优化多输入多输出BP神经网络代码 clear clc tic global SamIn SamOut HiddenUnitNum InDim OutDim TrainSamNum %% 导入训练数据 data = xlsread('data.xlsx'); [data_m,data_n] = size(data);%获取数据维度 P = 80; %百分之P的数据用于训练,其余测试 Ind = floor(P * data_m / 100); train_data = data(1:Ind,1:4)'; train_result = data(1:Ind,6:7)'; %% 初始化参数 [InDim,TrainSamNum] = size(train_data);% 学习样本数量 [OutDim,TrainSamNum] = size(train_result); HiddenUnitNum = 8; % 隐含层神经元个数 [SamIn,PS_i] = mapminmax(train_data,0,1); % 原始样本对(输入和输出)初始化 [SamOut,PS_o] = mapminmax(train_result,0,1); W1 = HiddenUnitNum*InDim; % 初始化输入层与隐含层之间的权值 B1 = HiddenUnitNum; % 初始化输入层与隐含层之间的阈值 W2 = OutDim*HiddenUnitNum; % 初始化输出层与隐含层之间的权值 B2 = OutDim; % 初始化输出层与隐含层之间的阈值 L = W1+B1+W2+B2; %粒子维度 %% *********初始化 M=100; %种群规模 %初始化粒子位置 X=rand(M,L); c1=2; %学习因子 c2=2; wmax=0.9;%最大最小惯性权重 v=zeros(M,L);%初始化速度 %*******全局最优粒子位置初始化 fmin=inf; for i=1:M if fx1e3 v(i,:)=rand(size(v(i,:))); end %*******更新粒子位置 X(i,:)=X(i,:)+v(i,:); end %更新pbest和gbest for i=1:M end if f(X(i,:))


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3