当前位置:文档之家› 基于遗传算法的BP神经网络的应用

基于遗传算法的BP神经网络的应用

基于遗传算法的BP神经网络的应用
基于遗传算法的BP神经网络的应用

基于遗传算法的BP神经网络的应用

----非线性函数拟合

摘要人工神经网络在诸多领域得到应用如信息工程、自动控制、电子技术、目标识别、数学建模、图像处理等领域,并且随着神经网络算啊发的不断改进以及其他新算法的结合,使其应用的领域越来越广。BP神经网络是目前神经网络领域研究最多应用最广的网络,但BP神经网络学习算法易陷入局部极小的缺陷,本文采用遗传算法来优化BP神经网络的性能。首先采用遗传算法来优化BP神经网络的权值和阈值,然后将这些优化值赋给网络得到优化的BP神经网络,最后用MATLAB仿真平台,对非线性函数的逼近拟合和极值寻优问题进行实验。数值仿真结果表明:经遗传算法优化的BP神经网络能有效地避免原始BP神经网络容易出现的局部极小的缺陷,且具有收敛速度快和精度高等优点。

关键词:BP神经网络遗传算法 MATLAB 结构优化

Abstract— In recent years, artificial neural network gradually attention has been paid into the hot area of research in many fields have been involved in electronic applications such as other fields have a wide range of applications, and also continued to expand its applications. To alleviate the shortcoming of easily sinking into the local minimum existing in the BP neural network, the paper exploits the genetic algorithm to optimize the BP neural network. First of all, the genetic algorithm is utilized to optimize the weight values as well as the threshold values of the BP neural network. Subsequently, by using the optimized weight values and threshold values, we are able to get the improved BP neural network. Furthermore, we employ the simulation data to measure the performance of the improved BP neural network. The numerical results indicate that the optimized BP neural network can effectively overcome the local minimum of the original BP neural network and outperform the original BP neural network in the aspects of convergence speed and

computation accuracy.

Keywords—BP neural network, genetic algorithm, optimization

1.引言

前馈神经网络(BP 模型)其非线性逼近能力是它博得青睐的主要原因,而BP 算法作为前馈网络的主要学习算法,则无可争议的对其推广应用起了举足轻重的促进作用。BP算法因其简单、易行、计算量小、并行性强等优点,是目前神经网络训练采用最多也是最为成熟的训练算法之一。然而,由于BP 算法是一种梯度下降搜索方法,因而不可避免地存在固有的不足,如易陷入误差函数的局部极值点,而且对于较大搜索空间、多峰值和不可微函数也不能有效搜索到全局极小点,而遗传算法则是克服这一不足的有效解决方法,主要是因为遗传算法是一种全局优化搜索算法[3],因而能够避开局部极小点,而且在进化过程中也无需提供所要解决问题的梯度信息。

2.BP神经网络

2.1 BP神经网络的特点

在20世纪80年代,Rumelhart等人首次提出了BP神经网络算法,BP神经网络的本值就是反向传播神经网络(Back Propagation Neural Network)。BP神经网络与其他网络相比具有其独特的特点:分布式存储方式,大规模并行处理,自学习和自适应能力,容错性及鲁棒性好[2]。

2.2 BP神经网络模型

BP神经网络具有一个输入层、一个输出层以及若干隐含层,其本质是一种多层前馈神经网[1]。在BP神经网络中每一层的神经元都不与相同层的神经元相连接,这是由于在神经网络中各层之间是以全连接方式连接到一起构成网络的,因此各层的神经元只能接受下层神经元送来的激活信号,并向多层映射网传递修正误差及反馈,BP网络的这种结果使得他能在参数选择合理时收敛点较小的均方误差。对许多实际问题的解决都是利用BP网络的这种结构特点,如模式识别、预测、控制等方面,这

就使得BP网络成为目前应用最为广泛的一种神经网络。

下面以一个四层的BP神经网络来介绍BP网络的基本结构,结构如图1所示,该网络有一个输入层、两个隐含层、一个输出层,其中x i(p)(i=1,2,...n)表示输入变量,其个数为n即输入层节点个数为n,两个隐含层的节点个数分别为l和s,m表示输出层的节点数,y k(p)(k=1,2,...m)表示输出层节点输出。在神经网络中每一个神经元都可以用一个节点来表示,而神经网络的

隐含层是可变的可以是单层、双层和多层。通常情况下采用Sigmoidal型函数表示隐含层节点,采用Sigmoidal型函数或者线性函数表示输入和输出节点。

图1 BP神经网络结构图表

3. 遗传算法

3.1 遗传算法的原理

遗传算法(Genetic Algorithms)是1962年由美国Michigan大学Holland教授提出的模拟自然界遗传机制和生物进化论而成的一种并行随机搜索最优化方法[4]。由于遗传算法的寻优能力的并行性高并且具有自适应性,使其在诸多领域都得到了迅速的发展如函数优化、机器学习等,同时取得了较好的效果。遗传算法中的操作步骤与生物遗传和进化的步骤极为相似。它把自然界“优胜劣态,适者生存”的生物进化原理引入优化参数形成的编码串联群体中,按照所选择的适应度函数并通过

变异 遗传中的选择、交叉和变异对个体进行筛选,使适应度值好的个体被保留,适应度值差的个体被淘汰,新的群体既继承了上一代的信息,又优于上一代。这样反复循环,直至满足条件。 3.2 遗传算法的基本操作 3.2.1 选择操作

选择操作是指从旧群体中以一定概率选择个体到新群体中,个体被选中的概率跟适应度值有关,个体使用度质越好,被选中的概率越大。 3.2.2交叉操作

交叉操作是指从个体中选择两个个体,通过两个染色的交换组合,来产生新的优秀个体[5]。交叉过程为从群体中任选两个染色体,随机选择一点或多点染色体位置进行交换。交叉操作图如图2所示。

A:1100 0101 1111 交叉 A:1100 0101 0000 B:1111 0101 0000 B:1111 0101 1111

图2 交叉操作 3.3.3变异操作

变异操作是指从群体中任选一个个体,选择染色体中的一点进行变异以产生更优秀的个体。变异操作如图3所示。

A:1100 0101 1111 A:1100 0101 1101

图3 变异操作

遗传算法具有高效启发式搜索、并行计算等特点,目前已经应用在函数优化、组合优化以及生产调度等方面。 3.3 遗传算法的基本要素

遗传算法的基本要素包括染色体编码方适应度函数、遗传操作和运行参数。 其中染色体编码方法是指个体的编码方法,目前包括二进制法、实数法等。二进制法是指把个体编码成为一个二进制串,实数法是指把个体编码成为一个实数串。

适应度函数是指根据目标编写的计算个体适应度值的函数,通过适应度值函数

计算每个个体的适应度值,提供给选择算子进行选择。

遗传操作是指选择操作、交叉操作和变异操作。

运行参数是遗传算法在初始化时确定的参数,主要包括群体大小M 、遗传代数G 、交叉概率Pc 和变异概率Pm 。

4. 遗传算法优化BP 神经网络

4.1 算法流程

遗传算法优化BP 神经网络算法流程[6]如图4所示。

N

GA 对初始值编码

BP 神经网络训练得到误差作为适应度值

选择操作

计算适应度值 变异操作 交叉操作

权值阈值更新

计算误差

获取最优权值阈值

初始BP 神经网络权值阈值

确定网络拓扑结构 满足结束条件

满足结束条件 输入数据

数据预处理

遗传算法部分

BP 神经网络部分

N Y Y

图4 算法流程

遗传优化算法优化BP神经网络分为BP神经网络结构确定、遗传算法优化和BP 神经网络预测3个部分。其中,BP神经网络结构确定部分根据拟合函数输入输出参数个数确定BP神经网络结构,进而确定遗传算法个体的长度。遗传算法优化使用遗传算法优化BP神经网络的权值和阈值,种群中的每个个体都包含了一个网络所有权值和阈值[7],个体通过适应度函数计算个体适应度值,遗传算法通过选择、交叉和变异操作找到最优适应度值对应个体。BP神经网络预测用遗传算法得到最优个体对网络初始权值和阈值赋值,网络经训练后预测函数输出。

拟合的非线性函数为

2

2

2

1

x

x

y+

=

,有2个输入参数、1个输出参数,所以设

置的BP神经网络结构为2-5-1,即输入层有2个节点,隐含层有5各节点,输出层有1个节点,共有2*5+5*1=15个权值,5+1=6个阈值,所以遗传算法个体编码长度为15+6=21.从非线性函数中随机得到2000组输入输出数据,从中随机选择1900组作为训练数据,用于网络训练,100组作为测试数据。把训练数据预测误差绝对值和作为适应度值,个体适应度值越小,该个体越优。

4.2 遗传算法实现

遗传算法优化神经网络是用遗传算法来优化BP 神经网络的初始权值和阈值,使优化后的BP 神经网络能够更好的预测输出[8]。遗传算法优化BP 神经网络的实现步骤如下:

1> 种群初始化

个体编码为实数编码,每个个体均为一个实数串,由输入层与隐含层连接权值、隐含层阈值、隐含层与输出层连接权值以及输出层阈值4 部分组成。个体包含了神经网络全部权值和阈值,在网络结构已知的情况下,就可以构成一个结构、权值、阈值确定的神经网络。

仿真预测,得到结果

2> 适应度函数

根据个体得到BP 神经网络的初始权值和阈值,用训练数据训练BP 神经网络后预测系统输出,把预测输出和期望输出之间的误差绝对值和E 作为个体适应度值F ,计算公式为

))((1

∑=-=n

i i i o y abs k F

(1-1)

式中n 为网络输出节点数;y i 为BP 神经网络第i 个节点的期望输出;o i 为第i 个节点的预测输出;k 为系数。

3> 选择操作

遗传算法遗传算法选择操作有轮盘赌法、锦标赛法等多种方法,本文选择轮盘赌法,即基于适应度比例的选择策略,每个个体i 的选择概率p i 为

i i F k f /= (1-2)

==

N

j j

i

i f f p 1

(1-3)

式中,Fi 为个体i 的适应度值,由于适应度值越小越好,所以在个体选择前对适应度值求倒数;k 为系数;N 为种群个体数目。 4> 交叉操作

由于个体采用实数编码,所以交叉操作方法采用实数交叉法[9],第k 个染色体ak 和第l 个染色体ai 在j 位的交叉操作方法如下:

??

?

??+-=+-=b a b a a b a b a a kj lj lj lj kj kj )1()1( (1-4) 式中,b 是[0,1]间的随机数。 5> 变异操作

选取第 i 个个体的第j 个基因a ij 进行变异[13],变异操作方法如下:

?????≤?-+>?-+=5.0),()(5.0),()(min max r g f a a a r g f a a a a ij ij

ij ij ij (1-5) 式中,a max 为基因a ij 的上界;a min 为基因a ij 的下界;f (g )=r 2(1-g /G max );r 2 为一个随机数;g 为当前迭代次数;Gmax 是最大进化次数;r 为[0,1]间的随机数。 4.3 遗传算法改进网络结构及权值、阈值的步骤

(1)设置总迭代次数T ,交叉概率α,变异概率β,种群大小M ,设置当前迭代次数0=t ;随机生成M 个个体,每个个体的第一个等位基因k 表示隐含层节点数,]10,1[k ++++∈o i o i N N N N ,i N 是输入层节点数,o N 是输出层节点数;选择激活函数,设置参数c ,根据适应度函数计算每个个体的适应度值。

(2)用轮盘赌法选择个体,并进行交叉、变异产生下一代

(3)计算该后代种群各个个体的适应度。若最高适应度达到要求,或达到最大迭代次数,算法停止;否则返回(2),直到达到最高适应度达到要求,或达 到最大迭代次数。

(4)输出适应度值最高的个体,若有多个适应度值相同的个体,则选择染色体长度最短的个体(即隐含层节点数最少的个体)作为输出。 4.4 BP 神经网络遗传算法非线性极值寻优的步骤

神经网络遗传算法函数极值寻优,即对未知的非线性函数2

221y x x +=,仅仅通

过函数的输入输出数据难以寻优。可以先利用神经网络的非线性拟合能力和遗传算法的非线性寻优能力寻找函数的极值。

BP 神经网络遗传算法极值寻优主要由(1)BP 神经网络训练拟合;(2)遗传算法极值寻优。

(1)BP 神经网络训练拟合,包括构建合适的神经网络,由于本例的函数是

2

2

21y x x +=,故确定BP 网络的拓扑结构是2—5—1。 (2)遗传算法极值寻优,染色体个体采用实数编码,由于是寻找函数

2

2

21y x x +=的极值点,故个体长度为2。个体的适应度值为BP 神经网络的预测值,

故预测值(即适应度值)越小,个体越优[10]

。种族规模为10,进化次数为50次,

交叉概率0.4,变异概率0.2.

BP 神经网络遗传算法极值寻优,先将BP 神经网络的预测值作为染色体个体的适应度值,再通过遗传算法寻找非线性函数的最优值。

5.仿真实例

5.1 遗传算法优化BP 网络的权值阈值——非线性函数拟合

通过遗传算法优化BP 神经网络的权值阈值,再用BP 神经网络对非线性函数

2

2

21y x x +=进行拟合。 5.1.1拟合结果分析

遗传算法优化中,最优个体适应度值值变化如图5。进化到20代时,得到最优个体适应度值1.21237585896181,满足条件终止迭代。

510

152025

12

3

4

5

6

7

8

适应度曲线 终止代数=20

进化代数

适应度

平均适应度

图5 最优个体适应度值变化曲线

5.1.2 遗传算法优化得到BP 神经网络最优初始权值和阈值如下

①输入层隐含层间权值: -1.29076495063329; -0.129380747340498 0.00430965636191028 0.172141394159896; -2.91503128004983; -2.29143357315059

-2.16511386577969 1.57251141584773 ; -1.75818656539211;

0.0210827792878874

②隐含层节点阈值 -1.59747006938531; 0.972786689605846 0.850873190239208; 2.09802070115393 ;2.24339454426019 ③隐含层输出层间阈值 2.68097856404349; 1.85138303257096 ;-2.53975440679219 -1.19993599260259; -2.36861040930053

④输出层阈值 1.21743061422284

5.1.3 BP 网络及用遗传算法优化的BP 神经网络的预测误差比较

0102030405060708090100

-0.4

-0.3-0.2-0.100.10.20.30.4

0.5BP 网络预测误差

误差

样本

图6 BP 神经网络预测误差

0102030405060708090100

-0.1

-0.08-0.06-0.04-0.0200.02

0.040.06

图7 用遗传算法优化的BP 神经网络预测误差

由上图比较可知,用遗传算法优化的BP 神经网络预测更加精确,并且遗传算法优化BP 网络预测的均方误差为6-1022.1?,而单纯的BP 神经网络的均方误差为

5-1097.3?,预测的误差也得到很大的改善。 5.2 BP 神经网络遗传算法非线性极值寻优 5.2.1 BP 神经网络拟合结果分析

由于个体的适应度值为BP 神经网络的预测值,因此BP 神经网络的预测精度对于最优位置的寻找有重要的意义。BP 神经网络预测输出和期望输出对比如下图,可以看出,BP 神经网络可以准确预测非线性函数输出。

102030405060708090100

0510152025303540

45样本

输出

BP 网络预测输出

预测输出期望输出

图8 BP 神经网络预测非线性函数输出

5.2.2 遗传算法寻优结果分析

10

20

30

40

50

60

70

80

90

100

00.10.20.30.40.50.6

0.70.80.91适应度曲线

进化代数

适应度

图9 最优个体适应度变化曲线

BP 神经网络的预测值作为染色体个体的适应度值,用遗传算法寻找该非线性函数的最小值,设遗传算法的迭代次数100次,种群规模20,交叉概率0.4,变异概率0.2,用实数编码,个体长度2,优化过程中最优个体适应度变化曲线如图8。

遗传算法得到最优个体适应度值为-0.0651,最优个体为[-0.0407 ,0.0316],

它同非线性函数2

221y x x +=的最优值点(0,0)及最优值很接近,这说明了该方法的

有效性。

参考文献:

[1] 李国勇,智能预测控制及其MATLAB 实现(第2版)[M ].电子工业出版社,2010-01-01.

[2] 傅荟璇,赵红,等.MATLAB神经网络应用设计[M].北京:北京机械工业出版社,2010.

[3]A. Blanco, M. Delgado, M.C. Pegalajar.A real-coded genetic algorithm for training recurrent neural networks[J].Neural Networks 14 (2001) 93±105

[4] 钱贺斌. 基BP神经网络的函数逼近及MABLAB仿真[J].吉林省教育学院学报,2012,12(28):22-25

[5] Pan S T,Wu C H,Lai C C.The Application of Improved Genetic AlgoritIlm On The Training of Neural Network for Speech Recognition[C].Information and Control,Second International Conference on Innovative Computing,2007:168一171.

[6] Grzesiak L M,Meganck V,Sobolewski J,et al,Genetic Algorithm for Parameters Optimization of ANN-based Speed Controller[C].The International Conference on“Computer as a tool”。2007:1700—1705.

[7]李伟超,宋大猛,陈斌.基于遗传算法的人工神经网络[J].计算机工程与设计,2006,27(2):316.318.

[8] Wu Yan,FENG Zhao.Adaptive invading genetic algorithm based on chaos search[J].Journal of computer applications.(武妍,冯钊.一种基于混沌搜索的自适应入侵遗传算法.计算机应用),2008,28(1):l0l—103.

[9] MATLAB中文论坛编著,Matlab神经网络30个案例分析[M]北京航天航空大学出版社,2010-04-01

[10]Vitoantonio Bevilacqua, Giuseppe Mastronardi.Genetic Algorithms and Artificial Neural Networks in Microarray Data Analysis:a Distributed Approach.[J]Engineering Letters, 13:3, EL_13_3_14

附录

主要代码

1.用遗传算法优化网络权值阈值,并对非线性函数进行拟合的主要代码

inputnum=2;

hiddennum=5;

outputnum=1; %节点个数

%训练数据和预测数据

input_train=input(1:1900,:)'; input_test=input(1901:2000,:)';

output_train=output(1:1900)'; output_test=output(1901:2000)';

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

[inputn,inputps]=mapminmax(input_train);

[outputn,outputps]=mapminmax(output_train);

net=newff(inputn,outputn,hiddennum); %构建网络

%% 遗传算法参数初始化

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

sizepop=10; %种群规模

pcross=[0.2]; %交叉概率选择,0和1之间

pmutation=[0.1]; %变异概率选择,0和1之间

%节点总数

numsum=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum; lenchrom=ones(1,numsum);

bound=[-3*ones(numsum,1) 3*ones(numsum,1)]; %数据范围

%种群初始化

individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]); %将种群信息定义为一个结构体

avgfitness=[]; %每一代种群的平均适应度

bestfitness=[]; %每一代种群的最佳适应度

bestchrom=[]; %适应度最好的染色体

%初始化种群

for i=1:sizepop

%随机产生一个种群

individuals.chrom(i,:)=Code(lenchrom,bound);

%编码(binary和grey的编码结果为一个实数,float的编码结果为一个实数向量)

x=individuals.chrom(i,:);

%计算适应度%染色体的适应度

individuals.fitness(i)=fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn); end

FitRecord=[];

[bestfitness bestindex]=min(individuals.fitness);%找最好的染色体

bestchrom=individuals.chrom(bestindex,:); %最好的染色体

avgfitness=sum(individuals.fitness)/sizepop; %染色体的平均适应度

% 记录每一代进化中最好的适应度和平均适应度

trace=[avgfitness bestfitness];

%% 迭代求解最佳初始阀值和权值

% 进化开始

for i=1:maxgen

i

% 选择

individuals=Select(individuals,sizepop);

avgfitness=sum(individuals.fitness)/sizepop;

%交叉

individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);

% 变异

individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,i,maxgen,bo und);

% 计算适应度

for j=1:sizepop

x=individuals.chrom(j,:); %解码

individuals.fitness(j)=fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn);

end

%找到最小和最大适应度的染色体及它们在种群中的位置

[newbestfitness,newbestindex]=min(individuals.fitness);

[worestfitness,worestindex]=max(individuals.fitness);

% 代替上一次进化中最好的染色体

if bestfitness>newbestfitness

bestfitness=newbestfitness;

bestchrom=individuals.chrom(newbestindex,:);

end

individuals.chrom(worestindex,:)=bestchrom;

individuals.fitness(worestindex)=bestfitness;

avgfitness=sum(individuals.fitness)/sizepop;

trace=[trace;avgfitness bestfitness]; %记录每一代进化中最好的适应度和平均适应度

FitRecord=[FitRecord;individuals.fitness];

end

%% 遗传算法结果分析

figure(1)

[r c]=size(trace);

plot([1:r]',trace(:,2),'b--');

title(['适应度曲线' '终止代数=' num2str(maxgen)]);

xlabel('进化代数');ylabel('适应度');

legend('平均适应度','最佳适应度');

disp('适应度变量');

%% 把最优初始阀值权值赋予网络预测

% %用遗传算法优化的BP网络进行值预测

w1=x(1:inputnum*hiddennum);

B1=x(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum);

w2=x(inputnum*hiddennum+hiddennum+1:inputnum*hiddennum+hiddennum+hiddenn um*outputnum);

B2=x(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennu m+hiddennum+hiddennum*outputnum+outputnum);

net.iw{1,1}=reshape(w1,hiddennum,inputnum);

net.lw{2,1}=reshape(w2,outputnum,hiddennum);

net.b{1}=reshape(B1,hiddennum,1);

net.b{2}=B2;

%% BP网络训练

%网络进化参数

net.trainParam.epochs=100;

net.trainParam.lr=0.1;

%net.trainParam.goal=0.00001;

%网络训练

[net,per2]=train(net,inputn,outputn);

%% BP网络预测

%数据归一化

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

an=sim(net,inputn_test);

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

error=test_simu-output_test;

2. BP神经网络遗传算法非线性函数极值寻优的主要代码

%% 初始化遗传算法参数

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

sizepop=20; %种群规模

pcross=[0.4]; %交叉概率选择,0和1之间

pmutation=[0.2]; %变异概率选择,0和1之间

lenchrom=[1 1]; %每个变量的字串长度,如果是浮点变量,则长度都为1 bound=[-5 5;-5 5]; %数据范围

individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]); %将种群信息定义为一个结构体

avgfitness=[]; %每一代种群的平均适应度

bestfitness=[]; %每一代种群的最佳适应度

bestchrom=[]; %适应度最好的染色体

%% 初始化种群计算适应度值

% 初始化种群

for i=1:sizepop

%随机产生一个种群

individuals.chrom(i,:)=Code(lenchrom,bound);

x=individuals.chrom(i,:);

%计算适应度

individuals.fitness(i)=fun(x); %染色体的适应度

end

%找最好的染色体

[bestfitness bestindex]=min(individuals.fitness);

bestchrom=individuals.chrom(bestindex,:); %最好的染色体

avgfitness=sum(individuals.fitness)/sizepop; %染色体的平均适应度

% 记录每一代进化中最好的适应度和平均适应度

trace=[avgfitness bestfitness];

%% 迭代寻优

% 进化开始

for i=1:maxgen

i

% 选择

individuals=Select(individuals,sizepop);

avgfitness=sum(individuals.fitness)/sizepop;

%交叉

individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);

% 变异

individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,[i maxgen],bound);

% 计算适应度

for j=1:sizepop

x=individuals.chrom(j,:); %解码

individuals.fitness(j)=fun(x);

end

%找到最小和最大适应度的染色体及它们在种群中的位置

[newbestfitness,newbestindex]=min(individuals.fitness);

[worestfitness,worestindex]=max(individuals.fitness);

% 代替上一次进化中最好的染色体

if bestfitness>newbestfitness

bestfitness=newbestfitness;

bestchrom=individuals.chrom(newbestindex,:);

end

individuals.chrom(worestindex,:)=bestchrom;

individuals.fitness(worestindex)=bestfitnes

avgfitness=sum(individuals.fitness)/sizepop;

trace=[trace;avgfitness bestfitness]; %记录每一代进化中最好的适应度和平均适应度

end

%进化结束

%% 结果分析

[r c]=size(trace);

plot([1:r]',trace(:,2),'r-');

title('适应度曲线','fontsize',12);

xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);

axis([0,100,0,1])

disp('适应度变量');

x=bestchrom;

% 窗口显示

disp([bestfitness x]);

遗传算法在BP神经网络优化中的应用.

遗传算法在 BP 神经网络优化中的应用 2O世纪80年代后期,多机器人协作成为一种新的机器人应用形式日益引起国内外学术界的兴趣与关注。一方面,由于任务的复杂性,在单机器人难以完成任务时,人们希望通过多机器人之间的协调与合作来完成。另一方面,人们也希望通过多机器人间的协调与合作,来提高机器人系统在作业过程中的效率。1943年,Maeullocu和 Pitts融合了生物物理学和数学提出了第一个神经元模型。从这以后,人工神经网络经历了发展、停滞、再发展的过程,时至今日正走向成熟,在广泛领域里得到了应用,其中将人工神经网络技术应用到多机器人协作成为新的研究领域。本文研究通过人工神经网络控制多机器人完成协作搬运的任务-3 J,并应用遗传算法来对神经网络进行优化。仿真结果表明,经过遗传算法优化后的搬运工作效率显著提高,误差降低。 1 人工神经网络 ANN)的基本原理和结构 人工神经网络(Artiifcial Neural Network,ANN)) 是抽象、简化与模拟大脑神经结构的计算模型,又称并行分布处理模型 J。ANN 由大量功能简单且具有自适应能力的信息处理单元——人工神经元按照大规模并行的方式通过一定的拓扑结构连接而成。ANN拓扑结构很多,其中采用反向传播(Back-Propa- gation,BP)算法的前馈型神经网络(如下图1所示),即BP人工神经网络,是人工神经网络中最常用、最成熟的神经网络之一。 BP网络模型处理信息的基本原理是:输入信号x;通过中间节点(隐层点 )作用于出节点,经过非线形变换,产生输出信Yk,网络训练的每个样本包括输入向量 x和期望输出量 T,网络输出值Y与期望输出值T之间的偏差,通过调整输入节点与隐层节点的联接强度取值w;;和隐层节点与输出节点之间的联接强度Y以及阈值,使误差沿梯度方向下降,经过反复学习训练,确定与最小误差相对应的网络参数 (权值和阈值),训练即告停止。此时经过训练的神经网络即能对类似样本的输入信息,自行处理输出误差最小的经过非线形转换的信息。

基于遗传算法的BP神经网络MATLAB代码

用遗传算法优化BP神经网络的Matlab编程实例(转) 由于BP网络的权值优化是一个无约束优化问题,而且权值要采用实数编码,所以直接利用Matlab遗传算法工具箱。以下贴出的代码是为一个19输入变量,1个输出变量情况下的非线性回归而设计的,如果要应用于其它情况,只需改动编解码函数即可。 程序一:GA训练BP权值的主函数 function net=GABPNET(XX,YY) %-------------------------------------------------------------------------- % GABPNET.m % 使用遗传算法对BP网络权值阈值进行优化,再用BP算法训练网络 %-------------------------------------------------------------------------- %数据归一化预处理 nntwarn off XX=[1:19;2:20;3:21;4:22]'; YY=[1:4]; XX=premnmx(XX); YY=premnmx(YY); YY %创建网络 net=newff(minmax(XX),[19,25,1],{'tansig','tansig','purelin'},'tra inlm'); %下面使用遗传算法对网络进行优化 P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 aa=ones(S,1)*[-1,1]; popu=50;%种群规模 save data2 XX YY % 是将 xx,yy 二个变数的数值存入 data2 这个MAT-file,initPpp=initializega(popu,aa,'gabpEval');%初始化种群 gen=100;%遗传代数

遗传算法与神经网络的结合.

系统工程理论与实践 Systems Engineering——Theory & Practice 1999年第2期第19卷 vol.19 No.2 1999 遗传算法与神经网络的结合 李敏强徐博艺寇纪淞 摘要阐明了遗传算法和神经网络结合的必要性和可行性,提出用多层前馈神经网络作为遗传搜索的问题表示方式的思想。用遗传算法和神经网络结合的方法求解了短期地震预报问题,设计了用遗传算法训练神经网络权重的新方法,实验结果显示了遗传算法快速学习网络权重的能力,并且能够摆脱局部极点的困扰。 关键词遗传算法进化计算神经网络 On the Combination of Genetic Algorithms and Neural Networks Li Minqiang Xu Boyi Kou Jisong (Institute of Systems Engineering, Tianjin University, Tianjin 300072 Abstract In this paper, we demonstrate the necessity and possibility of combining neural network (NN with GAs. The notion of using multilayered feed forward NN as the representation method of genetic and the searching technique is introduced. We combine GA and NN for solving short term earthquake forecasting problem, design a novel method of using GAs to train connection weights of NN.The empirical test indicates the capability of the new method in fast learning of NN and escaping local optima. Keywords genetic algorithms; evolutionary computation; neural networks

神经网络的应用及其发展

神经网络的应用及其发展 [摘要] 该文介绍了神经网络的发展、优点及其应用和发展动向,着重论述了神经网络目前的几个研究热点,即神经网络与遗传算法、灰色系统、专家系统、模糊控制、小波分析的结合。 [关键词]遗传算法灰色系统专家系统模糊控制小波分析 一、前言 神经网络最早的研究20世纪40年代心理学家Mcculloch和数学家Pitts合作提出的,他们提出的MP模型拉开了神经网络研究的序幕。神经网络的发展大致经过三个阶段:1947~1969年为初期,在这期间科学家们提出了许多神经元模型和学习规则,如MP模型、HEBB学习规则和感知器等;1970~1986年为过渡期,这个期间神经网络研究经过了一个低潮,继续发展。在此期间,科学家们做了大量的工作,如Hopfield教授对网络引入能量函数的概念,给出了网络的稳定性判据,提出了用于联想记忆和优化计算的途径。1984年,Hiton教授提出Boltzman机模型。1986年Kumelhart等人提出误差反向传播神经网络,简称BP 网络。目前,BP网络已成为广泛使用的网络;1987年至今为发展期,在此期间,神经网络受到国际重视,各个国家都展开研究,形成神经网络发展的另一个高潮。神经网络具有以下优点: (1) 具有很强的鲁棒性和容错性,因为信息是分布贮于网络内的神经元中。 (2) 并行处理方法,使得计算快速。 (3) 自学习、自组织、自适应性,使得网络可以处理不确定或不知道的系统。 (4) 可以充分逼近任意复杂的非线性关系。 (5) 具有很强的信息综合能力,能同时处理定量和定性的信息,能很好地协调多种输入信息关系,适用于多信息融合和多媒体技术。 二、神经网络应用现状 神经网络以其独特的结构和处理信息的方法,在许多实际应用领域中取得了显著的成效,主要应用如下: (1) 图像处理。对图像进行边缘监测、图像分割、图像压缩和图像恢复。

遗传算法优化BP神经网络的实现代码-共6页

%读取数据 data=xlsread('data.xls'); %训练预测数据 data_train=data(1:113,:); data_test=data(118:123,:); input_train=data_train(:,1:9)'; output_train=data_train(:,10)'; input_test=data_test(:,1:9)'; output_test=data_test(:,10)'; %数据归一化 [inputn,mininput,maxinput,outputn,minoutput,maxoutput]=premnmx(input_tr ain,output_train); %对p和t进行字标准化预处理 net=newff(minmax(inputn),[10,1],{'tansig','purelin'},'trainlm'); net.trainParam.epochs=100; net.trainParam.lr=0.1; net.trainParam.goal=0.00001; %net.trainParam.show=NaN %网络训练 net=train(net,inputn,outputn); %数据归一化 inputn_test = tramnmx(input_test,mininput,maxinput); an=sim(net,inputn); test_simu=postmnmx(an,minoutput,maxoutput); error=test_simu-output_train; plot(error) k=error./output_train

介绍遗传算法神经网络

课程设计作业——翻译 课题:介绍遗传算法神经网络 穆姣姣 0808490233 物流08-班

介绍遗传算法神经网络 理查德·坎普 1. 介绍 一旦一个神经网络模型被创造出来,它常常是可取的。利用这个模型的时候,识别套输入变量导致一个期望输出值。大量的变量和非线性性质的许多材料模型可以使找到一个最优组输入变量变得困难。 在这里,我们可以用遗传算法并试图解决这个问题。 遗传算法是什么?遗传算法是基于搜索algo-rithms力学的自然选择和遗传观察到生物的世界。他们使用两个方向(\适者生存”),在这种条件下,探索一个强劲的功能。重要的是,采用遗传算法,这不是必需要知道功能的形式,就其输出给定的输入(图1)。 健壮性我们这么说是什么意思呢?健壮性是效率和效能之间的平衡所使用的技术在许多不同的环境中。帮助解释这个问题,我们可以比其他搜索和优化技术,如calculus-based,列举,与随机的求索。 方法Calculus-based假设一个光滑,无约束函数和要么找到点在衍生为零(知易行难)或者接受一个方向梯度与当地日当地一所高中点(爬山)。研究了这些技术已经被重点研究、扩展、修改,但展现自己缺乏的鲁棒性是很简单的。 考虑如图2所示的功能。利用Calculus-based在这里发现极值是很容易的(假定派生的函数可以发现…!)。然而,一个更复杂的功能(图3)显示该方法是当地——如果搜索算法,在该地区的一个开始,它就会错过低高峰目标,最高的山峰。 图1 使用网络神经算法没必要知道它的每一项具体功能。 一旦一个局部极大时,进一步改进需要一个随机的重启或类似的东西。同时,假设一个函数光滑,可导,并明确知道很少尊重现实。许多真实世界充满了间断模型和设置在嘈杂的多通道搜索空间(图4)。 虽然calculus-based方法在某些环境中至非常有效的,但内在的假

基于遗传算法的BP神经网络的应用

基于遗传算法的BP神经网络的应用 ----非线性函数拟合 摘要人工神经网络在诸多领域得到应用如信息工程、自动控制、电子技术、目标识别、数学建模、图像处理等领域,并且随着神经网络算啊发的不断改进以及其他新算法的结合,使其应用的领域越来越广。BP神经网络是目前神经网络领域研究最多应用最广的网络,但BP神经网络学习算法易陷入局部极小的缺陷,本文采用遗传算法来优化BP神经网络的性能。首先采用遗传算法来优化BP神经网络的权值和阈值,然后将这些优化值赋给网络得到优化的BP神经网络,最后用MATLAB仿真平台,对非线性函数的逼近拟合和极值寻优问题进行实验。数值仿真结果表明:经遗传算法优化的BP神经网络能有效地避免原始BP神经网络容易出现的局部极小的缺陷,且具有收敛速度快和精度高等优点。 关键词:BP神经网络遗传算法 MATLAB 结构优化 Abstract— In recent years, artificial neural network gradually attention has been paid into the hot area of research in many fields have been involved in electronic applications such as other fields have a wide range of applications, and also continued to expand its applications. To alleviate the shortcoming of easily sinking into the local minimum existing in the BP neural network, the paper exploits the genetic algorithm to optimize the BP neural network. First of all, the genetic algorithm is utilized to optimize the weight values as well as the threshold values of the BP neural network. Subsequently, by using the optimized weight values and threshold values, we are able to get the improved BP neural network. Furthermore, we employ the simulation data to measure the performance of the improved BP neural network. The numerical results indicate that the optimized BP neural network can effectively overcome the local minimum of the original BP neural network and outperform the original BP neural network in the aspects of convergence speed and

神经网络与遗传算法

5.4 神经网络与遗传算法简介 在本节中,我们将着重讲述一些在网络设计、优化、性能分析、通信路由优化、选择、神经网络控制优化中有重要应用的常用的算法,包括神经网络算法、遗传算法、模拟退火算法等方法。用这些算法可以较容易地解决一些很复杂的,常规算法很难解决的问题。这些算法都有着很深的理论背景,本节不准备详细地讨论这些算法的理论,只对算法的原理和方法作简要的讨论。 5.4.1 神经网络 1. 神经网络的简单原理 人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connectionist Model),是对人脑或自然神经网络(Natural Neural Network)若干基本特性的抽象和模拟。人工神经网络以对大脑的生理研究成果为基础的,其目的在于模拟大脑的某些机理与机制,实现某个方面的功能。所以说, 人工神经网络是由人工建立的以有向图为拓扑结构的动态系统,它通过对连续或断续的输入作出状态相应而进行信息处理。它是根据人的认识过程而开发出的一种算法。假如我们现在只有一些输入和相应的输出,而对如何由输入得到输出的机理并不清楚,那么我们可以把输入与输出之间的未知过程看成是一个“网络”,通过不断地给这个网络输入和相应的输出来“训练”这个网络,网络根据输入和输出不断地调节自己的各节点之间的权值来满足输入和输出。这样,当训练结束后,我们给定一个输入,网络便会根据自己已调节好的权值计算出一个输出。这就是神经网络的简单原理。 2. 神经元和神经网络的结构 如上所述,神经网络的基本结构如图5.35所示: 隐层隐层2 1 图5.35 神经网络一般都有多层,分为输入层,输出层和隐含层,层数越多,计算结果越精确,但所需的时间也就越长,所以实际应用中要根据要求设计网络层数。神经网络中每一个节点叫做一个人工神经元,他对应于人脑中的神经元。人脑神经元由细胞体、树突和轴突三部分组成,是一种根须状蔓延物。神经元的中心有一闭点,称为细胞体,它能对接受到的信息进行处理,细胞体周围的纤维有两类,轴突是较长的神经纤维,是发出信息的。树突的神经纤维较短,而分支众多,是接收信息的。一个神经元的轴突末端与另一神经元的树突之间密

遗传算法优化BP神经网络权值和阈值(完整版)

https://www.doczj.com/doc/477974817.html,/viewthread.php?tid= 50653&extra=&highlight=%E9%81%97%E4%BC%A0%E7% AE%97%E6%B3%95&page=1 Matlab遗传算法优化神经网络的例子(已调试成功)最近论坛里问到用遗传算法优化神经网络问题的人很多,而且论坛里有很多这方面的代码。但可惜的是所有代码都或多或少有些错误!最郁闷的莫过于只有发帖寻求问题答案的探索者,却很少有对问题进行解答的victor。本人在论坛里看到不少会员对能运行成功的遗传算法优化神经网络例子的需求是多么急切,我也深有感触!现把调试成功的一个例子贴出来,供大家参考!(本例子是基于一篇硕士论文里的代码为蓝本改 编的,此处就不再注明作者了。)遗传算法优化bp.rar (3.34 KB) 注:该代码是由会员“书童”耗费了一整天的时间调试成功的,在此再次对我们的“书童”同学乐于助人的高尚品德致敬,并对其深表感谢!PS:参考会员“ilovexyq”意见,先对其做以补充。该网络为遗传算法 优化bp的一个典型例子,输入为7,输出为7,隐层为25。该网络输入输出数据就是为了说明问题而随便加的,没有实际意义。如用于自己的实际问题,把数据替换并根据需要改一下网络结构就行了。

PS:如有问题,请先阅读此贴: https://www.doczj.com/doc/477974817.html,/thread-52587-1-1.html### [本帖最后由 yuthreestone 于 2009-10-15 10:52 编辑] 搜索更多相关主题的帖子: 调试例子算法Matlab神经网络 https://www.doczj.com/doc/477974817.html,/thread-52587-1-1.html 遗传算法优化BP神经网络权值和阈值(完整版) 会员renjia前一段时间分享的程序,地址如下: https://www.doczj.com/doc/477974817.html,/viewthread.php?tid=50653&extra=&highlight=% E9%81%97%E4%BC%A0%E7%AE%97%E6%B3%95&page=1: (1)renjia提供的程序存在一些小错误,主要是设计的bp网络是两个隐含层,但编码的时候只有一个隐含层。修改后的程序将bp改成了单隐层以确保一致;(2)很多会员不知道该如何运行程序,各个m文件之间的关系弄不清楚。修改后的程序共包含三个m文件: 其中,主程序为ga_bp.m,适应度函数为gabpEval.m,编解码子函数为gadecod.m 注意:使用前需安装gaot工具箱(见附件),上述三个文件需放在同一文件夹中且将该文件夹设置为当前工作路径。 运行程序时只需运行主程序ga_bp.m即可。 (3)此程序仅为示例,针对其他的问题,只需将数据修改即可,但需注意变量名保持一致,尤其是全局变量修改时(在gadecod.m和gabpEval.m中也要修改)(4)gaot工具箱如何安装? 点击file选择set path,在弹出的对话框中选择add folder,将gaot文件夹添加进去,然后点击save保存即可。

神经网络和遗传算法中英文对照外文翻译文献

中英文对照外文翻译 (文档含英文原文和中文翻译) 基于神经网络和遗传算法的模糊系统的自动设计摘要 本文介绍了基于神经网络和遗传算法的模糊系统的设计,其目的在于缩短开发时间并提高该系统的性能。介绍一种利用神经网络来描绘的多维非线性隶属函数和调整隶属函数参数的方法。还提及了基于遗传算法的集成并自动化三个模糊系统的设计平台。 1 前言 模糊系统往往是人工手动设计。这引起了两个问题:一是由于人工手动设计是费时间的,所以开发费用很高;二是无法保证获得最佳的解决方案。为了缩短开发时间并提高模糊系统的性能,有两种独立的途径:开发支持工具和自动设计方法。前者包括辅助模糊系统设计的开发环境。许多环境已具有商业用途。后者介绍了自动设计的技术。尽管自动设计不能保证获得最优解,他们仍是可取的手工技巧,因为设计是引导走向和依某些标准的最优解。 有三种主要的设计决策模糊控制系统设计: (1)确定模糊规则数, (2)确定隶属度函数的形式。 (3)确定变化参数 再者,必须作出另外两个决定: (4)确定输入变量的数量 (5)确定论证方法 (1)和(2)相互协调确定如何覆盖输入空间。他们之间有高度的相互依赖性。(3)用以确定TSK(Takagi-Sugeno-Kang)模式【1】中的线性方程式的系数,或确定隶属度函数以及部分的Mamdani模型【2】。(4)符合决定最低套相关的输入变量,计算所需的目标决策或控制的价值观。像逆向消除(4)和信息标准的技术在此设计中经常被利用。(5)相当于决定使用哪一个模糊算子和解模糊化的方法。虽然由数种算法和模糊推理的方法已被提出,仍没有选择他们标准。[5]表明动态变化的推理方法,他依据这个推理环境的结果在性能和容错性高于任何固定的推理的方法。 神经网络模型(以更普遍的梯度)和基于遗传算法的神经网络(最常见的梯度的基础)和遗传算法被用于模糊系统的自动设计。基于神经网络的方法主要是用来设计模糊隶属度函数。这有两种主要的方法; (一)直接的多维的模糊隶属度函数的设计: 该方法首先通过数据库确定规则的数目。然后通过每个簇的等级的训练来确定隶属函

神经网络和遗传算法有什么关系

神经网络和遗传算法有什么关系? 神经网络的设计要用到遗传算法,遗传算法在神经网络中的应用主要反映在3 个方面:网络的学习,网络的结构设计,网络的分析。 1.遗传算法在网络学习中的应用 在神经网络中,遗传算法可用于网络的学习。这时,它在两个方面起作用 (1)学习规则的优化 用遗传算法对神经网络学习规则实现自动优化,从而提高学习速率。 (2)网络权系数的优化 用遗传算法的全局优化及隐含并行性的特点提高权系数优化速度。 2.遗传算法在网络设计中的应用 用遗传算法设计一个优秀的神经网络结构,首先是要解决网络结构的编码问题;然后才能以选择、交叉、变异操作得出最优结构。编码方法主要有下列3种: (1)直接编码法 这是把神经网络结构直接用二进制串表示,在遗传算法中,“染色体”实质上和神经网络是一种映射关系。通过对“染色体”的优化就实现了对网络的优化。 (2)参数化编码法 参数化编码采用的编码较为抽象,编码包括网络层数、每层神经元数、各层互连方式等信息。一般对进化后的优化“染色体”进行分析,然后产生网络的结构。 (3)繁衍生长法 这种方法不是在“染色体”中直接编码神经网络的结构,而是把一些简单的生长语法规则编码入“染色体”中;然后,由遗传算法对这些生长语法规则不断进行改变,最后生成适合所解的问题的神经网络。这种方法与自然界生物地生长进化相一致。 3.遗传算法在网络分析中的应用

遗传算法可用于分析神经网络。神经网络由于有分布存储等特点,一般难以从其拓扑结构直接理解其功能。遗传算法可对神经网络进行功能分析,性质分析,状态分析。 遗传算法虽然可以在多种领域都有实际应用,并且也展示了它潜力和宽广前景;但是,遗传算法还有大量的问题需要研究,目前也还有各种不足。首先,在变量多,取值范围大或无给定范围时,收敛速度下降;其次,可找到最优解附近,但无法精确确定最扰解位置;最后,遗传算法的参数选择尚未有定量方法。对遗传算法,还需要进一步研究其数学基础理论;还需要在理论上证明它与其它优化技术的优劣及原因;还需研究硬件化的遗传算法;以及遗传算法的通用编程和形式等。

神经网络的应用及其发展

神经网络的应用及其发展

神经网络的应用及其发展 来源:辽宁工程技术大学作者: 苗爱冬 [摘要] 该文介绍了神经网络的发展、优点及其应用和发展动向,着重论述了神经网络目前的几个研究热点,即神经网络与遗传算法、灰色系统、专家系统、模糊控制、小波分析的结合。 [关键词]遗传算法灰色系统专家系统模糊控制小波分析 一、前言 神经网络最早的研究20世纪40年代心理学家Mcculloch和数学家Pitts 合作提出的,他们提出的MP模型拉开了神经网络研究的序幕。神经网络的发展大致经过三个阶段:1947~1969年为初期,在这期间科学家们提出了许多神经元模型和学习规则,如MP模型、HEBB学习规则和感知器等;1970~1986年为过渡期,这个期间神经网络研究经过了一个低潮,继续发展。在此期间,科学家们做了大量的工作,如Hopfield教授对网络引入能量函数的概念,给出了网络的稳定性判据,提出了用于联想记忆和优化计算的途径。1984年,Hiton教授提出Boltzman机模型。1986年Kumelhart等人提出误差反向传播神经网络,简称BP网络。目前,BP网络已成为广泛使用的网络;1987年至今为发展期,在此期间,神经网络受到国际重视,各个国家都展开研究,形成神经网络发展的另一个高潮。神经网络具有以下优点: (1) 具有很强的鲁棒性和容错性,因为信息是分布贮于网络内的神经元中。 (2) 并行处理方法,使得计算快速。 (3) 自学习、自组织、自适应性,使得网络可以处理不确定或不知道的系统。 (4) 可以充分逼近任意复杂的非线性关系。 (5) 具有很强的信息综合能力,能同时处理定量和定性的信息,能很好地协调多种输入信息关系,适用于多信息融合和多媒体技术。 二、神经网络应用现状 神经网络以其独特的结构和处理信息的方法,在许多实际应用领域中取得了显著的成效,主要应用如下: (1) 图像处理。对图像进行边缘监测、图像分割、图像压缩和图像恢复。 (2) 信号处理。能分别对通讯、语音、心电和脑电信号进行处理分类;可用于海底声纳信号的检测与分类,在反潜、扫雷等方面得到应用。 (3) 模式识别。已成功应用于手写字符、汽车牌照、指纹和声音识别,还可用于目标的自动识别和定位、机器人传感器的图像识别以及地震信号的鉴别

利用MATLAB实现遗传算法和MATLAB神经网络工具箱的使用

实验一利用MATLA实现遗传算法 一、实验目的 1、熟悉MATLA语言编程环境 2、掌握MATLA语言命令 3、学会利用MATLA编程实现遗传算法 二、实验原理 MATLA是美国Math Works公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,MATLA可以进 行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计等领域。通过学习遗传算法原理,使用 MATLA编写程序,实现其求解策略。 三、实验内容 通过MATLA编程,利用遗传算法求解: f (x) 200exp( 0.05x)sin(x), 求maxf (x),x [-2,2] . 三、实验要求 1 、程序设计 2、调试 3、实验结果

4、撰写实验报告 实验二MATLAB申经网络工具箱的使用 一、实验目的 1、掌握MATLA语言命令 2、提高MATLA程序设计能力 3、学会使用MATLA申经网络工具箱 二、实验原理 MATLA语言是Math Works公司推出的一套高性能计算机编程语言,集数学计算、图形显示、语言设计于一体,其强大的扩展功能为用户提供了广阔的应用空间。它附带有 30多个工具箱,申经网络工具箱就是其中之一。利用该工具箱可以方便的构建申经网络的结构模型、设计、训练等,实现申经网络算法。 三、实验内容 通过MATLA编程,利用神经网络工具箱预测公路运量: 公路运量主要包括公路客运量和公路货运量两个方面。据研究,某地区的公路运量主要与该地区的人数、机动车数量和公路面积有关,上表给出了该地区20年的公路运量相关数据。根据有关部门数据,该地区2010和2011 年的人数分别为73.39 和75.55 万人,机动车数量分别为3.9635 和4.0975 万辆,公路面积分别为0.9880和1.0268万平方千米。请利用BP网络预测该地区2010和2011 年的公路客运量和公路货运量。

利用MATLAB实现遗传算法和MATLAB神经网络工具箱的使用

实验一利用MATLAB实现遗传算法 一、实验目的 1、熟悉MATLAB语言编程环境 2、掌握MATLAB语言命令 3、学会利用MATLAB编程实现遗传算法 二、实验原理 MATLAB是美国Math Works公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计等领域。通过学习遗传算法原理,使用MATLAB编写程序,实现其求解策略。 三、实验内容 通过MATLAB编程,利用遗传算法求解: x x =求[-2,2] f- ) ( f. x , max∈ ex p 05 x sin( ), .0 ) (x ) 200 ( 三、实验要求 1、程序设计 2、调试 3、实验结果 4、撰写实验报告

实验二 MATLAB神经网络工具箱的使用 一、实验目的 1、掌握MATLAB语言命令 2、提高MATLAB程序设计能力 3、学会使用MATLAB神经网络工具箱 二、实验原理 MATLAB语言是Math Works公司推出的一套高性能计算机编程语言,集数学计算、图形显示、语言设计于一体,其强大的扩展功能为用户提供了广阔的应用空间。它附带有30多个工具箱,神经网络工具箱就是其中之一。利用该工具箱可以方便的构建神经网络的结构模型、设计、训练等,实现神经网络算法。 三、实验内容 通过MATLAB编程,利用神经网络工具箱预测公路运量: 公路运量主要包括公路客运量和公路货运量两个方面。据研究,某地区的公路运量主要与该地区的人数、机动车数量和公路面积有关,上表给出了该地区20年的公路运量相关数据。根据有关部门数据,该地区2010和2011年的人数分别为73.39和75.55万人,机动车数量分别为3.9635和4.0975万辆,公路面积分别为0.9880和1.0268万平方千米。请利用BP网络预测该地区2010和2011年的公路客运量和公路货运量。

神经网络和遗传算法的结合

遗传算法与神经网络的结合 李敏强 徐博艺 寇纪淞 摘要 阐明了遗传算法和神经网络结合的必要性和可行性,提出用多层前馈神经网络作为遗传搜索的问题表示方式的思想。用遗传算法和神经网络结合的方法求解了短期地震预报问题,设计了用遗传算法训练神经网络权重的新方法,实验结果显示了遗传算法快速学习网络权重的能力,并且能够摆脱局部极点的困扰。 关键词 遗传算法 进化计算 神经网络 On the Combination of Genetic Algorithms and Neural Networks Li Minqiang Xu Boyi Kou Jisong (Institute of Systems Engineering, Tianjin University, Tianjin 300072) Abstract In this paper, we demonstrate the necessity and possibility of combining neural network (NN) with GAs. The notion of using multilayered feed forward NN as the representation method of genetic and the searching technique is introduced. We combine GA and NN for solving short term earthquake forecasting problem, design a novel method of using GAs to train connection weights of NN.The empirical test indicates the capability of the new method in fast learning of NN and escaping local optima. Keywords genetic algorithms; evolutionary computation; neural networks 1引言 智能可以分为三个层次:高层次的是生物智能(BI),其次是人工智能(AI), 处于低层次的是计算智能(CI)。 计算智能是国际上新近提出的学科概念,在计算智能中,计算的概念是传统计算概念的拓展,计算对象不仅局限于数和字符,运算符号也不再局限于加减乘除等运算,在这个范畴内的加减乘除也需赋于新的含义。但一般来说,AI偏重于逻辑推理,而CI则偏重于数值计算。 目前,计算智能正处于迅猛发展的阶段,其主要技术包括模糊技术、神经网络、进化计算等[5]。这几项技术各自均有了数十年的历史,但当时这些方法并未受到足够的重视,一是当时这些方法还不很成熟,二是受当时计算机软硬件的限制,而这些方法一般需要较大的计算量,难以取得实际应用。随着计算机技术的发展和普及,它们在最近十年得到了突飞猛进的发展,引起了诸多领域专家学者的关注,成为一个跨学科的研究热点。近年来,这些方法呈互相融合的趋势[3],它们之间的相互补充可增强彼此的能力,从而获得更有力的表示和解决实际问题的能力。如对模糊神经网络、模糊遗传算法、模糊分类器系统、用遗传算法优化模糊系统的隶属度函数及神经网络的进化设计方法等的研究都

用遗传算法优化BP神经网络的Matlab编程实例

用遗传算法优化BP神经网络的M a t l a b编程实例 由于BP网络的权值优化是一个无约束优化问题,而且权值要采用实数编码,所以直接利用Matlab遗传算法工具箱。以下贴出的代码是为一个19输入变量,1个输出变量情况下的非线性回归而设计的,如果要应用于其它情况,只需改动编解码函数即可。 程序一:GA训练BP权值的主函数 function net=GABPNET(XX,YY) %-------------------------------------------------------------------------- %??GABPNET.m %??使用遗传算法对BP网络权值阈值进行优化,再用BP算法训练网络 %-------------------------------------------------------------------------- %数据归一化预处理 nntwarn off XX=premnmx(XX); YY=premnmx(YY); %创建网络 net=newff(minmax(XX),[19,25,1],{'tansig','tansig','purelin' },'trainlm'); %下面使用遗传算法对网络进行优化 P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 aa=ones(S,1)*[-1,1]; popu=50;%种群规模 initPpp=initializega(popu,aa,'gabpEval');%初始化种群 gen=100;%遗传代数 %下面调用gaot工具箱,其中目标函数定义为gabpEval [x,endPop,bPop,trace]=ga(aa,'gabpEval',[],initPpp,[1e-6 1 1],'maxGenTerm',gen,... ??'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMuta tion',[2 gen 3]); %绘收敛曲线图 figure(1) plot(trace(:,1),1./trace(:,3),'r-'); hold on plot(trace(:,1),1./trace(:,2),'b-'); xlabel('Generation'); ylabel('Sum-Squared Error'); figure(2) plot(trace(:,1),trace(:,3),'r-'); hold on plot(trace(:,1),trace(:,2),'b-'); xlabel('Generation'); ylabel('Fittness'); %下面将初步得到的权值矩阵赋给尚未开始训练的BP 网络 [W1,B1,W2,B2,P,T,A1,A2,SE,val]=gadecod(x); net.LW{2,1}=W1; net.LW{3,2}=W2; net.b{2,1}=B1; net.b{3,1}=B2; XX=P; YY=T; %设置训练参数 %训练网络 net=train(net,XX,YY); 程序二:适应值函数 function [sol, val] = gabpEval(sol,options) % val - the fittness of this individual % sol - the individual, returned to allow for Lamarckian evolution % options - [current_generation] load data2 nntwarn off XX=premnmx(XX); YY=premnmx(YY); P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 for i=1:S, ? ?x(i)=sol(i); end; [W1, B1, W2, B2, P, T, A1, A2, SE, val]=gadecod(x); 程序三:编解码函数 function [W1, B1, W2, B2, P, T, A1, A2, SE, val]=gadecod(x) load data2

神经网络遗传算法的基本框架

目录 1 神经网络 (2) 1.1 人工神经元基本模型 (2) 1.2 BP网络基本模型 (2) 1.3 BP网络的标准学习算法 (3) 1.4 MATLAB中BP神经网络的重要函数和基本功能 (5) 1.5 BP网络存在问题及算法改进 (5) 2 遗传算法 (5) 2.1 基本遗传算法 (6) 2.2 遗传算法的设计 (6) 3 遗传算法与BP网络结合的模型 (7) 4 在变速箱故障诊断中的应用 (8) 4.1 基于BP网络的特征提取 (8) 4.2 基于遗传算法与BP网络结合的故障分类 (8)

1 神经网络 神经网络相当于一个专家系统知识库,它能够自动在海量数据中识别、捕捉和提取隐藏规律,并将其包含在神经元之间的连接权值中;神经网络理论研究侧重于寻找合适的神经网络模型和学习算法。其中,模型研究是指构造合适的单个神经元模型及确定神经元之间的连接方式,并探讨它适用的场合;学习算法研究是指在神经网络模型的基础上,指出一种调整神经网络结构和权值的算法,并满足学习样本的要求,同时具有较快的学习速度。 1.1 人工神经元基本模型 神经元i的一个输入 ∑ = - = n j i j ji i v w 1 θ ) ( i i u f = 图为:人工神经元模型 模型由四部分构成:一组同突触权值相联系的突触;求和装置,将叠加所有传播到加法器的信号,即每个输入与它相联系的突触权值相乘,然后再相加求和;激励(活)函数,可以是线性或非线性函数;阈值。 1.2 BP网络基本模型 BP网络一般由输入层、输出层和隐层(可以是多层)组成,包括正向传播和反向传播两部分。正向传播用于网络计算,对某一输入求出其输出;反向传播用于逐层传递误差,修改连接权值和阈值。BP网络把样本的输入、输出问题变成一个沿梯度下降算法的非线性优化问题,并通过迭代运算求解使得网络具有学习记忆功能。

案例4:遗传算法优化神经网络-更好拟合函数

遗传算法优化神经网络-更好拟合函数1.案例背景 BP神经网络是一种反向传递并且能够修正误差的多层映射函数,它通过对未知系统的输入输出参数进行学习之后,便可以联想记忆表达该系统。但是由于BP网络是在梯度法基础上推导出来的,要求目标函数连续可导,在进化学习的过程中熟练速度慢,容易陷入局部最优,找不到全局最优值。并且由于BP网络的权值和阀值在选择上是随机值,每次的初始值都不一样,造成每次训练学习预测的结果都有所差别。遗传算法是一种全局搜索算法,把BP神经网络和遗传算法有机融合,充分发挥遗传算法的全局搜索能力和BP神经网络的局部搜索能力,利用遗传算法来弥补权值和阀值选择上的随机性缺陷,得到更好的预测结果。本案例用遗传算法来优化神经网络用于标准函数预测,通过仿真实验表明该算法的有效性。 2.模型建立 2.1预测函数 2.2 模型建立 遗传算法优化BP网络的基本原理就是用遗传算法来优化BP网络的初始权值和阀值,使优化后的BP网络能够更好的预测系统输出。遗传算法优化BP网络主要包括种群初始化,适应度函数,交叉算子,选择算子和变异算子等。 2.3 算法模型 3.编程实现 3.1代码分析 用matlabr2009编程实现神经网络遗传算法寻找系统极值,采用cell工具把遗传算法主函数分为以下几个部分: Contents

?清空环境变量 ?网络结构确定 ?遗传算法参数初始化 ?迭代求解最佳初始阀值和权值 ?遗传算法结果分析 ?把最优初始阀值权值赋予网络预测 ?BP网络训练 ?BP网络预测 主要的代码段分析如下: 3.2结果分析 采用遗传算法优化神经网络,并且用优化好的神经网络进行系统极值预测,根据测试函数是2输入1输出,所以构建的BP网络结构是2-5-1,一共去2000组函数的输入输出,用其中的1900组做训练,100组做预测。遗传算法的基本参数为个体采用浮点数编码法,个体长度为21,交叉概率为0.4,变异概率为0.2,种群规模是20,总进化次数是50次,最后得到的遗传算法优化过程中最优个体适应度值变化如下所示:

相关主题
文本预览
相关文档 最新文档