当前位置:文档之家› GA-BP神经网络仿真

GA-BP神经网络仿真

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算法仍存在收敛速度慢的问题。

相关主题