遗传算法优化的BP神经网络建模

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

遗传算法优化的BP神经网络建模

十一月匆匆过去,每天依然在忙碌着与文档相关的东西,在寒假前一个多月里,努力做好手头上的事的前提下多学习专业知识,依然是坚持学习与素质提高并重,依然是坚持锻炼身体,为明年找工作打下基础。

遗传算法优化的BP神经网络建模借鉴别人的程序做出的仿真,最近才有时间整理。目标:

对y=x1^2+x2^2非线性系统进行建模,用1500组数据对网络进行构建网络,500组数据测试网络。由于BP神经网络初始神经元之间的权值和阈值一般随机选择,因此容易陷入局部最小值。本方法使用遗传算法优化初始神经元之间的权值和阈值,并对比使用遗传算法前后的效果。

步骤:

未经遗传算法优化的BP神经网络建模

1、随机生成2000组两维随机数(x1,x2),并计算对应的输出y=x1^2+x2^2,前1500组数据作为训练数据input_train,后500组数据作为测试数据input_test。并将数据存储在data中待遗传算法中使用相同的数据。

2、数据预处理:归一化处理。

3、构建BP神经网络的隐层数,次数,步长,目标。

4、使用训练数据input_train训练BP神经网络net。

5、用测试数据input_test测试神经网络,并将预测的数据反归一化处理。

6、分析预测数据与期望数据之间的误差。

遗传算法优化的BP神经网络建模

1、读取前面步骤中保存的数据data;

2、对数据进行归一化处理;

3、设置隐层数目;

4、初始化进化次数,种群规模,交叉概率,变异概率

5、对种群进行实数编码,并将预测数据与期望数据之间的误差作为适应度函数;

6、循环进行选择、交叉、变异、计算适应度操作,直到达到进化次数,得到最优的初始权值和阈值;

7、将得到最佳初始权值和阈值来构建BP神经网络;

8、使用训练数据input_train训练BP神经网络net;

9、用测试数据input_test测试神经网络,并将预测的数据反归一化处理;

10、分析预测数据与期望数据之间的误差。

算法流程图如下:

运行后使用遗传算法改进前后误差的对比图:

程序:

1、未经遗传算法优化的BP神经网络建模clear;

clc;

%%%%%%%%%%%%%输入参数%%%%%%%%%%%%%%

N=2000; %数据总个数M=1500; %训练数据%%%%%%%%%%%%%训练数据%%%%%%%%%%%%%%

for i=1:N

input(i,1)=-5+rand*10;

input(i,2)=-5+rand*10;

end

output=input(:,1).^2+input(:,2).^2;

save data input output

load data.mat

%从1到N随机排序

k=rand(1,N);

[m,n]=sort(k);

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

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

output_train=output(n(1:M),:)';

input_test=input(n((M+1):N),:)';

output_test=output(n((M+1):N),:)';

%数据归一化

[inputn,inputs]=mapminmax(input_train); [outputn,outputs]=mapminmax(output_train);

%构建BP神经网络

net=newff(inputn,outputn,5);

net.trainParam.epochs=100;

net.trainParam.lr=0.1;

net.trainParam.goal=0.0000004;

%BP神经网络训练

net=train(net,inputn,outputn);

%测试样本归一化

inputn_test=mapminmax('apply',input_test,inputs); %BP神经网络预测

an=sim(net,inputn_test);

%%网络得到数据反归一化

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

figure(1)

%plot(BPoutput,':og');

scatter(1:(N-M),BPoutput,'rx');

hold on;

%plot(output_test,'-*');

scatter(1:(N-M),output_test,'o');

legend('预测输出','期望输出','fontsize',12);

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

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

xlabel('优化前输出的误差','fontsize',12);

figure(2)

error=BPoutput-output_test;

plot(1:(N-M),error);

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

ylabel('优化前输出的误差','fontsize',12);

%save net net inputs outputs

2、遗传算法优化的BP神经网络建模

(1)主程序

%清空环境变量

clc

clear

%读取数据

load data.mat

%节点个数

inputnum=2;

hiddennum=5;

outputnum=1;

%训练数据和预测数据

input_train=input(1:1500,:)';

input_test=input(1501:2000,:)';

output_train=output(1:1500)';

output_test=output(1501:2000)';

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

[inputn,inputps]=mapminmax(input_train);

[outputn,outputps]=mapminmax(output_train);

%构建网络

net=newff(inputn,outputn,hiddennum);

%% 遗传算法参数初始化

maxgen=10; %进化代数,即迭代次数

sizepop=30; %种群规模

相关文档
最新文档