【预测模型】基于粒子群算法优化BP神经网络实现预测多输入单输出matlab源码

1 模型

针对于BP神经网络预测模型,收敛速度慢,精度较低,容易陷入局部极小值等缺点,提出了一种粒子群优化BP神经网络预测模型的算法.在该算法中,粒子群优化BP神经网络预测模型的初始权值和阈值,然后训练BP神经网络预测模型并预测.将该算法应用到几个典型的混沌时间序列预测.实验结果表明,该算法明显提高BP神经网络预测模型的收敛速度和预测模型的精度,减少陷入局部极小的可能.

1.1 BP神经网络

【预测模型】基于粒子群算法优化BP神经网络实现预测多输入单输出matlab源码_第1张图片

【预测模型】基于粒子群算法优化BP神经网络实现预测多输入单输出matlab源码_第2张图片

1.2 粒子群算法

【预测模型】基于粒子群算法优化BP神经网络实现预测多输入单输出matlab源码_第3张图片

【预测模型】基于粒子群算法优化BP神经网络实现预测多输入单输出matlab源码_第4张图片

2 部分代码

%% PSO-BP神经网络
%% 清空环境
clear all;
close all;
clc;
data=xlsread('Test.xlsx','Sheet1','A2:G46');%读取数据
[M,NN]=size(data);%M是样本数,N是变量数
inputn=data(:,1:NN-1)';%训练样本输入
outputn=data(:,NN)';%训练样本输出
%节点个数
inputnum=NN-1;%输入个数
hiddennum=12;%隐藏层
outputnum=1;%输出个数
%构建网络
net=newff(inputn,outputn,hiddennum);
tic
%% 粒子群
numWolf=60;
limit = [-10, 10;];                % 设置位置参数限制(矩阵的形式可以多维)
vlimit = [-0.01, 0.01;];               % 设置速度限制
c_1 = 0.8;                        % 惯性权重
c_2 = 0.5;                       % 自我学习因子
c_3 = 0.5;                       % 群体学习因子 
N=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum;
x = zeros(numWolf,N);
% 初始化种群
for i = 1:numWolf
   x(i,:)=rands(1,N);
%     fitness(i)=fun(x(i,:),inputnum,hiddennum,outputnum,net,inputn,outputn);
end
% [xm,LeadWolf] = min(fitness);
% ym = x(LeadWolf,:);
% globalMin = xm;
v = 0.1*rand(numWolf,N);                  % 初始种群的速度
xm = x;                          % 每个个体的历史最佳位置
ym = zeros(1, N);                % 种群的历史最佳位置
fxm = 100000*ones(numWolf, 1);               % 每个个体的历史最佳适应度
fym = 100000;                      % 种群历史最佳适应度
%% 粒子群工作
iter = 1;

end

time = toc;
disp(['用时= ',num2str(time)])
X=ym;


%% BP网络训练
%网络进化参数
net.trainParam.epochs=2000;%bp神经网络的代数
net.trainParam.lr=0.1;
%net.trainParam.goal=0.00001;

%网络训练
[net,per2]=train(net,inputn,outputn);
%% BP网络预测
% load data inputn_test output_test
inputn_test=inputn;%测试数据输入
output_test=outputn;%测试数据输出
an=sim(net,inputn_test);%预测
error=(an-output_test);%误差
error_xiangdui=(an-output_test)./output_test;%相对误差
figure(1)
plot(error_xiangdui,'ko-')
ylabel('相对误差值')
title('粒子群优化BP神经网络')
figure(2)
plot(error,'ro-')
ylabel('误差值')
title('粒子群优化BP神经网络')
figure(3)
plot(output_test,'r + -');
hold on;
plot(an,'b * -')
hold off
legend('真实值','预测值');
title('粒子群优化BP神经网络')
figure(4)
plot( record)
xlabel('迭代次数')
ylabel('均方差值')

3 仿真结果

【预测模型】基于粒子群算法优化BP神经网络实现预测多输入单输出matlab源码_第5张图片

【预测模型】基于粒子群算法优化BP神经网络实现预测多输入单输出matlab源码_第6张图片

【预测模型】基于粒子群算法优化BP神经网络实现预测多输入单输出matlab源码_第7张图片

​4 参考文献

[1]卢辉斌, 李丹丹, 孙海艳. PSO优化BP神经网络的混沌时间序列预测[J]. 计算机工程与应用, 2015, 51(2):224-229.

【预测模型】基于粒子群算法优化BP神经网络实现预测多输入单输出matlab源码_第8张图片

你可能感兴趣的:(预测模型,matlab,神经网络,算法)