基于遗传算法的BP神经网络优化算法

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

案例3:基于遗传算法的BP神经网络优化算法

******************************************************************************* ****

论坛申明:

1 案例为原创案例,论坛拥有帖子的版权,转载请注明出处(MATLABSKY论坛,《MATLAB

智能算法30个案例分析》

2 案例内容为书籍原创内容,内容为案例的提纲和主要内容。

3 作者长期驻扎在板块,对读者和会员问题有问必答。

4 案例配套有教学视频和完整的MATLAB程序,MATLAB程序在购买书籍后可以自由下载,教学视频需要另外购买。

MATLAB书籍预定方法和优惠服务:/thread-9258-1-1.html

点击这里,预览该案例程序:/znsf/view/s3/GABPMain.html 已经预定的朋友点此下载程序源代码:/thread-11921-1-1.html *

******************************************************************************* **

1、案例背景

BP网络是一类多层的前馈神经网络。它的名字源于在网络训练的过程中,调整网络的权值的算法是误差的反向传播的学习算法,即为BP学习算法。BP算法是Rumelhart等人在1986年提出来的。由于它的结构简单,可调整的参数多,训练算法也多,而且可操作性好,BP 神经网络获得了非常广泛的应用。据统计,有80%~90%的神经网络模型都是采用了BP网络或者是它的变形。BP网络是前向网络的核心部分,是神经网络中最精华、最完美的部分。BP神经网络虽然是人工神经网络中应用最广泛的算法,但是也存在着一些缺陷,例如:

①、学习收敛速度太慢;

②、不能保证收敛到全局最小点;

③、网络结构不易确定。

另外,网络结构、初始连接权值和阈值的选择对网络训练的影响很大,但是又无法准确获得,针对这些特点可以采用遗传算法对神经网络进行优化。

本节以某型号拖拉机的齿轮箱为工程背景,介绍使用基于遗传算法的BP神经网络进行齿轮箱故障的诊断。

2、案例目录:

第3章基于遗传算法的BP神经网络优化算法

3.1 理论基础

3.1.1 BP神经网络概述

3.1.2 遗传算法概述

3.2 案例背景

3.2.1 问题描述

3.2.2 解决思路及步骤

1. 算法流程

2. 神经网络算法实现

3. 遗传算法实现

3.3 MATLAB程序实现

3.3.1 神经网络算法

3.3.2 遗传算法主函数

3.3.3 比较使用遗传算法前后的差别

3.3.4 结果分析

3.4 延伸阅读

3.5 参考文献

3、主程序:

1.clc

2.clear all

3.close all

4.%% 加载神经网络的训练样本测试样本每列一个样本输入P 输出T

5.%样本数据就是前面问题描述中列出的数据

6.load data

7.% 初始隐层神经元个数

8.hiddennum=31;

9.% 输入向量的最大值和最小值

10.threshold=[0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1];

11.inputnum=size(P,1); % 输入层神经元个数

12.outputnum=size(T,1); % 输出层神经元个数

13.w1num=inputnum*hiddennum; % 输入层到隐层的权值个数

14.w2num=outputnum*hiddennum;% 隐层到输出层的权值个数

15.N=w1num+hiddennum+w2num+outputnum; %待优化的变量的个数

16.

17.%% 定义遗传算法参数

18.NIND=40; %个体数目

19.MAXGEN=50; %最大遗传代数

20.PRECI=10; %变量的二进制位数

21.GGAP=0.95; %代沟

22.px=0.7; %交叉概率

23.pm=0.01; %变异概率

24.trace=zeros(N+1,MAXGEN); %寻优结果的初始值

25.

26.FieldD=[repmat(PRECI,1,N);repmat([-0.5;0.5],1,N);repmat([1;0;1;1],1,N)];

%区域描述器

27.Chrom=crtbp(NIND,PRECI*N); %初始种群

28.%% 优化

29.gen=0; %代计数器

30.X=bs2rv(Chrom,FieldD); %计算初始种群的十进制转换

31.ObjV=Objfun(X,P,T,hiddennum,P_test,T_test); %计算目标函数值

32.while gen

33.fprintf('%d\n',gen)

34.FitnV=ranking(ObjV); %分配适应度值

35.SelCh=select('sus',Chrom,FitnV,GGAP); %选择

36.SelCh=recombin('xovsp',SelCh,px); %重组

37.SelCh=mut(SelCh,pm); %变异

38.X=bs2rv(SelCh,FieldD); %子代个体的十进制转换

39.ObjVSel=Objfun(X,P,T,hiddennum,P_test,T_test); %计算子代的目标函数值

40.[Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入子代到父代,得到

新种群

41.X=bs2rv(Chrom,FieldD);

42.gen=gen+1; %代计数器增加

43.%获取每代的最优解及其序号,Y为最优解,I为个体的序号

44.[Y,I]=min(ObjV);

45.trace(1:N,gen)=X(I,:); %记下每代的最优值

46.trace(end,gen)=Y; %记下每代的最优值

47.end

48.%% 画进化图

相关文档
最新文档