遗传算法

 在几十亿年的演化过程中,自然界中的生物体已经 形成了一种优化自身结构的内在机制,它们能够不 断地从环境中学习,以适应不断变化的环境
 对于大多数生物体,这个过程是通过自然选择和有性生殖来完成的。自然选择决定了群体中哪些个体 能够存活并繁殖,有性生殖保证了后代基因的混合 与重组

 演化计算(Evolutionary Computation, EC)是在达尔文(Darwin)的进化论和孟德 尔(Mendel)的遗传变异理论的基础上产生的一种在基因和种群层次模拟自然界生 物进化过程与机制,进行问题求解的自组织、自适应的随机搜索技术
 它以达尔文进化论的“物竟天择、适者生存”作为算法的进化规则,并结合孟德尔的遗 传变异理论,将生物进化过程中的繁殖(Reproduction)、变异(Mutation)、竞争 (Competition)、选择(Selection)引入到了算法中,是一种对人类智能的演化模 拟方法  演化计算的主要有遗传算法、演化策略、演化规划和遗传规划四大分支。其中,遗传算 法是演化计算中最初形成的一种具有普遍影响的模拟演化优化算法

(插播:nips2020新群,有兴趣的上车喔。原来的大群人基本满了,审核也慢,可能要求也高

 遗传算法简称GA(Genetic Algorithms)是1962年由美国Michigan大学的Holland教授提 出的模拟自然界遗传机制和生物进化论而成的一种并行随机搜索最优化方法
 遗传算法是以达尔文的自然选择学说为基础发展起来的

自然选择学说包括以下三个方面:
 遗传:这是生物的普遍特征,亲代把生物信息交给子代,子代总是和亲代具有相同或相似 的性状。生物有了这个特征,物种才能稳定存在
 变异:亲代和子代之间以及子代的不同个体之间的差异,称为变异。变异是随机发生的, 变异的选择和积累是生命多样性的根源
 生存斗争和适者生存:具有适应性变异的个体被保留下来,不具有适应性变异的个体被淘 汰,通过一代代的生存环境的选择作用,性状逐渐与祖先有所不同,演变为新的物种

⑤遗传算法的基本原理

 遗传算法将“优胜劣汰,适者生存”的生物进化原理引入优化参数形成的编码串联群体中
 按所选择的适应度函数并通过遗传中的复制、交叉及变异对个体进行筛选,使适应度高的个体 被保留下来,组成新的群体
 新的群体既继承了上一代的信息,又优于上一代
 这样周而复始,群体中个体适应度不断提高,直到满足一定的条件
 遗传算法的算法简单,可并行处理,并能得到全局最优解

⑥遗传算法的基本操作

遗传算法的基本操作有三种

 复制(Reproduction Operator)
 从一个旧种群中选择生命力强的个体产生新种群的过程
 具有高适应度的个体更有可能在下一代中产生一个或多个子孙
 模拟无性繁殖

 交叉(Crossover Operator)
 复制操作能从旧种群中选择出优秀者,但不能创造新的染色体
 交叉模拟了生物进化过程中的有性繁殖现象,通过染色体的交换组合,产生新的优良品种
 交叉的过程:在匹配池中任选两个染色体,随机选择一点或多点交换点位置;交换双亲染 色体交换点右边的部分,即可得到两个新的染色体数字串

 变异(Mutation Operator)
 模拟生物在自然的遗传环境中由于各种偶然因素引起的基因突变
 以很小的概率随机地改变遗传基因(表示染色体的符号串的某一位)的值
 在染色体以二进制编码的系统中,它随机地将染色体的某一个基因由1变为0,或由0变为1

变异的重要作用
 没有变异,则无法在初始基因组合以外的空间进行 搜索
 使进化过程在早期就陷入局部解而进入终止过程
 为了在尽可能大的空间中获得质量较高的优化解 水至清则无鱼

 遗传算法在解空间进行高效启发式搜索,而非盲目地穷举或完全随机搜索
 遗传算法对于待寻优的函数基本无限制,它既不要求函数连续,也不要求函数可微,既可以是 数学解析式所表示的显函数,又可以是映射矩阵甚至是神经网络的隐函数,因而应用范围较广
 遗传算法具有并行计算的特点,因而可通过大规模并行计算来提高计算速度,适合大规模复杂 问题的优化

⑧遗传算法的应用领域

 函数优化
 非线性、多模型、多目标的函数优化问题,采用其他优化方法较难求解,而遗传算法却可以得到较 好的结果
 组合优化
 随着问题的增大,组合优化问题的搜索空间也急剧扩大,采用传统的优化方法很难得到最优解
 自动控制
 利用遗传算法进行控制器参数的优化
 基于遗传算法的模糊控制规则的学习
 基于遗传算法的参数辨识
 基于遗传算法的神经网络结构的优化和权值学习
 机器人
 移动机器人路径规划、关节机器人运动轨迹规划、机器人结构优化和行为协调
 图像处理
 图像处理过程中的扫描、特征提取、图像分割等的优化计算
 模式识别、图像恢复、图像边缘特征提取

⑨遗传算法关键概念

编码

 研究生物遗传是从染色体着手
 染色体是由基因排成的串,可以理解为生物编码
 研究遗传算法,研究如何编码是第一步工作
 编码是通过某种机制把求解问题抽象为由特定符号按一定顺序 排成的串
 使用二进制串进行编码是常见的方法

 利用遗传算法求下列一元函数的最大值,其中 x∈[-1,1] ,求解结果精确 到 6 位小数,请问如何编码?  f(x)=x*sin(8π*x)+3.0
 【解】:由于区间长度为2,求解结果精确到6位小数,因此可将自变量 定义区间划分为 2*10^6等份。又因为2^20 < 2*10^6 < 2^21 ,所以本例的二进 制编码长度至少需要21位,本例的编码过程实质上是将区间[-1,1]内对 应的实数值转化为一个二进制串( b20b19...b0)

初始种群
 确定编码方案后,遗传算法通常采用随机方法生成若干个个体 的集合
 该集合称为初始种群
 初始种群中个体的数量称为种群规模

适应度函数
 遗传算法对一个个体(解)的好坏用适应度函数值来评价
 适应度函数值越大,解的质量越好
 适应度函数是遗传算法进化过程的驱动力,也是进行自然选择的唯一标 准,它的设计应结合求解问题本身的要求而定
 遗传算法使用选择运算来实现对群体中的个体进行优胜劣汰操作:适应 度高的个体被遗传到下一代群体中的概率大;适应度低的个体,被遗传 到下一代群体中的概率小

遗传算子
 选择操作的任务就是按某种方法从父代群体中选取一些个体,遗传到下 一代群体
 选择算子采用轮盘赌选择方法,又称比例选择算子,它的基本思想是: 各个个体被选中的概率与其适应度函数值大小成正比。设群体大小为n , 个体i 的适应度为 Fi ,则个体i 被选中遗传到下一代群体的概率为:

 轮盘赌选择方法的实现步骤如下:
①计算群体中所有个体的适应度函数值(需要解码)
②利用比例选择算子的公式,计算每个个体被选中遗传到下一代群体的 概率
③采用模拟赌盘操作(即生成0到1之间的随机数与每个个体遗传到下一 代群体的概率进行匹配)来确定各个个体是否遗传到下一代群体中

交叉运算
 交叉运算是指对两个相互配对的染色体依据交叉概率 Pc 按某种方式相互交换其部分基因,从而形 成两个新的个体。交叉运算是遗传算法区别于其他进化算法的重要特征,它在遗传算法中起关键 作用,是产生新个体的主要方法
 交叉算子一般采用单点交叉算子
 交叉前(用”|"来表示交叉点):
 00000|01110000000010000
 11100|00000111111000101
 交叉后:
 00000|00000111111000101
 11100|01110000000010000

变异运算
 所谓变异运算,是指依据变异概率 Pm 将个体编码串中的某些基因值用其它基因值来替换,从而 形成一个新的个体
 遗传算法中的变异运算是产生新个体的辅助方法,它决定了遗传算法的局部搜索能力,同时保持 种群的多样性
交叉运算和变异运算的相互配合,共同完成对搜索空间的全局搜索和局部搜索
 变异算子采用基本位变异算子。基本位变异算子是指对个体编码串随机指定的某一位或某几位基 因作变异运算。对于基本遗传算法中用二进制编码符号串所表示的个体,若需要进行变异操作的 原有基因值为0,则变异操作将其变为1;反之,若原有基因值为1,则变异操作将其变为0
 变异前:  000001110000000010000
 变异后:  000001110001000010000

⑩遗传算法应用实例

函数最值问题

 利用遗传算法求函数最值(极值)问题是清晰地理解遗传算法 的一个较好的途径
 【例】求函数f(x1,x2)=x1^2+x2^2的最大值,其中x1 及x2取值范 围为{1,2,3,4,5,6,7}。

编码
 本例用无符号二进制整数来表示,因 x1, x2 为 0 ~ 7之间的整 数,分别用3位无符号二进制整数来表示
 将它们连接在一起所组成的6位无符号二进制数就形成了个体 的基因型,表示一个可行解
 如:基因型 X=101110 所对应的表现型是:x=[ 5,6 ]。个 体的表现型x和基因型X之间可通过编码和解码程序相互转换

初始群体的产生
 遗传算法是对群体进行的进化操作
 需要给其淮备一些表示起始搜索点的初始群体数据
 本例中,群体规模的大小取为4,即群体由4个个体组成,每个 个体可通过随机方法产生
 如:011101,101011,011100,111001

适应度计算
 遗传算法以个体适应度的大小来评定各个个体的优劣程度,从 而决定其遗传机会的大小
 本例中,目标函数总取非负值,并且是以求函数最大值为优化 目标,故可直接利用目标函数值作为个体的适应度

选择运算
 选择运算(或称为复制运算)把当前群体中适应度较高的个体按某种规则或模型遗传到下一代群体 中,一般要求适应度较高的个体将有更多的机会遗传到下一代群体中
 采用与适应度成正比的概率来确定各个个体复制到下一代群体中的数量。其具体操作过程是:
 先计算出群体中所有个体的适应度的总和
 Σfi ( i=1.2,…,M );
 其次计算出每个个体的相对适应度的大小 fi / Σfi ,它即为每个个体被遗传到下一代群体中的概率
 每个概率值组成一个区域,全部概率值之和为1
 最后再产生一个0到1之间的随机数,依据该随机数出现在上述哪一个概率区域内来确定各个个体 被选中的次数

交叉运算
 交叉运算是遗传算法中产生新个体的主要操作过程,它以某一概率相互交换某两个个体之间的部 分染色体。本例采用单点交叉的方法,其具体操作过程是:先对群体进行随机配对
 其次随机设置交叉点位置; 最后再相互交换配对染色体之间的部分基因

 其中新产生的个体“111101”、“111011”的适应度较原来两个个体 的适应度都要高

变异运算
 变异运算是对个体的某一个或某一些基因座上的基因值按某一较小的概率进行改变,它也是产生 新个体的一种操作方法。本例中,我们采用基本位变异的方法来进行变异运算,其具体操作过程 是:首先确定出各个个体的基因变异位置,下表所示为随机产生的变异点位置,其中的数字表示 变异点设置在该基因座处;然后依照某一概率将变异点的原有基因值取反

新一代

 对群体P(t)进行一轮选择、交叉、变异运算之后可得到新一代的群体p(t+1)

群体经过一代进化之后,其适应度的最大值、平均值都得到了明显的改进。事实上,这里已经找 到了最佳个体“111111”

本文为记录文章,转帖为记录,转自下边作者,特此鸣谢!

作者:微尘-黄含驰
链接:https://zhuanlan.zhihu.com/p/93749379

另外matlab的代码及进一步理解可参考遗传算法介绍并附上Matlab代码 - 知乎 (zhihu.com)

遗传算法概念、步骤、应用解析(案例直白--黄含驰)相关推荐

  1. 卡尔曼滤波器推导与解析 - 案例与图片

    李小铭 随笔- 5  文章- 2  评论- 13  </div><div id="mylinks"> 博客园  首页  新随笔  新文章  联系  管理   ...

  2. Place_opt步骤详细解析(另附两周年活动中奖名单)

    Place_opt步骤详细解析(另附两周年活动中奖名单) 文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点.点击进去后出现任何损失与社区无关. 吾爱 IC 社区两周年福利活动已经结束,现公布活动 ...

  3. 图像迁移风格保存模型_CV之NS:图像风格迁移(Neural Style 图像风格变换)算法简介、关键步骤配图、案例应用...

    CV之NS:图像风格迁移(Neural Style 图像风格变换)算法简介.过程思路.关键步骤配图.案例应用之详细攻略 目录 图像风格迁移算法简介 图像风格迁移算法过程思路 1.VGG对比NS 图像风 ...

  4. Report_报表中Ref Cursor数据源的概念和用法(案例)

    2014-06-22 Created By BaoXinjian 一.摘要 在Report Builder中,有两种数据源取法,一种是基于SQL的,另外一种就是基于Ref Cursor的写法 Ref ...

  5. CV之NS:图像风格迁移(Neural Style 图像风格变换)算法简介、过程思路、关键步骤配图、案例应用之详细攻略

    CV之NS:图像风格迁移(Neural Style 图像风格变换)算法简介.过程思路.关键步骤配图.案例应用之详细攻略 目录 图像风格迁移算法简介 图像风格迁移算法过程思路 1.VGG对比NS 图像风 ...

  6. “毒舌”专家解析案例Part12—康师傅方便面品牌追踪

    2016互联网大会全域大数据应用论坛推出寻找"2016最具创新的大数据应用案例"活动中,现场秦雯女士对入选的15个大数据应用案例做了一番解读.目前推出毒舌专家解析案例系列专栏,往期 ...

  7. 2018年中国新零售市场研究报告——概念、模式与案例【附下载】

    来源:亿欧 概要:"新零售" 之"新"在于顺势下的"变化",不应该局限于"阿里巴巴的新零售".报告尝试从一个更宽广的视角 ...

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

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

  9. spark 逻辑回归算法案例_黄美灵的Spark ML机器学习实战

    原标题:黄美灵的Spark ML机器学习实战 本课程主要讲解基于Spark 2.x的ML,ML是相比MLlib更高级的机器学习库,相比MLlib更加高效.快捷:ML实现了常用的机器学习,如:聚类.分类 ...

最新文章

  1. python库开源网站_开源Python库
  2. sql server 2005 学习心得(select查询语句用法)
  3. 利用CentOS快速构建自己的发行版(3)
  4. 文件系统_Docker文件系统实战
  5. php 输出答案,php 如何只输出最后生成的那个值??
  6. 适合 Kubernetes 初学者的一些实战练习(一)
  7. python爬虫数据库_python数据库索引|python爬虫|python入门|python教程
  8. 将旧对象装箱可自动关闭
  9. DC/DC开关电源设计
  10. gitlab root
  11. Docke--利用 commit 理解构建镜像
  12. 字典中文乱码怎么处理_CATIA教程技巧和二次开发宏:我的零件有很多的几何体,但是几何体的名称是乱的,还有乱码,影响我的后续操作,我该怎么处理?...
  13. 染整色差技术分析大全
  14. 【笔试/面试】排列组合与概率计算(二)
  15. 《算法新解》读记(一)
  16. NGN学习笔记5——IMS技术
  17. 十二周二次课 12.6 Nginx安装 12.7 默认虚拟主机 12.8 Nginx用户认证 12.
  18. Dorado7使用常见问题,不定时持续更新。
  19. 第一篇 -- 《每天读一点经济学常识 》 --于台风
  20. Unity中控制物体运动

热门文章

  1. 第十四届蓝桥杯三月真题刷题训练——第 11 天
  2. Linux中进程的基本知识以及静态调用方法ps的使用
  3. BCC异或校验及BCC在Matlab中的实现
  4. 数据库题目 - 第二高的薪水
  5. 天干地支计算公式_求天干地支的计算方法,
  6. Centos7 Mysql5.6.40 高可用架构--MHA
  7. TCP/IP详解--接收RST回应的几种情况
  8. 计算机一级考试wps知识点,计算机一级考试wps练习题
  9. 开发编码格式_编码和游戏开发
  10. 网络设备类型判断方法(原创)