【预测模型】基于粒子群算法优化BP神经网络实现数据预测matlab源码

1  BP神经网络预测算法简介

模型介绍见这里。

2 演示代码


clc;clear;close all;

%% 初始化种群

N = 500; % 初始种群个数

d = 24; % 空间维数

ger = 300; % 最大迭代次数


% 设置位置参数限制(矩阵的形式可以多维)

vlimit = [-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;

-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;

-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;

-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;]; % 设置速度限制

c_1 = 0.8; % 惯性权重

c_2 = 0.5; % 自我学习因子

c_3 = 0.5; % 群体学习因子

for i = 1:d

x(:,i) = limit(i, 1) + (limit(i, 2) - limit(i, 1)) * rand(N, 1);%初始种群的位置

end

v = 0.5*rand(N, d); % 初始种群的速度

xm = x; % 每个个体的历史最佳位置

ym = zeros(1, d); % 种群的历史最佳位置

fxm = 100000*ones(N, 1); % 每个个体的历史最佳适应度

fym = 10000; % 种群历史最佳适应度

%% 粒子群工作

iter = 1;

times = 1;

record = zeros(ger, 1); % 记录器

while iter <= ger

for i=1:N

fx(i) = calfit(x(i,:)) ; % 个体当前适应度

end

for i = 1:N

if fxm(i) > fx(i)

fxm(i) = fx(i); % 更新个体历史最佳适应度

xm(i,:) = x(i,:); % 更新个体历史最佳位置

end

end

if fym > min(fxm)

[fym, nmax] = min(fxm); % 更新群体历史最佳适应度

ym = xm(nmax, :); % 更新群体历史最佳位置

end

v = v * c_1 + c_2 * rand *(xm - x) + c_3 * rand *(repmat(ym, N, 1) - x);% 速度更新

% 边界速度处理

for i=1:d

for j=1:N

if v(j,i)>vlimit(i,2)

v(j,i)=vlimit(i,2);

end

if v(j,i) < vlimit(i,1)

v(j,i)=vlimit(i,1);

end

end

end

x = x + v;% 位置更新

% 边界位置处理

for i=1:d

for j=1:N

if x(j,i)>limit(i,2)

x(j,i)=limit(i,2);

end

if x(j,i) < limit(i,1)

x(j,i)=limit(i,1);

end

end

end

record(iter) = fym;%最大值记录

iter = iter+1;

times=times+1;

end

disp(['最小值:',num2str(fym)]);

disp(['变量取值:',num2str(ym)]);

figure

plot(record)

xlabel('迭代次数');

ylabel('适应度值')

3 仿真结果

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

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

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

4 参考文献

《基于BP神经网络的宁夏水资源需求量预测》

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