1 简介

传统的BP神经网络收敛速度慢,以及该算法的不完备性,易陷于局部极小,全局最优无法保证能收敛到等缺点.针对BP神经网络的缺陷,该文利用遗传算法优化BP神经网络权值和阈值,使得训练了BP神经网络预测模型得到了最优解.采用遗传算法优化BP神经网络的算法,并以此结合算法来研究非线性函数拟合的问题.从实验结果表明,基于遗传算法优化的BP神经网络的非线性函数拟合具有较强的收敛性和鲁棒性,并且有了更高的预测精度.

2 部分代码


%% 双隐含层BP神经网络

%% 清空环境变量

clc

clear


%% 训练数据预测数据提取及归一化

%下载输入输出数据

load data input output


%从1到2000间随机排序

k=rand(1,2000);

[m,n]=sort(k);


%找出训练数据和预测数据

input_train=input(n(1:1900),:)';

output_train=output(n(1:1900));

input_test=input(n(1901:2000),:)';

output_test=output(n(1901:2000));


%选连样本输入输出数据归一化

[inputn,inputps]=mapminmax(input_train);

[outputn,outputps]=mapminmax(output_train);


%% BP网络训练

% %初始化网络结构

net=newff(inputn,outputn,[5 5]);


net.trainParam.epochs=100;

net.trainParam.lr=0.1;

net.trainParam.goal=0.00004;


%网络训练

net=train(net,inputn,outputn);


%% BP网络预测

%预测数据归一化

inputn_test=mapminmax('apply',input_test,inputps);


%网络预测输出

an=sim(net,inputn_test);


%网络输出反归一化

BPoutput=mapminmax('reverse',an,outputps);


%% 结果分析


figure(1)

plot(BPoutput,':og')

hold on

plot(output_test,'-*');

legend('预测输出','期望输出')

title('BP网络预测输出','fontsize',12)

ylabel('函数输出','fontsize',12)

xlabel('样本','fontsize',12)

%预测误差

error=BPoutput-output_test;



figure(2)

plot(error,'-*')

title('BP网络预测误差','fontsize',12)

ylabel('误差','fontsize',12)

xlabel('样本','fontsize',12)


figure(3)

plot((output_test-BPoutput)./BPoutput,'-*');

title('神经网络预测误差百分比')


errorsum=sum(abs(error))

3 仿真结果

​【非线性函数拟合】基于遗传算法优化BP神经网络实现非线性函数拟合matlab代码_神经网络

​【非线性函数拟合】基于遗传算法优化BP神经网络实现非线性函数拟合matlab代码_数据_02

​【非线性函数拟合】基于遗传算法优化BP神经网络实现非线性函数拟合matlab代码_归一化_03

4 参考文献

[1]王光明 王爱平. 遗传算法优化BP神经网络的非线性函数拟合研究[J]. 赤峰学院学报:自然科学版, 2014, 30(22):4.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,有科研问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,有科研问题可私信交流。