Press "Enter" to skip to content

【FNN回归预测】基于matlab粒子群优化前馈神经网络婚姻和离婚数据回归预测【含Matlab源码 2069期】

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

一、粒子群优化前馈神经网络简介

 

1 前馈神经网络FNN

 

前馈神经网络FNN是解决非线性问题的很好模型,它通过梯度下降算法进行网络训练。FNN与时间序列法等传统方法相比,能够更好地来描述问题的非线性特性;与支持向量机等智能方法相比,其网络结构简单,不需要人为选定惩罚因子和损失因子,结构可以人为设定,归纳性能更好更灵活。将BP神经网络引入到短期负荷预测中。将径向基函数(Radial Basis Function,RBF)神经网络引入到短期负荷预测中。将模糊神经网络引入到负荷预测中。它们都属于FNN,并且取得了很好的预测效果。虽然FNN应用广泛,结构简单,层次清晰,但是其缺陷却不可忽视。前馈神经网络采用传统的训练算法,极易陷入局部最小,并且训练时间长,其本质是静态网络,无法很好地表征系统的动态特性。

 

粒子群算法是一种基于群体智能行为的启发式随机搜索优化方法,于1995年由Kennedy和Eberhart提出。

 

2 标准粒子群算法

 

假设在D维搜索空间有一群体,其粒子数为m;xi=(xi1,xi2,…,xiD)为第i个粒子的位置;vi=(vi1,vi2,…,viD)为第i个粒子的飞行速度;Pi=(pi1,Pi2,…,piD)为第i个粒子经历过的最好位置,即个体适应度值最优;Pg=(pg1,pg2,…,pgD)为所有粒子经历过的最好位置,即群体适应度值最优。每次迭代粒子根据式(5)更新自己的速度和位置:

 

式中:w为惯性权重,取0.1~0.9;c1和c2为学习因子,一般均取2;r1和r2为[0,1]之间随机数。式(5)由3部分组成,第一部分为粒子之前的速度;第二部分为“认知”部分,代表粒子本身的思考,仅考虑自身的经验;第三部分为“社会”部分,代表着粒子之间的社会信息共享。

 

粒子在搜索过程中,速度和位置都有一定的限制,即vmin≤vi≤vmax,xmin≤xi≤xmax,如果超出,就取边界值。

 

二、部分源代码

 

%———————————————————————–

 

clear;

 

close all

 

Data=load(‘Marriage_Divorce_DB.mat’);

 

Inputs=Data.Marriage_Divorce_DB(:,1:end-1);

 

Targets=Data.Marriage_Divorce_DB(:,end);

 

%% Learning

 

n = 9; % Neurons

 

%—————————————-

 

% ‘trainlm’ Levenberg-Marquardt

 

% ‘trainbr’ Bayesian Regularization (good)

 

% ‘trainrp’ Resilient Backpropagation

 

% ‘traincgf’ Fletcher-Powell Conjugate Gradient

 

% ‘trainoss’ One Step Secant (good)

 

% ‘traingd’ Gradient Descent

 

% Creating the NN —————————-

 

net = feedforwardnet(n,‘trainoss’);

 

%———————————————

 

% configure the neural network for this dataset

 

[net tr]= train(net,Inputs’, Targets’);

 

perf = perform(net,Inputs, Targets); % mse

 

% Current NN Weights and Bias

 

Weights_Bias = getwb(net);

 

% MSE Error for Current NN

 

Outputs=net(Inputs’);

 

Outputs=Outputs’;

 

% Final MSE Error and Correlation Coefficients (CC)

 

Err_MSE=mse(Targets,Outputs);

 

CC1= corrcoef(Targets,Outputs);

 

CC1= CC1(1,2);

 

%—————————————————–

 

%% Nature Inspired Regression

 

% Create Handle for Error

 

h = @(x) NMSE(x, net, Inputs’, Targets’);

 

sizenn=size(Inputs);sizenn=sizenn(1,1);

 

%—————————————–

 

%% Please select BBO (bbo) or PSO (pso)

 

[x, cost] = pso(h, sizenn*n+n+n+1);

 

%—————————————–

 

net = setwb(net, x’);

 

% Optimized NN Weights and Bias

 

getwb(net);

 

% Error for Optimized NN

 

Outputs2=net(Inputs’);

 

Outputs2=Outputs2’;

 

% Final MSE Error and Correlation Coefficients (CC)

 

Err_MSE2=mse(Targets,Outputs2);

 

CC2= corrcoef(Targets,Outputs2);

 

CC2= CC2(1,2);

 

%% Plot Regression

 

figure(‘units’,‘normalized’,‘outerposition’,[0 0 1 1])

 

% Normal

 

subplot(1,2,1)

 

[population2,gof] = fit(Targets,Outputs,‘poly3’);

 

plot(Targets,Outputs,‘o’,…

 

‘LineWidth’,1,…

 

‘MarkerSize’,8,…

 

‘MarkerEdgeColor’,‘r’,…

 

‘MarkerFaceColor’,[0.3,0.9,0.1]);

 

title([‘Normal R = ’ num2str(1-gof.rmse)]);

 

hold on

 

plot(population2,‘b-’,‘predobs’);

 

xlabel(‘Targets’);ylabel(‘Outputs’); grid on;

 

ax = gca;

 

ax.FontSize = 12; ax.LineWidth=2;

 

legend({‘Normal Regression’},‘FontSize’,12,‘TextColor’,‘blue’);hold off

 

% PSO

 

subplot(1,2,2)

 

[population3,gof3] = fit(Targets,Outputs2,‘poly3’);

 

plot(Targets,Outputs2,‘o’,…

 

‘LineWidth’,1,…

 

‘MarkerSize’,8,…

 

‘MarkerEdgeColor’,‘g’,…

 

‘MarkerFaceColor’,[0.9,0.3,0.1]);

 

title([‘PSO R = ’ num2str(1-gof3.rmse)]);

 

hold on

 

plot(population3,‘b-’,‘predobs’);

 

xlabel(‘Targets’);ylabel(‘Outputs’); grid on;

 

ax = gca;

 

ax.FontSize = 12; ax.LineWidth=2;

 

legend({‘PSO Regression’},‘FontSize’,12,‘TextColor’,‘blue’);hold off

 

% Correlation Coefficients

 

fprintf(‘Normal Correlation Coefficients Is = %0.4f.
’,CC1);

 

fprintf(‘PSO Correlation Coefficients Is = %0.4f.
’,CC2);

 

三、运行结果

 

 

四、matlab版本及参考文献

 

1 matlab版本

 

2014a

 

2 参考文献

 

[1] 孙景文,常鲜戎.基于高斯混沌粒子群优化动态前馈神经网络的短期负荷预测[J].陕西电力. 2015,43(09)

 

3 备注

 

简介此部分摘自互联网,仅供参考,若侵权,联系删除

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。