GA-BP神经网络仿真
- 格式:docx
- 大小:4.75 MB
- 文档页数:8
根据他人的代码,稍微改进后,并附上个人对代码的理解情况。
采用遗传算法(GA)对BP网络的权值进行优化。
其思路如下:(1)根据BP的输入值和目标值,确定好BP网络的输入层单元数、隐层单元数(本例只处理1个隐层的情况;多个隐层的方法类似,主要是在构造GA种群基因时有所差异)、以及输出层的单元个数。
(2)根据BP网络的各层单元数来确定其输入层与隐层之间的权值w12,和隐层输出值b1,以及隐层到输出层的权值w23,和输出层输出b2。
这四个值各个元素的组合就组成了一个基因,即根据他们来确定基因长度。
这一步非常重要!可根据以下代码进行理解。
% 权值矩阵分配% 输入到隐层用w_he表示,3x4,3表示输入层个数,4表示输出层个数% w_he=[chrom(i,1) chrom(i,5) chrom(i,9) chrom(i,13);% chrom(i,2) chrom(i,6) chrom(i,10) chrom(i,14);% chrom(i,3) chrom(i,7) chrom(i,11) chrom(i,15)];%以下for循环的作用是将某个基因,分别转换为bp网络所对应的权值或输出值。
% 其中chrom(i,:)表示第i个基因的所有元素% in_num表述输入层单元个数% n表示基本的元素个数% w_he表示输入层到输出层权值;w_out表示因此到输出层的权值% b_he表示隐层输出向量;b_out表示输出层的输出向量。
for j=1:nw_he(:,j)=chrom(i,(j-1)*(in_num+1)+1:j*(in_num+1)-1);w_out(j)=chrom(i,(in_num+1)*n+j);b_he(j)=chrom(i,(in_num+1)*j);endb_out=chrom(i,len);% 隐层到输出层用w_out表示,4x1% w_out=[chrom(i,17) chrom(i,18) chrom(i,19) chrom(i,20)];% b_he=[chrom(i,4) chrom(i,8) chrom(i,12) chrom(i,16)];% b_out=chrom(i,21);(3)确定好权值与基因的对应关系后。
编号:审定成绩:重庆邮电大学毕业设计(论文)设计(论文)题目:基于遗传算法的BP神经网络的优化问题研究学院名称:学生姓名:专业:班级:学号:指导教师:答辩组负责人:填表时间:2010年06月重庆邮电大学教务处制摘要本文的主要研究工作如下:1、介绍了遗传算法的起源、发展和应用,阐述了遗传算法的基本操作,基本原理和遗传算法的特点。
2、介绍了人工神经网络的发展,基本原理,BP神经网络的结构以及BP算法。
3、利用遗传算法全局搜索能力强的特点与人工神经网络模型学习能力强的特点,把遗传算法用于神经网络初始权重的优化,设计出混合GA-BP算法,可以在一定程度上克服神经网络模型训练中普遍存在的局部极小点问题。
4、对某型导弹测试设备故障诊断建立神经网络,用GA直接训练BP神经网络权值,然后与纯BP算法相比较。
再用改进的GA-BP算法进行神经网络训练和检验,运用Matlab软件进行仿真,结果表明,用改进的GA-BP算法优化神经网络无论从收敛速度、误差及精度都明显高于未进行优化的BP神经网络,将两者结合从而得到比现有学习算法更好的学习效果。
【关键词】神经网络BP算法遗传算法ABSTRACTThe main research work is as follows:1. Describing the origin of the genetic algorithm, development and application, explain the basic operations of genetic algorithm, the basic principles and characteristics of genetic algorithms.2. Describing the development of artificial neural network, the basic principle, BP neural network structure and BP.3. Using the genetic algorithm global search capability of the characteristics and learning ability of artificial neural network model with strong features, the genetic algorithm for neural network initial weights of the optimization, design hybrid GA-BP algorithm, to a certain extent, overcome nerves ubiquitous network model training local minimum problem.4. A missile test on the fault diagnosis of neural network, trained with the GA directly to BP neural network weights, and then compared with the pure BP algorithm. Then the improved GA-BP algorithm neural network training and testing, use of Matlab software simulation results show that the improved GA-BP algorithm to optimize neural network in terms of convergence rate, error and accuracy were significantly higher than optimized BP neural network, a combination of both to be better than existing learning algorithm learning.Key words:neural network back-propagation algorithms genetic algorithms目录第一章绪论 (1)1.1 遗传算法的起源 (1)1.2 遗传算法的发展和应用 (1)1.2.1 遗传算法的发展过程 (1)1.2.2 遗传算法的应用领域 (2)1.3 基于遗传算法的BP神经网络 (3)1.4 本章小结 (4)第二章遗传算法 (5)2.1 遗传算法基本操作 (5)2.1.1 选择(Selection) (5)2.1.2 交叉(Crossover) (6)2.1.3 变异(Mutation) (7)2.2 遗传算法基本思想 (8)2.3 遗传算法的特点 (9)2.3.1 常规的寻优算法 (9)2.3.2 遗传算法与常规寻优算法的比较 (10)2.4 本章小结 (11)第三章神经网络 (12)3.1 人工神经网络发展 (12)3.2 神经网络基本原理 (12)3.2.1 神经元模型 (12)3.2.2 神经网络结构及工作方式 (14)3.2.3 神经网络原理概要 (15)3.3 BP神经网络 (15)3.4 本章小结 (21)第四章遗传算法优化BP神经网络 (22)4.1 遗传算法优化神经网络概述 (22)4.1.1 用遗传算法优化神经网络结构 (22)4.1.2 用遗传算法优化神经网络连接权值 (22)4.2 GA-BP优化方案及算法实现 (23)4.3 GA-BP仿真实现 (24)4.3.1 用GA直接训练BP网络的权值算法 (25)4.3.2 纯BP算法 (26)4.3.3 GA训练BP网络的权值与纯BP算法的比较 (28)4.3.4 混合GA-BP算法 (28)4.4 本章小结 (31)结论 (32)致谢 (33)参考文献 (34)附录 (35)1 英文原文 (35)2 英文翻译 (42)3 源程序 (47)第一章绪论1.1 遗传算法的起源从生物学上看,生物个体是由细胞组成的,而细胞则主要由细胞膜、细胞质、和细胞核构成。
Value Engineering0引言近年来,人口激增导致城市空间使用紧张、交通压力激增,为了缓解这一矛盾,城市空间正在向深度方向发展[1]。
地下城市空间工程受场地地质、水文、周边建筑物、地下管线限制,需要准确、有效地预测其深基坑的变形[2]。
目前数值模拟预测方法被广泛运用,获取准确的土体参数是确保预测精度的关键,而土体参数反演方法是获取参数的重要手段。
国内外学者对反演方法已经有了一定程度的研究。
Gioda 等[3]通过利用单纯形法、拟梯度法以及Powell 法等优化方法,对岩土体的力学参数进行反演。
Zhang 等[4]采用最小二乘法反演计算土体参数,利用反演后的土体参数预测挡土结构深层水平位移。
程秋实等[5]采用粒子群算法结合支持向量回归机对基坑土体参数反分析,结果表明反演效果良好。
在土体参数反演领域,尽管BP 神经网络被广泛应用,但其存在网络结构构建难度大和收敛速度慢等缺点。
为了解决这些问题,本文引入了PSO 算法和GA 算法,提出了PSO-GA-BP 神经网络土体参数反演模型,优化了BP 神经网络的结构和参数,从而提高模型的性能和准确性。
1PSO-GA-BP 神经网络尽管BP 神经网络在土体参数反演方面有着广泛的应用,但其存在网络结构构建难度大、收敛速度慢等缺点。
同时,GA 算法在参数设计中的并行机制发挥不足、PSO 算法在处理高维数复杂问题时可能出现早期收敛[6],为了进一步提高土体参数反演的效率和准确性,这些都是需要考虑和改进的问题。
基于此,本文提出PSO-GA-BP 神经网络土体参数反演模型,其同时具有粒子群算法及遗传算法的优点,而且优化了BP 神经网络中存在的问题。
PSO-GA-BP 神经网络算法具体步骤如下,其流程图见图1。
①确定神经网络输入层、输出层及隐含层的节点数量。
②对适应度函数进行求解,据此来判断个体和群体的极限值。
③随机选择每个粒子2/3的位置,然后对粒子速度进行变异操作。
GA-BP神经网络应用实例之MATLAB程序% gap.xls中存储训练样本的原始输入数据 37组% gat.xls中存储训练样本的原始输出数据 37组% p_test.xls中存储测试样本的原始输入数据 12组% t_test.xls中存储测试样本的原始输出数据 12组% 其中gabpEval.m适应度值计算函数,gadecod.m解码函数%--------------------------------------------------------------------------nntwarn off;% nntwarn函数可以临时关闭神经网络工具箱的警告功能,当代码使用到神经% 网络工具箱的函数时会产生大量的警告而这个函数可以跳过这些警告但% 是,为了保证代码可以在新版本的工具箱下运行,我们不鼓励这么做pc=xlsread('gap.xls');tc=xlsread('gat.xls');p_test=xlsread('p_test.xls');t_test=xlsread('t_test.xls');p=pc';t=tc';p_test=p_test';t_test=t_test';% 归一化处理for i=1:2P(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:))); endfor i=1:4T(i,:)=(t(i,:)-min(t(i,:)))/(max(t(i,:))-min(t(i,:))); endfor i=1:2P_test(i,:)=(p_test(i,:)-min(p_test(i,:)))/(max(p_test(i,:))-min(p_test(i,:)));end%--------------------------------------------------------------------------% 创建BP神经网络,隐含层节点数为12net=newff(minmax(P),[12,4],{'tansig','purelin'},'trainlm'); %-------------------------------------------------------------------------- % 下面使用遗传算法对网络进行优化R=size(P,1);% BP神经网络输入层节点数S2=size(T,1);% BP神经网络输出层节点数S1=12;% 隐含层节点数S=R*S1+S1*S2+S1+S2;% 遗传算法编码长度aa=ones(S,1)*[-1,1];popu=100;% 种群规模initPop=initializega(popu,aa,'gabpEval');% 初始化种群gen=500;% 遗传代数% 下面调用gaot工具箱,其中目标函数定义为gabpEval[x,endPop,bPop,trace]=ga(aa,'gabpEval',[],initPop,[1e-6 11],'maxGenTerm',...gen,'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMutation',[2 gen 3]);%--------------------------------------------------------------------------% 绘收敛曲线图figure;plot(trace(:,1),1./trace(:,3),'r-'); hold on;plot(trace(:,1),1./trace(:,2),'b-'); xlabel('遗传代数');ylabel('平方和误差');figure;plot(trace(:,1),trace(:,3),'r-'); hold on;plot(trace(:,1),trace(:,2),'b-'); xlabel('遗传代数');ylabel('适应度');legend('平均适应度值','最优适应度值'); %-------------------------------------------------------------------------- % 下面将初步得到的权值矩阵赋给尚未开始训练的BP网络[W1,B1,W2,B2,P,T,A1,A2,SE,val]=gadecod(x); net.IW{1,1}=W1;net.LW{2,1}=W2;net.b{1}=B1;net.b{2}=B2;% 设置训练参数net.trainParam.epochs=3000;net.trainParam.goal=1e-6;% 训练网络net=train(net,P,T);w1=net.IW{1,1};w2=net.LW{2,1};b1=net.b{1};b2=net.b{2};% 测试网络性能temp=sim(net,P_test);yuce1=[temp(1,:);temp(2,:),;temp(3,:);temp(4,:)];for i=1:4yuce(i,:)=yuce1(i,:)*(max(t_test(i,:))-min(t_test(i,:)))+min(t_test(i,:));end%--------------------------------------------------------------------------% 测试输出结果之一figure;plot(1:12,yuce(1,:),'bo-');ylabel('切口外径 mm');hold on;plot(1:12,t_test(1,:),'r*-'); legend('测试结果','测试样本');figure;plot(1:12,yuce(1,:)-t_test(1,:),'b-');ylabel('误差 mm');title('测试结果与测试样本误差');figure;plot(1:12,((yuce(1,:)-t_test(1,:))/t_test(1,:))*100,'b*'); ylabel('百分比');title('测试结果与测试样本误差');% 测试输出结果之二figure;plot(1:12,yuce(2,:),'bo-'); ylabel('切口内径 mm');hold on;plot(1:12,t_test(2,:),'r*-'); legend('测试结果','测试样本'); figure;plot(1:12,yuce(2,:)-t_test(2,:),'b-');ylabel('误差 mm');title('测试结果与测试样本误差');figure;plot(1:12,((yuce(2,:)-t_test(2,:))/t_test(2,:))*100,'b*'); ylabel('百分比');title('测试结果与测试样本误差');% 测试输出结果之三figure;plot(1:12,yuce(3,:),'bo-'); ylabel('最大滚切力 N');hold on;plot(1:12,t_test(3,:),'r*-'); legend('测试结果','测试样本'); figure;plot(1:12,yuce(3,:)-t_test(3,:),'b-');ylabel('误差 N');title('测试结果与测试样本误差');figure;plot(1:12,((yuce(3,:)-t_test(3,:))/t_test(3,:))*100,'b*');ylabel('百分比');title('测试结果与测试样本误差');% 测试输出结果之四figure;plot(1:12,yuce(4,:),'bo-'); ylabel('切断时间 s');hold on;plot(1:12,t_test(4,:),'r*-');legend('测试结果','测试样本');figure;plot(1:12,yuce(4,:)-t_test(4,:),'b-');ylabel('误差 s');title('测试结果与测试样本误差');figure;plot(1:12,((yuce(4,:)-t_test(4,:))/t_test(4,:))*100,'b*'); ylabel('百分比');title('测试结果与测试样本误差');%--------------------------------------------------------------------------。
GA-BP神经网络仿真
[摘要]:本文主要是对基于遗传算法优化的BP神经网络(GA-BP)进行仿真,BP神经网络在BP神经网络中已经做详细介绍,本文首先介绍了遗传算法的基本原理,然后对遗传算法进行了描述,最后给出用遗传算法优化BP神经网络的程序。
[关键词]:GA-BP;遗传算法;仿真
1遗传算法
遗传算法(Genetic Algorithm, GA)起源于对生物系统所进行的计算机模拟研究。
它是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,借鉴了达尔文的进化论和孟德尔的遗传学说。
其本质是一种高效、并行、全局搜索的方法,能在搜索过程中自动获取和积累有关搜索空间的知识,并自适应地控制搜索过程以求得最佳解。
1.1遗传算法基本原理
遗传算法GA—模拟自然界遗传机制和生物进化论而成的一种并行随机搜索最优化方法。
(具有“生存+检测”的迭代过程的搜索算法)基于自然界“优胜劣汰,适者生存”的生物进化原理引入优化参数形成的编码串联群体中,按照所选择的适应度函数并通过遗传中的选择、交叉和变异对个体进行筛选,使适应度值好的个体被保留,适应度差的个体被淘汰,新的群体既继承了上一代的信息,又优于上一代。
反复循环,直至满足条件。
1.2遗传算法基本步骤
种群中的每个个体是问题的一个解,称为“染色体”,染色体是一串符号,如二进制字符串。
利用“适值”(适应性函数)测量染色体的好坏。
遗传算法基本操作分为:(1)选择操作:以一定概率选择旧群体个体到新群体中,个体被选中的概率跟适应度值有关个体适应度越好被选中改了吧越大。
(2)交叉操作:信息交换思想选两个个体交换组合产生新的优秀个体,染色体位置互换。
(3)变异操作:—以一定的低概率发生,染色体位置产生变异(通常取值0.001-0.01之间)。
遗传算法是具有高效启发式搜索、并行计算等特点,应用于函数优化、组合优化及生产调度等方面。
1.3 算法实现
1.3.1 种群初始化
个体编码方法为实数编码,每隔个体均为一个实数串,由输入层和隐含层连接权值、隐含层阈值、隐含层与输出层连接权值以及输出层阈值4个部分组成。
个体包含了神经网络全部的权值和阈值,在网路结构一直的情况下,就可以构成一个结构、权值、阈值确定的神经网络。
1.3.2 适应度函数
根据个体得到BP神经网络的初始权值和阈值,用训练数据训练BP神经网络后预测系统输出,把预测输出个期望的输出之间的误差绝对值和E作为个体适应度值F 计算公式为:
F=k(∑abs(y i−o i)
n
i=1
)
式中,n为网络输出节点数;yi为BP神经网络第i个节点的期望输出oi为第i个节点的实际输出;k为系数。
1.3.3 选择操作
选择运算(或称为复制运算)把当前群体中适应度较高的个体按某种规则或模型遗传到下一代群体中。
一般要求适应度较高的个体将有更多的机会遗传到下一代群体中。
遗传算法选择操作有轮盘赌法、锦标赛法等多种方法。
选择轮盘赌法时,即基于适应度比例的选择策略,每个个体i的选择概率pi为:
{f i=
k
F i
P i=
J i ∑f i N
j=1
式中,Fi为个体i的适应度值,由于适应度值越小越好,所以在个体选择前对适应度
求倒数;k 为系数;N 为种群个体数目。
1.3.4 交叉操作
遗传算法每一次迭代都会生成N 条染色体,在遗传算法中,这每一次迭代就被称为一次“进化”。
那么,每次进化新生成的染色体是如何而来的呢?——答案就是“交叉”,你可以把它理解为交配。
交叉的过程需要从上一代的染色体中寻找两条染色体,一条是爸爸,一条是妈妈。
然后将这两条染色体的某一个位置切断,并拼接在一起,从而生成一条新的染色体。
这条新染色体上即包含了一定数量的爸爸的基因,也包含了一定数量的妈妈的基因。
由于个体采用实数编码,所以交叉操作方法采用实数交叉法,第k 个染色体ak 和第l 个染色体a_l 在j 为的交叉操作方法如下: {a kj =a kj (1−b )+a lj b
a lj =a lj (1−
b )+a kj b
式中,b 是[0,1]之间的随机数。
1.3.5 变异操作
交叉能保证每次进化留下优良的基因,但它仅仅是对原有的结果集进行选择,基因还是那么几个,只不过交换了他们的组合顺序。
这只能保证经过N 次进化后,计算结果更接近于局部最优解,而永远没办法达到全局最优解,为了解决这一个问题,我们需要引入变异。
变异很好理解。
当我们通过交叉生成了一条新的染色体后,需要在新染色体上随机选择若干个基因,然后随机修改基因的值,从而给现有的染色体引入了新的基因,突破了当前搜索的限制,更有利于算法寻找到全局最优解。
选取第i 个个体的第j 个基因aij 进行变异变异操作方法如下:
a ij ={
a ij +(a ij −a max )∗f (g ) r >0.5a ij +(a min −a ij )∗f (g ) r ≤0.5
式中,amax 为基因aij 的上界;amin 为基因的下界;是一个随机数;g 为当前迭代次数;Gmax 是最大的进化次数;r 为[0,1]间的随机数。
(一下是代码实现种群规模10,进化次数50次交叉概率0.4变异概率0.2)
1.5 GA-BP算法
遗传算法优化BP,包括神经网络结构确定、遗传算法优化和BP神经网络预测3个部分。
其中、用遗传算法优化BP神经网络的初始权值和阈值,使优化后的BP神经网络能够更好的预测函数输出。
遗传算法优化BP神经网络的目的是通过遗传算法得到更好的网络初始权值和阈值,其基本思想就是用个体代表网络的初始权值和阈值、个体值初始化的BP神经网络的预测误差作为该个体的适应度值,通过选择、交叉、变异操作寻找最优个体,即最优的BP神经网络初始权值,其算法流程如图1所示。
图1 GA-BP算法流程图
2GA-BP算法仿真
本文采用MATLAB对GA-BP算法进行仿真,在MATLAB软件中编程实现基于遗传算法优化的BP神经网络。
BP神经网络则使用神经网络工具箱,实现对方程组:
y=x12+x12
的输出数据进行预测。
2.1GA-BP算法伪代码
%数据准备
Data = y=x12+x12%方程组数据
save data input output
%设置初始化BP神经网络结构
net=newff(inputn,outputn,hiddennum,{'tansig','purelin'},'trainlm');
%遗传算法参数初始化
迭代次数=10;种群规模=30;
交叉概率=0.3;变异概率=0.1;
individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]);%将种群信息定义为一个结构体for i=1:种群规模%随机产生一个种群
编码
计算适应度
染色体的适应度
End
trace=[avgfitness bestfitness]; % 记录每一代进化中最好的适应度和平均适应度
%遗传操作
for num=1:进化迭代次数
选择
交叉
变异
计算适应度
for j=1:种群规模
选择个体
找到最小和最大适应度的染色体及它们在种群中的位置
代替上一次进化中最好的染色体
记录每一代进化中最好的适应度和平均适应度
End
figure(1)
平均适应度,最佳适应度曲线
% 把最优初始阀值权值赋予网络预测
把优化后的阈值、结构权值赋给BP神经网络
用遗传算法优化的BP网络进行值预测
%BP网络训练
[net,per2]=train(net,inputn,outputn);
% BP网络预测
数据归一化
inputn_test=mapminmax
仿真预测
an=sim(net,inputn_test);
%预测结果图
figure(2)
2.2实验结果
2.2.1 神经网络训练
图2 神经网络训练
神经网络的训练参数如图2所示,可以看出,经过遗传算法优化的神经网络收敛较快,并且不会有陷入局部极小值的问题。
2.2.2 适应度曲线
图3 适应度曲线
适应度函数的选取直接影响遗传算法的收敛速度以及能否找到最优解。
一般而言,适应度函数是由目标函数变换而成的。
在自然界中,似乎存在着一个上帝,它能够选择出每一代中比较优良的个体,而淘汰一些环境适应度较差的个人。
那么在遗传算法中,如何衡量染色体的优劣呢?这就是由适应度函数完成的。
适应度函数在遗传算法中扮演者这个“上帝”的角色。
遗传算法在运行的过程中会进行N次迭代,每次迭代都会生成若干条染色体。
适应度函数会给本次迭代中生成的所有染色体打个分,来评判这些染色体的适应度,然后将适应度较低的染色体淘汰掉,只保留适应度较高的染色体,从而经过若干次迭代后染色体的质量将越来越优良。
2.2.3 预测结果
图4 仿真结果
如图所示,GA-BP神经网络所产生的预测结果较为准确,几乎接近真实值。
因此用遗传算法对神经网络进行优化是可以取得明显效果的。
3总结
虽然,从上述仿真结果可以看出,对于纯BP神经网络容易陷入局部极小值的问题,在GA-BP算法中得到了较好的解决,数据预测精度也更高。
然而,该GA-BP算法仍存在收敛速度慢的问题。