什么是遗传算法?

遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局优化概率搜索算法

遗传算法的基本原理

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

遗传算法的基本操作

复制:从就种群中选择生命力强的个体产生新种群的过程。具有高配适应度的个体更可能在下一代中产生一个或多个子孙
交叉:复制操作能从旧种群中选择出优秀者,但不能创造出新的染色体。交叉模拟了生物进化过程中的有性繁殖现象,通过染色体的交换组合,产生新的优良品种
变异:模拟生物在自然的遗传环境中由于各种偶然因素引起的基因突变,以很小的概率随机的改变遗传基因的值。在染色体以二进制编码的系统中,它随机的将染色体的某一个基因由1变成0或由0变成1

遗传算法的关键概念

编码:编码是第一步工作,编码是通过某种机制把求解问题抽象为由特定符号按一定顺序排成的串。二进制编码是常见的编码方式
初始种群:确定编方案后,遗传算法通常采用随机方法生成若干个个体的集合,该集合称为初始种群。初始种群的规模称之为种群规模
适应度函数:遗传算法对一个个题的好坏用适应度函数来评价。适应度高的个体被遗传到下一代种群中的概率大,适应度小的个体被遗传到下一代群体中的概率小。
遗传算子:选择操作的任务就是按照某种方法从父带群体中选取一些个体,遗传到下一代群体。选择算子采用轮盘赌选择方法,又称比例算子,它的基本思想是:各个个体被选中的改路与其适应度函数值大小成正比。就是按比例算的意思。
轮盘赌的实现方式如下:
①计算群体中所有个体的适应度函数函数值
②采用比例算子的公式,计算每个个体被选中遗传到下一代群体的概率
③采用模拟赌盘的操作,来确定各个个体是否被遗传到下一代群体中

交叉运算:交叉运算是指对两个相互配对的染色体一句交叉概率按某种方式相互交换其部分基因,从而形成新的个体。是产生新个体的主要方法
变异运算:变异运算是指按照变异概率将个体编码串中的某些基因值用其他基因值来替换,从而形成新的个体。遗传算法中的变异运算是产生新个体的辅助方法,它决定了遗传算法的局部搜索能力,同时保持了种群的多样性。交叉运算和变异运算的相互配合,共同完成对搜索空间的全局搜索和局部搜索。变异算子采用基本位变异算子。基本位变异算子是指对个体编码串随机指定的某一位或某几位基因做变异运算。

举个例子说明上述的过程

现在需要求解x1^2+x2^2的最大值,x1和x2的取值范围为0-7的整数。
编码:因 为x1, x2 为 0 ~ 7之间的整 数,分别用3位无符号二进制整数来表示将它们连接在一起所组成的6位无符号二进制数就形成了个体 的基因型,表示一个可行解。如:基因型 X=101110 所对应的表现型是:x=[ 5,6 ]。个 体的表现型x和基因型X之间可通过编码和解码程序相互转换
初始群体的产生:就是采用随机产生的方法,产生四个个体,比如可以为:011101,101011,011100,111001.
适应度计算:遗传算法采用适应度的大小来评定各个个体的优劣程度,决定遗传几率的大小。在这个求解过程中可以直接使用目标函数值为适应度函数。
选择运算:选择运算(或称为复制运算)把当前群体中适应度较高的个体按某种规则或模型遗传到下一代群体 中,一般要求适应度较高的个体将有更多的机会遗传到下一代群体中
。采用与适应度成正比的概率来确定各个个体复制到下一代群体中的数量。其具体操作过程是:先计算出群体中所有个体的适应度的总和,其次计算适应度的大小,此即为每个个体遗传到下一代群体中的概率,最后再产生一个0到1之间的随机数,依据随机数出现在上述哪一个概率区域内确定各个个体被选中的次数。
上面过程如下

初始种群是随机产生的,前三位是x1后三位x2,比如011换算成十进制就是3,101换算成十进制就是5,因此011101对应的x1和x2就是3和5.适应度值就是将x1和x2带入目标函数计算。每个适应度计算完成后除以总和,就是适应度值占总数的百分比。由百分比确定选择的次数。然后得出选择的结果。(这一块我的理解是我们已经有初始的种群了,而且初始的种群在一个转盘中的占比是不同的,那么我们就按占的百分比进行旋转,转到谁就是谁。这一步的原理就是谁的适应度更好,谁就会有更大的可能被留下来)
下一步进行交叉运算

上图中,1-2交叉,交叉位置是2,即01|1101和11|1001交叉,变成011001和111101,3-4交叉同理。
上面的交叉结果就是新的个体,下一步进行编译操作:

对应不同的变异位点,产生了新的子代群体。
对子代群体再次进行适应度计算。

可以发现,我们找到了个体编号为2的111111子群体,适应度最好。完成了求解的过程。

参考文献

遗传算法及其应用pdf,下载链接 http://read.pudn.com/downloads82/ebook/317809/GA.pdf
知乎上一篇遗传算法的讲解:https://zhuanlan.zhihu.com/p/93749379
这一篇也不错:https://www.jianshu.com/p/ae5157c26af9?from=singlemessage

遗传算法的理解及例子解释相关推荐

  1. c遗传算法的终止条件一般_KDD比赛之遗传算法(举例理解)

    求最大值问题是这样的: 求解函数 f(x) = x + 10*sin(5*x) + 7*cos(4*x) 在区间[0,9]的最大值. 这个函数大概长这样: 那么如何应用遗传算法如何来找到这个奇怪的函数 ...

  2. 量子运算 简单通俗例子_什么是量子计算机? 用一个简单的例子解释。

    量子运算 简单通俗例子 by YK Sugi 由YK Sugi 什么是量子计算机? 用一个简单的例子解释. (What is a quantum computer? Explained with a ...

  3. 如何用普通人能理解的语言解释量子纠缠?

    要理解量子纠缠,首先先要明白一个概念. 什么是量子态. 我们先来看一个高中的物理实验. 我们知道光是电磁波,是有偏正的. 当一束光经过上下偏振的偏振之后,部分光就会被阻隔,只有一半的光会透过去,透过去 ...

  4. 朴素贝叶斯分类器:例子解释

    戳上面的蓝字关注我们! 作者:alg-flody 编辑:Emily 今日话题 在昨天推送了用一个例子引入贝叶斯公式的基本思想,然后用贝叶斯公式对一个很简单的问题做分类,最后引出来一个问题:后验概率 P ...

  5. Algorithm之OP:OP之GA遗传算法思路理解相关配图资料

    Optimality之GA遗传算法思路理解相关配图资料 目录 GA遗传算法思路理解 GA算法过程 1.总体思路 2.各个步骤 GA算法代码 1.伪代码 SGA实例讲解 1.求函数最值 2.求连续函数的 ...

  6. matlab bs2rv.m,matlab遗传算法工具箱中的例子不能用?

    matlab遗传算法工具箱中的例子不能用,我也发现了,求助 figure(1); fplot('variable.*sin(10*pi*variable)+2.0',[-1,2]);   %画出函数曲 ...

  7. 【零知识证明】数独解的例子解释零知识证明

    零知识证明 2022年11月14日 in 中国科学院大学 零知识证明 零知识证明 数独解的例子解释零知识证明 一.零知识证明方法: 二.如何让Alice以外的人相信? 三.数独问题零知识证明中出现的问 ...

  8. 全局最优和局部最优 世俗理解以及原理解释

    引言 今天逛知乎看到这样一个问题和回答,让我瞬间理解局部最优和全局最优 在诸如算法导论等书是这样解释的:全局最优是在全局选取一个最佳值,而局部最优是在某一部分选取一个最佳值.每一部分都选取最佳值(即局 ...

  9. 【数据收集】名义变量、序级变量、区间变量、比率变量的理解及例子

    [数据收集]名义变量.序级变量.区间变量.比率变量的理解及例子 名义变量(Nominal Variable) 分类及举例 序级变量(Ordinal Variable) 分类和举例 区间变量(Inter ...

最新文章

  1. 记录智能指针使用shared_ptr使用错误
  2. 理解 LINUX 的处理器负载均值(翻译)
  3. 两个列向量相乘怎么计算_机器学习 线性代数基础 | 1.4 矩阵乘向量的新视角:变换基底...
  4. c传给php数据解包,小程序源码提取工具,完美解包,一键提取小程序源代码工具_PHP源码...
  5. 前端学习(3231):React中的受控组件
  6. 搭建高校AI大数据实训室,2019高校大数据科研教学整体解决方案,数道云
  7. centos使用python_Centos7使用Python3
  8. 前端自动化测试框架Jest中的匹配器
  9. 在韩国5G商用神话中,我们不能学到什么?
  10. 7-6 将一个大写英文字母转换为小写输出 (12分)
  11. CSDN外链解决方法 (2022-07-28测试可用)
  12. html ico 图片 无效,favicon.ico不显示的原因分析和解决办法
  13. 使用 Python +OpenCV+Deepface实现人脸、情感和种族检测
  14. Autodesk Alias AutoStudio 2022.1 x64
  15. Java 验证回文串
  16. 收藏别人的《设计模式》
  17. 乐华娱乐IPO搁浅:王一博是旗下艺人 CMC阿里字节是股东
  18. 高端大气上档次的fullPage.js
  19. 年假休假申请很麻烦啊
  20. 视频处理芯片是数字视频和模拟视频的全集成

热门文章

  1. vrf路由泄露原理和简单示例
  2. Halcon 回形针方向计算
  3. 【Warshall算法】
  4. 真牛!如何才能更容易拿到大厂Offer?挥泪整理面经
  5. vagrant 设置除默认工项目之外的synced_folder一个坑
  6. 【CCNA | 网络模拟器CPT系列】Cisco Packet Tracer 8.2.0 的安装 Ⅰ
  7. Java中的实体类(VO、PO、DO、DTO、BO、QO、DAO、POJO)
  8. java中的PO、BO、VO、QO、POJO、DTO、DAO分别代表什么意思
  9. 【使用两个队列实现栈】
  10. C语言lseek()函数和 fseek()函数 rewind函数