遗传算法原理

遗传算法背景不作介绍。遗传算法作为一种并行随机搜索最优化算法,将自然界的优胜劣汰的生物进化原理引入优化参数形成的编码串联群体中,按照所选的适应度函数并通过遗传中的选择,交叉和变异对个体进行筛选,使适应度值较好的个体被保留,这样新的群体继承上一代,又优于上一代。反复循环,直至满足条件。

基本操作分为:

选择操作

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

交叉操作

指从个体中选择两个个体,通过两个染色体的交换组合,产生新的优秀个体。交叉过程为从群体中任选两个染色体,随机选择一点或多点染色体位置进行交换。

变异操作

从群体中任选一个个体,选择染色体中的一点进行变异以产生更优秀的后代。

遗传算法基本要素

染色体编码方法,适应度函数,遗传操作和运行参数。

染色体编码方法是指个体的编码方法,目前包括二进制法,实数法,二进制法是指把个体编码成为一个二进制串,实数法是指把个体编码成一个实数串。

适应度函数是指根据进化目标编写的计算个体适应度值的函数,通过适应度函数计算每个个体的适应度值,提供给选择算子进行选择。

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

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

模型建立

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

遗传算法实现

  种群初始化

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

        适应度函数

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

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

选择操作

遗传算法选择操作有轮盘赌法,锦标赛法等。轮盘赌法是基于适应度比例的选择策略,每个个体的选择概率p(i)为

F(i)为个体i的适应度值,因为适应度越小越好,所以在个体选择前对适应度值求倒数,k为系数,N为种群个数。

交叉操作

由于个体采用实数编码,所以交叉操作方法采用实数交叉法。第k个染色体a(k)与第l个染色体a(l)在j位的交叉方法:

b为[0,1]间的随机数。

变异操作

选取第i个个体的第j个基因a(ij)进行变异,方法:

遗传算法主函数

主函数流程:

随机初始化种群

计算种群适应度值,从中找出最优值

选择操作

交叉操作

变异操作

判断进化是否结束,否则重新计算种群适应度值

除遗传算法外,还可以采用粒子群算法,蚁群算法等优化BP神经网络

遗传算法优化BP神经网络相关推荐

  1. 基于Matlab的遗传算法优化BP神经网络在非线性函数拟合中的应用

    本微信图文详细介绍了遗传算法优化BP神经网络初始权值阈值的过程,并通过实例说明该优化能够提升BP神经网络的预测精确程度.

  2. 美赛整理之遗传算法优化BP神经网络的齿轮故障诊断问题

    遗传算法优化BP神经网络的齿轮故障诊断问题 一.问题的提出 二.问题的分析 三.结果显示 一.问题的提出 二.问题的分析 ​ 这里给出了9组15维的向量,我们的目的就是要根据这9组数据来建立一个BP神 ...

  3. 《MATLAB 神经网络43个案例分析》:第3章 遗传算法优化BP神经网络——非线性函数拟合

    <MATLAB 神经网络43个案例分析>:第3章 遗传算法优化BP神经网络--非线性函数拟合 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB 神经网 ...

  4. 遗传算法优化BP神经网络在非线性函数拟合中的应用

    遗传算法优化BP神经网络在非线性函数拟合中的应用 在工程应用中经常会遇到一些复杂的非线性系统,这些系统状态方程复杂,难以用数学方法精确建模.在这种情况下,可以建立BP神经网络表达这些非线性系统.通常B ...

  5. 遗传算法优化BP神经网络出现输入参数不足,是什么原因啊,求大神指导,代码如下

    用遗传算法优化BP神经网络,在加粗那行出现输入参数不足,是什么原因啊,求大神指导,代码如下 function err=Bpfun(x,P,T,hiddennum,P_test,T_test) fid= ...

  6. 【Matlab风电功率预测】遗传算法优化BP神经网络风电功率预测【含源码 760期】

    一.代码运行视频(哔哩哔哩) [Matlab风电功率预测]遗传算法优化BP神经网络风电功率预测[含源码 760期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1 ...

  7. 量子遗传算法优化BP神经网络的预测和分类,多输入单输出,多输 入多输出

    量子遗传算法优化BP神经网络的预测和分类,多输入单输出,多输 入多输出 93499615192034876最爱matlab

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

    最近在学遗传算法优化BP神经网络,从新浪博客,Matlab中文论坛以及<MATLAB 神经网络43个案例分析>里看了许多资料, 存在着缺少test函数,以及函数名调用错误等问题.自编了te ...

  9. BP神经网络优化 | MATLAB基于遗传算法优化BP神经网络(GA-BP)的预测模型(含完整代码)

    文章目录 前言 一.遗传算法描述 二.优化思路 三.完整代码 预测结果 前言 首先需要安装一下遗传算法工具箱,可参考这篇博客 MATLAB遗传算法工具箱安装包及安装方法(图解)_周杰伦今天喝奶茶了吗的 ...

最新文章

  1. QoS技术之流量监管和流量整形
  2. 二十不惑,三十而已|网易互联网人的“焦虑必杀技”
  3. (转)Objective-C Autorelease Pools(自动释放池)详解
  4. 论文中地层岩性和岩组描述总结
  5. PPT演示力~思维导图
  6. java飞机大战分数累加代码_JAVA 基础编程练习题39 【程序 39 分数累加】
  7. 图标圆角角度_UI设计中图标的规范及原则【附全套视频】
  8. 剑指offer不用加减乘除做加法_剑指Offer-不用加减乘除做加法
  9. PHP获取6位数随机数,获取redis里面不存在的6位随机数(设置24小时过时)
  10. 根据某个字段判断是否添加条件
  11. python课堂随机点名_【工作中的Python】随机点名小脚本
  12. 【自动化__持续集成】___java___代码非空指针
  13. python 流程控制基础知识总结 和九九乘法表、质数、水仙花数、猜拳游戏练习
  14. 儿童python编程入门软件_一款儿童编程入门的理想工具——PythonTurtle
  15. 读书笔记(十二)--穷爸爸,富爸爸
  16. 尼日利亚4g频段_世界各国全球主要4g频段资料
  17. Maven入门教程(十七)-Maven多Moudle项目创建
  18. 哪些技术会决定前端开发者的未来发展?
  19. OpenCV入门到进阶:实战三大典型项目(更新至12) IT自学视频教程
  20. 验证方法学的发展历程及比较

热门文章

  1. VJ训练总结--3.14
  2. HMM在语音识别中的应用
  3. STM32 使用Keil下载仿真时,报错 JLink Info: STM32Fxxxx: Cannot attach to CPU. Trying connect under reset.
  4. mysql 创建数据库 原则_MySQL数据库建立原则
  5. 根据IP地址和子网掩码求网络号、主机号
  6. 如何让PDF转Excel后的表格保持原格式?
  7. gedit常用快捷键
  8. 骨架屏技术讲解以及如何在Vue中实现骨架屏
  9. hadoop组件之hbase安装配置
  10. Xen中,使用XL还是XM?