基于遗传算法的BP神经网络优化算法
利用遗传算法优化BP神经网络初步研究

1.BP 算法的学习速度很慢,其原因主要有:①由于 BP 算法本质上为梯度下降法,而它 所要优化的目标函数又非常复杂,因此,必然会出现“锯齿形现象” ,这使得 BP 算法低效; ②存在麻痹现象, 由于优化的目标函数很复杂, 它必然会在神经元输出接近 0 或 1 的情况下, 出现一些平坦区,在这些区域内,权值误差改变很小,使训练过程几乎停顿;③为了使网络 执行 BP 算法,不能用传统的一维搜索法求每次迭代的步长,而必须把步长的更新规则预先 赋予网络,这种方法将引起算法低效。 2.网络训练失败的可能性较大,其原因有:①从数学角度看,BP 算法为一种局部搜索 的优化方法,但它要解决的问题为求解复杂非线性函数的全局极值,因此,算法很有可能陷 入局部极值,使训练失败;②网络的逼近、推广能力同学习样本的典型性密切相关,而从问 题中选取典型样本实例组成训练集是一个很困难的问题。 3.网络结构的选择: 尚无一种统一而完整的理论指导,一般只能由经验选定。为此, 有人称神经网络的结构选择为一种艺术。而网络的结构直接影响网络的逼近能力及推广性 质。因此,应用中如何选择合适的网络结构是一个重要的问题。 4.新加入的样本要影响已学习成功的网络, 而且刻画每个输入样本的特征的数目也必须 相同。 5.采用 s 型激活函数,由于输出层各神经元的理想输出值只能接近于 1 或 0,而不能打 到 1 或 0,因此设置各训练样本的期望输出分量时,不能设置为 1 或 0,设置 0.9 或 0.1 较为 适宜。 3 遗传算法 遗传算法是 20 世纪 60 年代中期,美国密执根大学的 John Holland 在他人工作的基础 上提出并建立起来的。 它以自然选择和遗传理论为基础, 将生物进化过程中适者生存原则与 群体内部染色体的随机信息交换机制相结合产生的一种全局寻优搜索算法。 它将问题空间中 的可能解看作是群体里的类似于染色体的个体, 并将每一个个体编码成符号串的形式。 按照 适应度函数计算出函数值,然后依据函数值,模拟生物进化过程,进行选择、交叉、变异等 操作,一代一代地不断进化,最终得到最优解。 3.1 遗传算法的特点: ①遗传算法从问题解的中集开始嫂索,而不是从单个解开始。 这是遗传算法与传统优 化算法的极大区别。传统优化算法是从单个初始值迭代求最优解的;容易误入局部最优解。 遗传算法从串集开始搜索,复盖面大,利于全局择优。 ②遗传算法求解时使用特定问题的信息极少,容易形成通用算法程序。 由于遗传算法 使用适应值这一信息进行搜索, 并不需要问题导数等与问题直接相关的信息。 遗传算法只需 适应值和串编码等通用信息,故几乎可处理任何问题。 ③遗传算法有极强的容错能力 遗传算法的初始串集本身就带有大量与最优解甚远的信 息;通过选择、交叉、变异操作能迅速排除与最优解相差极大的串;这是一个强烈的滤波过 程;并且是一个并行滤波机制。故而,遗传算法有很高的容错能力。 ④遗传算法中的选择、交叉和变异都是随机操作,而不是确定的精确规则。 这说明遗 传算法是采用随机方法进行最优解搜索, 选择体现了向最优解迫近, 交叉体现了最优解的产 生,变异体现了全局最优解的复盖。 ⑤遗传算法具有隐含的并行性。 4 遗传算法优化神经网络 遗传算法优化神经网络主要包括三方面:网络结构优化、权值优化、学习规则优化,这 里主要讨论的是权值优化。 首先,用遗传算法对初始权值分布进行优化,在解空间中找出一个较好的搜索空间;然 后,再用 BP 算法在这个较小的解空间中搜索出最优解。用改进的遗传算法优化神经网络权
基于遗传算法的BP神经网络算法

目录
• 1. 简要介绍BP网络算法 • 2. 简要介绍遗传算法 • 3. 介绍基于遗传算法的BP网络迭代流程
BP神经网络 (Back Propagation Neural Network)
• 其主要的学习过程是:将输入从输入层经隐层单元逐层处理 , 并传向输出层,每一层神经元的状态只影响下一层神经元的状 态。如果在输出层不能得到期望的输出,则将误差信号沿原来 的连接通路反向传播,通过梯度下降法修改各神经元的权值, 使误差信号最小 。
THANKS
回填区地表沉降系数预测模型实验结果
小结
• 基于遗传算法的BP神经网络算法结合了两个算法的优点,克服 了BP算法中学习效率低、收敛速度慢、容易陷入局部最优等缺 点。 • 但是应当注意到,由于BP一GA算法在扩大种群规模的时候,其 用于存储染色体的存储空间直线变大,对于网络结构比较复杂 的神经网络更是如此,这也是该算法的一个缺点,有待于改进。
遗传算法基本流程
• Step1:开始 • Step2:参数编码 • Step3:初始化种群 • Step4:计算适应度 • Step5:判断是否满足终止条件,满足则直接执行Step10 • Step6:执行选择操作 • Step7:执行交叉操作 • Step8:执行变异操作 • Step9:产生新种群,返回执行Step4 • Step10:结束
• DNA1 • DNA2 • NEW DNA
交叉概率:
变异操作(Mutation)
• 变异概率:
性能比较
BP算法实验时,选用的样本数是550,学习速率α =0.7,输人层 结点14个(共有14个特征点 ),输出层共有5个,隐含层9个。 BP一GA算法实验时,选用的样本数是550,交换概率Pc=0.7, 变异概率Pm=0.2,输人层结点14个,输出层结点5个,隐含层 9 个,种群规模300个。
基于遗传算法的BP神经网络算法

基于遗传算法的BP神经网络算法基于遗传算法的BP神经网络算法是一种将遗传算法与BP神经网络相结合的机器学习算法。
BP神经网络是一种具有自适应学习功能的人工神经网络,它通过反向传播算法来不断调整网络的权重和阈值,从而实现对样本数据的学习和预测。
遗传算法是一种模拟生物进化过程的优化算法,它通过选择、交叉和变异等操作来产生下一代的优秀个体,从而逐步寻找到最优解。
在基于遗传算法的BP神经网络算法中,遗传算法用于优化BP神经网络的初始权重和阈值,以提高网络的学习和泛化能力。
1.初始化个体群体:随机生成一组个体,每个个体代表BP神经网络的初始权重和阈值。
2.适应度评估:使用生成的个体来构建BP神经网络,并使用训练数据进行训练和验证,评估网络的适应度,即网络的性能指标。
3.选择操作:根据个体的适应度值确定选择概率,选择一些适应度较高的个体作为父代。
4.交叉操作:从父代中选择两个个体,通过交叉操作生成两个新的子代个体。
5.变异操作:对新生成的子代个体进行变异操作,引入一定的随机扰动,增加种群的多样性。
6.替换操作:根据一定的替换策略,用新生成的子代个体替代原来的父代个体。
7.终止条件判断:根据预先设定的终止条件(如达到最大迭代次数或达到一些适应度值阈值)判断是否终止算法。
8.返回结果:返回适应度最高的个体,即最优的BP神经网络参数。
然而,基于遗传算法的BP神经网络算法也存在一些缺点。
首先,算法的收敛速度较慢,需要较长的时间进行优化。
其次,算法需要设置一些参数,如种群大小、交叉概率和变异概率等,不同的参数组合可能对算法的性能产生较大影响,需要经过一定的试错过程。
综上所述,基于遗传算法的BP神经网络算法是一种结合了两种优化方法的机器学习算法,能够有效提高BP神经网络的学习和泛化能力。
同时,也需要在实际应用中根据具体情况选择合适的参数设置和终止条件,以获得更好的算法性能。
遗传算法及遗传算法优化BP神经网络实现代码

遗传算法开放分类:编程、程序、数学、计算机、算法目录• 遗传算法定义• 遗传算法特点• 遗传算法的应用• 遗传算法的现状• 遗传算法的一般算法• 遗传算法实例遗传算法定义[编辑本段]遗传算法(Genetic Algorithm)是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法,它是有美国Michigan 大学J.Holland教授于1975年首先提出来的,并出版了颇有影响的专著《Adaptation in Natural and Artificial Systems》,GA这个名称才逐渐为人所知,J.Hilland教授所提出的GA通常为简单遗传算法(SGA)。
遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。
每个个体实际上是染色体(chromosome)带有特征的实体。
染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。
因此,在一开始需要实现从表现型到基因型的映射即编码工作。
由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度(fitness)大小挑选(selection)个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。
这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解。
遗传算法特点[编辑本段] 遗传算法是一类可用于复杂系统优化的具有鲁棒性的搜索算法,与传统的优化算法相比,主要有以下特点:1、遗传算法以决策变量的编码作为运算对象。
基于遗传算法的BP神经网络算法

基于遗传算法的BP神经网络算法人工神经网络(Artificial Neural Network,ANN)是一种模拟人脑中神经元运作原理的数学模型。
反向传播神经网络(Back Propagation Neural Network,BPNN)是一种常用的人工神经网络模型,其训练方法是通过计算输出与期望输出之间的误差,并将误差反向传播进行网络参数的调整。
遗传算法(Genetic Algorithm,GA)是一种基于生物进化理论的优化方法,通过模拟基因遗传和进化的过程来最优解。
BP神经网络算法结合遗传算法能够提高网络的训练效果,并进一步提升算法的性能。
1.随机初始化BP神经网络的权重和阈值。
BP神经网络的训练需要初始化网络的权重和阈值,遗传算法可以随机生成初始值作为种群的个体。
2.选择适应度函数。
适应度函数用于评估每个个体的适应度程度,即个体在解决问题中的优劣程度。
对于BP神经网络,适应度函数可以选择网络的误差函数,如均方误差。
3.选择遗传算子。
遗传算子包括选择、交叉和变异操作。
选择操作根据个体的适应度确定被选中参与下一代个体的概率。
交叉操作模拟基因交换,通过交叉操作可以产生新的个体。
变异操作则模拟基因突变,通过变异操作可以增加种群的多样性。
4.根据选择的适应度函数计算种群的适应度值。
对于BP神经网络,可以使用遗传算法对初始种群进行迭代并通过BP算法进行训练,根据训练结果计算个体的适应度值。
5.根据选择的适应度值进行选择操作。
根据适应度值选择种群中的个体,并根据选择的概率生成新的种群。
6.进行交叉操作。
通过交叉操作将选定的个体进行基因交换,并生成新的个体。
7.进行变异操作。
对选定的个体进行基因突变,增加种群的多样性。
8.根据选择的适应度函数计算新种群的适应度值。
对新生成的个体进行适应度评估。
9.判断终止条件。
终止条件可以根据算法的需求进行设置,如达到指定的迭代次数或达到指定的适应度阈值。
10.重复进行步骤5至步骤9,直到满足终止条件。
利用云模型和遗传算法优化BP神经网络权值

利用云模型和遗传算法优化BP神经网络权值摘要:标准BP算法主要根据训练样本确定神经网络的权值,由于BP算法采用沿梯度下降的搜索算法,因而其结果对初始权值非常敏感,收敛速度慢,易陷入局部极小。
结合正态云模型云滴的随机性和稳定倾向性,以及遗传算法的全局搜索能力,收敛速度快等特性优化神经网络的权值和阈值。
分类实验结果表明,该算法比标准BP算法收敛速度快,分类正确率高。
关键词:云模型;遗传算法;标准BP算法;神经网络0 引言BP算法(Back Propogation Algorithm)是目前应用最为广泛的神经网络学习算法,但由于BP算法采用沿梯度下降的搜索算法,因而其结果对初始权值非常敏感,不同的初始权值可能导致不同的结果以及易陷入局部极小等问题。
本文结合遗传算法的高度并行、随机、自适应的全局性概率搜索以及正态云模型云滴的随机性和稳定倾向性特点优化神经网络的权值和阈值。
该算法中的交叉概率、变异概率由X条件云发生器产生。
1 优化原理先利用神经网络试探出最好的网络隐层结点数,再利用本文提出的算法调整网络的权值以及阈值,然后再用调整好的权值和阈值进行分类。
编码:对于包含一层隐藏层模式为m-n-l多层神经网络共有q=m*n+n*l+n+l个权值和阈值需要优化,其中m为输入层结点数,n 为隐藏层结点数,l为输出层结点数。
将这q个权值和阈值记为W=(W 1,W2,…,W q),采用实数编码,将行向量W看作是一条染色体,而其中每个实数W i(i=1,2,…,q)是染色体的一个基因位。
选择算子:采用轮盘赌和精英保留选择策略。
每个染色体产生后代的数目正比于它的适应度值的大小,并且每一代中染色体的总数保持不变,这种方法也称为轮盘赌选择。
假设群体的大小为n,个体A i的适应度值为f(A i),则个体A i被选择的概率P(A i)为:P(A i)=f(A i)∑ni=1f(A i)交叉算子:随机产生二串长度为q的二进制串,设有两个父代,P=(P1,P2,…,P q)以及M=(M1,M2,…,M q),采用下面的方式得到两个子代:C=(C1,C2,…,C q) 和D=(D1,D 2,…,D q),用其中的一个二进制串产生子代C,用另一个二进制串产生子代D。
毕业设计论文基于遗传算法的BP神经网络的优化问题研究.doc

编号:审定成绩:重庆邮电大学毕业设计(论文)设计(论文)题目:基于遗传算法的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 遗传算法的起源从生物学上看,生物个体是由细胞组成的,而细胞则主要由细胞膜、细胞质、和细胞核构成。
基于遗传算法优化BP神经网络圆柱壳结构可靠度分析

基于遗传算法优化BP神经网络圆柱壳结构可靠度分析目录一、内容概括 (1)(一)基于遗传算法的优化方法介绍 (2)(二)BP神经网络介绍与应用场景分析 (2)(三)圆柱壳结构可靠度分析方法探讨 (4)二、圆柱壳结构基础理论知识概述 (5)(一)圆柱壳结构的组成及特点分析 (6)(二)圆柱壳结构的力学特性研究 (7)(三)圆柱壳结构可靠度评价指标介绍 (9)三、BP神经网络在圆柱壳结构可靠度分析中的应用 (9)(一)BP神经网络模型的构建与训练过程 (10)(二)基于BP神经网络的圆柱壳结构可靠度预测模型建立与实施步骤介绍11 (三)BP神经网络模型的优缺点分析及对策建议 (13)四、遗传算法在优化BP神经网络模型中的应用 (14)(一)遗传算法的基本原理及特点介绍 (16)(二)基于遗传算法的BP神经网络模型优化过程与实施步骤解析..16(三)案例分析 (18)一、内容概括介绍了BP神经网络的基本原理及其在当前圆柱壳结构可靠度分析中的局限性。
BP神经网络是一种通过反向传播算法进行权值和阈值调整的多层前馈网络,广泛应用于各种工程领域。
传统的BP神经网络在解决复杂结构优化问题时,往往存在易陷入局部最优解、收敛速度慢等问题。
阐述了遗传算法的基本原理和特性,遗传算法是一种模拟自然选择和遗传机制的优化搜索算法,具有全局优化能力,能够解决复杂的非线性问题。
将遗传算法与BP神经网络相结合,有望提高圆柱壳结构可靠度分析的准确性和效率。
详细描述了基于遗传算法优化BP神经网络的流程和方法。
通过遗传算法优化BP神经网络的权值和阈值,提高网络的性能和准确性。
将优化后的BP神经网络应用于圆柱壳结构可靠度分析,通过大量的数据训练和测试,验证该方法的可行性和有效性。
通过实例分析,展示了基于遗传算法优化BP神经网络在圆柱壳结构可靠度分析中的实际应用效果。
该方法能够显著提高圆柱壳结构可靠度分析的准确性和效率,为工程实践提供了一种新的思路和方法。
基于遗传算法的BP神经网络优化算法

案例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神经网络权值和阈值的通用

B2(i,1)=x((R*S1+S1*S2+S1)+i);
end
% 计算S1与S2层的输出
A1=tansig(W1*P,B1);
A2=purelin(W2*A1,B2);
% 计算误差平方和
SE=sumsqr(T-A2);
val=1/SE; % 遗传算法的适应值
figure(2)
plot(trace(:,1),trace(:,3),'r-');
hold on
plot(trace(:,1),trace(:,2),'b-');
xlabel('Generation');
ylabel('Fittness');
%下面将初步得到的权值矩阵赋给尚未开始训练的BP网络
net.trainParam.epochs=50;
net.trainParam.goal=0.001;
%训练网络
net=train(net,XX,YY);
程序二:适应值函数
function [sol, val] = gabpEval(sol,options)
% val - the fittness of this individual
%--------------------------------------------------------------------------
%数据归一化预处理
nntwarn off
XX=premnmx(XX);
YY=premnmx(YY);
%创建网络
net=newff(minmax(XX),[19,25,1],{'tansig','tansig','purelin'},'trainlm');
基于遗传算法的优化BP神经网络算法研究

1引言神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型,凭借着复杂的系统结构,通过对系统内部节点连接关系的调节,实现对信息的高效处理。
作为技术最为成熟的神经网络模拟,BP 神经网络具有良好的自学习、自适应以及泛化能力,在许多领域中都有着广泛的应用。
而针对BP 神经网络在应用环节存在的问题,需要采取相应的优化算法,提升神经网络的收敛速度和处理能力。
2遗传算法与BP 神经网络遗传算法遵循的是生物界中适者生存的法则,其基本原理,是指将问题参数进行编码,形成染色体,通过迭代的方式,运用选择、变异、交叉等运算,对种群中染色体的信息进行交换,继而形成能够满足优化目标的染色体。
BP (Back Propagation )神经网络最初产生于1986年,属于一种依照误差逆传播算法训练的多层前馈网络,也是当前技术条件下应用最为广泛的神经网络模型之一,其可以对输入-输出模式的映射关系进行学习和存储,同时不需要对能够揭示这些映射关系的方程进行描述。
神经网络具备自适应和自组织能力,在进行学习和训练的过程中,可以通过改变突触权重值的方式,更好地适应周边环境的变化。
在同一个神经网络中,如果内容不同,学习方式不同,则会产生不同的功能。
人工神经网络从本质上看,更加接近具备自主学习能力的系统,可以通过不断的学习,超出最初设计的知识水平。
在人工神经网络中,比较常见的学习方法有两种,一是有监督的学习,可以结合标准样本,进行分类或者模仿,二是无监督的学习,在制定相应的学习规则后,系统会根据自身所处环境,进行学习内容的分析和选择,更加接近人脑的功能特点。
3基于遗传算法的优化BP 神经网络算法3.1算法基本原理①BP 算法。
BP 神经网络算法主要包括了数据流的前向计算和误差信号的反向传播两个方面的内容,结合三层BP 神经【基金项目】廊坊市科技计划项目(2016011077)。
【作者简介】王军涛(1980-)男,讲师,河北邯郸人,从事计算机应用研究。
基于遗传算法优化的BP神经网络在考研结果预测中的应用

黑铉语言信麵与电睡China Computer & Communication2021年第1期基于遗传算法优化的B P神经网络在考研结果预测中的应用李驰(四川大学锦城学院计算机科学与软件工程系,四川成都611731)摘要:通过遗传算法先对BP神经网络的初始权值和阈值进行优化后,再将BP神经网络用于考研结果的预测模型中。
实验表明,这种优化后的预测模型因为克服了收敛速度慢、易产生局部最小等缺陷,比单纯使用BP神经网络建立的预测 模型准确度更高。
将这个预测模型用于考研报名之前供学生预测参考,方便学生做出合理的决策,具有一定的实际意义。
关键词:考研;预测;BP神经网络;遗传算法中图分类号:TD712 文献标识码:A文章编号:1003-9767 (2021) 01-038-04Application of BP Neural Network Based on Genetic Algorithms Optimization in Prediction of Postgraduate Entrance ExaminationLI Chi(Department of Computer Science and Software Engineering,Jincheng College of Sichuan University,Chengdu Sichuan611731, China) Abstract:F irs tly,the in itia l weight and threshold of BP neural network are optimized by genetic algorithm,and then BP neural netw ork is used in the pre diction model of the results o f the postgraduate entrance exam ination.The experim ent shows that the optim ized prediction model overcomes the shortcomings o f slow convergence speed and easy to produce local m inim um,so it is more accurate than the pre diction model established by BP neural network alone.This pre diction model can be used as a reference for students to make a reasonable decision before applying fo r postgraduate entrance examination.Key words:postgraduate entrance exam ination;prediction;BP neural network;genetic algorithms〇引言随着社会对于高素质知识型人才的需求越来越迫切,我 国报考研究生的人数呈现逐年大幅増加的趋势。
基于遗传算法改进的BP神经网络加热炉控制系统参数优化

基于遗传算法改进的BP神经网络加热炉控制系统参数优化摘要以加热炉控制系统为研究对象,提出了一种基于遗传算法改进的BP网络优化PID控制参数方法,并与经典的临界比例度―Ziegler-Nichols方法进行比较。
仿真结果表明该算法具有较好的控制效果。
关键词 PID控制;BP神经网络;遗传算法;参数优化1 引言由于常规PID控制具有鲁棒性好,结构简单等优点,在工业控制中得到了广泛的应用。
PID控制的基本思想是将P(偏差的比例),I(偏差的积分)和 D (偏差的微分)进线性组合构成控制器,对被控对象进行控制。
所以系统控制的优劣取决于这三个参数。
但是常规PID控制参数往往不能进行在线调整,难以适应对象的变化,另外对高阶或者多变量的强耦合过程,由于整定条件的限制,以及对象的动态特性随着环境等的变化而变化,PID参数也很难达到最优的状态。
神经网络具有自组织、自学习等优点,提出了利用BP神经网络的学习方法,对控制器参数进行在线调整,以满足控制要求。
由于BP神经网络学习过程较慢,可能导致局部极小点[2]。
本文提出了改进的BP算法,将遗传算法和BP算法结合对网络阈值和权值进行优化,避免权值和阈值陷入局部极小点。
2 加热炉的PID控制加热炉控制系统如图1所示,控制规律常采用PID控制规律。
图1 加热炉控制系统简图若加热炉具有的数学模型为:则PID控制过程箭图可以用图2表示。
其中,采用经典参数整定方法――临界比例度对上述闭环系统进行参数整定,确定PID控制器中 K p=2.259, K i=0.869, K d=0.276。
参考输入为单位阶跃信号,仿真曲线如图3所示。
图2 PID控制系统图3 Z―N整定的控制曲线仿真曲线表明,通过Z―N方法整定的参数控制效果不佳,加上PID参数不易实现在线调整,所以该方法不宜用于加热炉的在线控制。
3 基于遗传算法改进的BP神经网络PID控制器参数优化整定对于加热炉控制系统设计的神经网络自整定PID控制,它不依赖对象的模型知识,在网络结构确定之后,其控制功能能否达到要求完全取决于学习算法。
案例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次,最后得到的遗传算法优化过程中最优个体适应度值变化如下所示:4 案例扩展4.1 网络优化方法的选择4.2 算法的局限性清空环境变量clcclear网络结构建立%读取数据load data input output%节点个数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=50; %进化代数,即迭代次数sizepop=20; %种群规模pcross=[0.4]; %交叉概率选择,0和1之间pmutation=[0.2]; %变异概率选择,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%找最好的染色体[bestfitness bestindex]=min(individuals.fitness);bestchrom=individuals.chrom(bestindex,:); %最好的染色体avgfitness=sum(individuals.fitness)/sizepop; %染色体的平均适应度% 记录每一代进化中最好的适应度和平均适应度trace=[avgfitness bestfitness];迭代求解最佳初始阀值和权值进化开始for i=1:maxgeni% 选择individuals=Select(individuals,sizepop);avgfitness=sum(individuals.fitness)/sizepop;%交叉individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bou nd);% 变异individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizep op,i,maxgen,bound);% 计算适应度for j=1:sizepopx=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>newbestfitnessbestfitness=newbestfitness;bestchrom=individuals.chrom(newbestindex,:);endindividuals.chrom(worestindex,:)=bestchrom;individuals.fitness(worestindex)=bestfitness;avgfitness=sum(individuals.fitness)/sizepop;trace=[trace;avgfitness bestfitness]; %记录每一代进化中最好的适应度和平均适应度endi =1i =2i =3i =4i =5i =6i =7i =8i =9i =10i =11i =12i =13i =14i =15i =16i =17i =18i =19i =20i =21i =22i =23i =24i =25i =26i =27i =28i =29i =30i =31i =32i =33i =34i =35i =36i =37i =38i =39i =40i =41i =42i =43i =44i =45i =46i =47i =48i =49i =50遗传算法结果分析figure(1)[r c]=size(trace);plot([1:r]',trace(:,2),'b--');title(['适应度曲线 ''终止代数=' num2str(maxgen)]); xlabel('进化代数');ylabel('适应度');legend('平均适应度','最佳适应度');disp('适应度变量');x=bestchrom;Warning: Ignoring extra legend entries.适应度变量把最优初始阀值权值赋予网络预测%用遗传算法优化的BP网络进行值预测w1=x(1:inputnum*hiddennum);B1=x(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum);w2=x(inputnum*hiddennum+hiddennum+1:inputnum*hiddennum+hiddennum+hidd ennum*outputnum);B2=x(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hidd ennum+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=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;figure(2)plot(error)k=error./output_testk =Columns 1 through 9-0.0003 0.0010 0.0003 0.0001 0.0002 -0.0005 0.0003 0.0003 0.0109Columns 10 through 18-0.0007 -0.0003 0.0002 -0.0008 -0.0015 -0.0002 0.0011 0.0002 0.0004Columns 19 through 270.0002 0.0003 -0.0000 0.0000 -0.0004 -0.0004 0.0005 0.0001 0.0023Columns 28 through 36-0.0000 -0.0003 0.0000 -0.0005 -0.0002 0.0003 -0.0002 -0.0002 0.0001Columns 37 through 450.0001 0.0002 0.0002 0.0011 -0.0004 -0.0006 0.0002 0.0000 0.0000Columns 46 through 540.0001 0.0001 0.0000 -0.0001 0.0016 0.0002 -0.0003 -0.0000 -0.0000Columns 55 through 630.0000 0.0003 -0.0004 0.0001 0.0002 0.0002 0.0002 0.0000 0.0002Columns 64 through 720.0002 -0.0001 0.0003 0.0005 0.0002 -0.0003 -0.0001 -0.0000 0.0002Columns 73 through 810.0000 -0.0002 -0.0002 0.0002 -0.0000 -0.0003 0.0001 -0.0001 0.0006Columns 82 through 90-0.0006 0.0003 0.0068 -0.0005 0.0001 -0.0001 -0.0001 -0.0010 -0.0002Columns 91 through 990.0001 0.0002 -0.0000 0.0003 0.0000 0.0000 -0.0003 -0.0001 0.0003Column 100-0.0004。
用遗传算法优化BP神经网络程序

用遗传算法优化BP神经网络程序红色程序是用遗传算法直接训练BP权值tic, % 开始计时[P,T,R,S1,S2,S]=nninit; % BP网络初始化% 随机生成W1,B1,W2,B2[W1,B1]=rands(S1,R);[W2,B2]=rands(S2,S1);% BP网络训练的参数设置disp_fqre=100; max_epoch=3000;err_goal=0.002;lr=0.01;TP=[disp_fqre max_epoch err_goal lr];% 开始训练[W1,B1,W2,B2,te,tr]=trainbp(W1,B1,'tansig',W2,B2,'purelin',P, T,TP); % 仿真结果TT=simuff(P,W1,B1,'tansig',W2,B2,'purelin')toc % 结束计时% 在MATLAB6.5下编程tic, % 开始计时[P,T,R,S1,S2,S]=nninit; % BP网络初始化% 生成BP网络net = newff(minmax(P),[S1 S2],{'logsig' 'logsig'},'trainlm');% BP网络训练的参数设置net.trainParam.epochs = 3000;net.trainParam.goal = 0.002;net.trainParam.lr = 0.01;% 开始训练net = train(net,P,T);% 仿真结果TT=sim(net,P)toc % 结束计时% 遗传算法的适应值计算function [sol, val] = gabpEval(sol,options)% val - the fittness of this individual% sol - the individual, returned to allow for Lamarckian evolution % options - [current_generation][P,T,R,S1,S2,S]=nninit;for i=1:S,x(i)=sol(i);end;[W1, B1, W2, B2, P, T, A1, A2, SE, val]=gadecod(x);tic, %开始计时% 首先进行遗传算法[P,T,R,S1,S2,S]=nninit;aa=ones(S,1)*[-1 1];popu=30;initPpp=initializega(popu,aa,'gabpEval');gen=80; % 遗传代数% 遗传计算[x endPop bPop trace]=ga(aa,'gabpEval',[],initPpp,[1e-6 1 1],'maxGenTerm',gen,...'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMutation',[2 gen 3]);% x The best found% Lets take a look at the performance of the ga during the runsubplot(2,1,1)plot(trace(:,1),1./trace(:,3),'r-')hold onplot(trace(:,1),1./trace(:,2),'b-')xlabel('Generation');ylabel('Sum-Squared Error');subplot(2,1,2)plot(trace(:,1),trace(:,3),'r-')hold onplot(trace(:,1),trace(:,2),'b-')xlabel('Generation');ylabel('Fittness');% 下面进行BP算法figure(2)% 将遗传算法的结果分解为BP网络所对应的权值、阈值[W1 B1 W2 B2 P T A1 A2 SE val]=gadecod(x);% BP网络训练的参数设置disp_fqre=100; max_epoch=3000;err_goal=0.002;lr=0.01;TP=[disp_fqre max_epoch err_goal lr];[W1,B1,W2,B2,te,tr]=trainbp(W1,B1,'tansig',W2,B2,'purelin',P, T,TP); % 仿真结果TT=simuff(P,W1,B1,'tansig',W2,B2,'purelin')toc % 结束计时% 将遗传算法的编码分解为BP网络所对应的权值、阈值function [W1, B1, W2, B2, P, T, A1, A2, SE, val]=gadecod(x) [P,T,R,S1,S2,S]=nninit;% 前R*S1个编码为W1for i=1:S1,for k=1:R,W1(i,k)=x(R*(i-1)+k);endend% 接着的S1*S2个编码(即第R*S1个后的编码)为W2for i=1:S2,for k=1:S1,W2(i,k)=x(S1*(i-1)+k+R*S1);endend% 接着的S1个编码(即第R*S1+S1*S2个后的编码)为B1for i=1:S1,B1(i,1)=x((R*S1+S1*S2)+i);end% 接着的S2个编码(即第R*S1+S1*S2+S1个后的编码)为B2 for i=1:S2,B2(i,1)=x((R*S1+S1*S2+S1)+i);end% 计算S1与S2层的输出A1=tansig(W1*P,B1);A2=purelin(W2*A1,B2);% 计算误差平方和SE=sumsqr(T-A2);val=1/SE; % 遗传算法的适应值% 用GA训练BP网络的权值、阈值tic, % 开始计时[P,T,R,S1,S2,S]=nninit; % BP网络初始化aa=ones(S,1)*[-1 1];popu=60; % 初始种群个数initPpp=initializega(popu,aa,'gabpEval');gen=700; % 遗传代数[x endPop bPop trace]=ga(aa,'gabpEval',[],initPpp,[1e-6 1 1],'maxGenTerm',gen,...'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMutation',[2 gen 3]);%%Lets take a look at the performance of the ga during the runsubplot(2,1,1)plot(trace(:,1),1./trace(:,3),'r-')hold onplot(trace(:,1),1./trace(:,2),'b-')xlabel('Generation');ylabel('Sum-Squared Error');subplot(2,1,2)plot(trace(:,1),trace(:,3),'r-')hold onplot(trace(:,1),trace(:,2),'b-')xlabel('Generation');ylabel('Fittness');% 从编码x中解码出BP网络所对应的权值、阈值[W1 B1 W2 B2]=gadecod(x);% 仿真结果TT=simuff(P,W1,B1,'tansig',W2,B2,'purelin') toc % 结束计时% BP网络初始化:给出网络的训练样本P、T,% 输入、输出数及隐含神经元数R,S2,S1 function [P,T,R,S1,S2,S]=nninitp=[0 0 0 0 0;1 0 0 0 1;0 1 0 0 1;0 0 1 0 0;0 0 0 1 0];P=p';t=[0 0 0 0;1 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1];t=t';T=t;[R,Q]=size(P);[S2,Q]=size(T);S1=6;S=R*S1+S1*S2+S1+S2; % 遗传算法编码长度。
基于遗传算法BP网络优化.

班级:控制5班 学号:2111504213 姓名:张睿设计一个BP 神经网络监督控制系统,被控对象为:321000()s 87.35s 10470G s s=++ 采样时间1ms ,输入信号为方波信号,幅值0.5,频率2hz 。
设计一个BP 神经网络监督控制系统,并采用遗传算法进行BP 神经网络参数及权值的优化设计,并进行matlab 仿真。
需要说明控制系统结构,遗传算法优化BP 网络的具体步骤,并对仿真结果做出分析。
解决过程及思路如下:1 BP 网络算法以第p 个样本为例,用于训练的BP 网络结构如图1所示。
图1 具有一个隐含层和输出层的BP 神经网络结构网络的学习算法如下: (1)信息的正向传播隐含层神经元的输入为所有输入加权之和,j ij i ix w x =∑隐层神经元的输出'j x 采用S 函数激发j x ,则'1()1j j j x x f x e-==+ '''(1)j j j jx x x x ∂=-∂…......... (i)jk输入层隐含层输出层… ……ij wjk wx kj x'jx输出层的神经元输出为'k jk j jx w x =∑网络输出与理想输出误差为()k k e k x x =-误差性能指标函数为211()2N p k E e k ==∑上式的N 表示网络输出层的个数。
(2)利用梯度下降法调整各层间权值的反向传播 对从第j 个输入到第k 个输出的权值有:'11()NNp k jk k j k k jkjk E x w e e k x w w ηηη==∂∂∆=-==∂∂∑∑ 其中,η为学习速率,[]0,1η∈。
K+1时刻网络权值为(1)()jk jk jk w k w k w +=+∆对从第i 个输入到第j 个输出的权值有:1Np kij kk ijijE x w e w w ηη=∂∂∆=-=∂∂∑ 式中,''''(1)j jk k jk j j i ij j j ijx x x x w x x x w x x w ∂∂∂∂=⋅⋅=⋅⋅-⋅∂∂∂∂ t+1时刻网络权值为(1)()ij ij ij w k w k w +=+∆2.BP 网络的监督控制系统结构设计的BP 网络监督控制系统结构如图2所示。
基于遗传算法优化的BP神经网络图像分割

BP神经网络是一种采用反向传播算法的多层前 馈网络,能够逼近任意的非线性映射关系,而 且有很好的泛化能力。
自组织网络是一种非监督学习神经网络,这种 网络的学习目的是从一组数据中提取有意义的 特征或某种内在规律性(分布特征或按某种目 的聚类)。此类网络对输入的数据有“聚类” 作用,可起到数据压缩的作用,同时又具有特 征提取的作用。
遗传算法特点: 遗传算法特点:
遗传算法的算法简单,是解决大规模的优化问题的首选算法 遗传算法计算方式是并行的,并行操作不但可以防止搜索陷入局部 可以防止搜索陷入局部 最优解,而且还可以大大提高算法的运算速度快 最优解 遗传算法操作的对象是由参数转化的编码,而不是参数本身 遗传算法是通过适应度函数评价目标的,不需要过多的推导和附加 信息 遗传算法进行优化的规则不是预先给定的,而是由概率决定的 遗传算法采取的搜索方式是高效全局性 高效全局性启发式搜索 高效全局性 遗传算法对优化函数采取不限制的原则,因此应用范围相当广泛
神经网络在图像分割中的应用
神经网络算法比起传统的算法表现了很大的优越 性: (1)高度并行处理能力,处理速度远高于传统的 序列处理算法; (2)具有自适应功能,能够根据学习提供的数据 样本找出数据的内在联系; (3)非线性映射功能,图像处理很多问题是非线 性问题,神经网络为处理这些问题提供了有用的 工具; (4)具有泛化功能,能够处理带有噪声的或不完 全的数据.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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<MAXGEN
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.%% 画进化图
49.figure(1);
50.plot(1:MAXGEN,trace(end,:));
51.grid on
52.xlabel('遗传代数')
53.ylabel('误差的变化')
54.title('进化过程')
55.bestX=trace(1:end-1,end);
56.bestErr=trace(end,end);
57.fprintf(['最优初始权值和阈值:\nX=',num2str(bestX'),'\n最小误差
err=',num2str(bestErr),'\n'])
复制代码
4、运行结果:
遗传算法进化曲线。
图3-2 误差进化曲线
图3-3 随机权值和阈值训练误差曲线
图3-4 优化权值和阈值训练误差曲线。