(一)遗传算法(Genetic Algorithm, GA)基本概念

  • 1. 遗传算法基本概念
    • (1)个体和种群
    • (2)染色体和基因
    • (3)遗传编码
    • (4)适应度
    • (5)遗传操作
      • (5.1) 选择算子
      • (5.2) 交叉算子
      • (5.3) 变异算子
  • 2. 遗传算法的特点

1. 遗传算法基本概念

  遗传算法(Genetic Algorithm, GA)最早是由美国密歇根大学Holland教授及其学生于20世纪60年代末到70年代初提出的,起源于对生物系统所进行的计算机模拟研究。它是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,借鉴了达尔文的进化论和孟德尔的遗传学说。其本质是一种高效、并行、全局搜索的方法,能在搜索过程中自动获取和积累有关搜索空间的知识,并自适应地控制搜索过程以求得最佳解。
  遗传算法使用群体搜索技术,将种群代表一组问题解,通过对当前种群施加选择、交叉、变异等一系列遗传操作来产生新一代的种群,并逐步使种群进化到包含近似最优解的状态。
  下面说明遗传算法的一些基本概念。

(1)个体和种群

  个体是指染色体带有特征的实体,表示可行解。
  种群是个体的集合,表示可行解集。该集合内个体数成为种群的大小。

(2)染色体和基因

  染色体是包含生物体所有遗传信息的化合物,表示可行解的编码。
  基因是控制生物体某种形状(即遗传信息)的基本单位,表示可行解编码的分量。

(3)遗传编码

 遗传编码是将优化变量转化为基因的组合表示形式,优化变量的编码机制有二进制编码、十进制编码(实数编码)等。

(4)适应度

  适应度即生物体个体适应生存环境的能力。在遗传算法中,用来评价个体优劣程度的数学函数,称为个体的适应度函数。对于求解最大值的优化问题,某个体的适应度函数值越大,即表示该个体越适应函数。

(5)遗传操作

  遗传操作是优选强势个体的“选择”、个体间交换基因产生新个体的“交叉”、个体基因信息突变而产生新个体的“变异”这三种变换的统称。在生物进化过程中,一个群体中生物特性的保持是通过遗传来继承的。生物的遗传主要是通过选择、交叉、变异三个过程把当前父代群体的遗传信息遗传到下一代(子代)成员。与此对应,遗传算法中最优解的搜索过程也模仿生物的这个进化过程,使用所谓的遗传算子来实现,即选择算子、交叉算子、变异算子。

(5.1) 选择算子

  根据个体的适应度,按照一定的规则或方法,从第ttt代群体P(t)P(t)P(t)中选择出一些优良的个体遗传到下一代群体P(t+1)P(t+1)P(t+1)中。
  适应度值比例方法(轮盘赌方法) 是遗传算法中最早提出的一种选择方法,由Holland提出,它是一种基于比例的选择,利用各个个体适应度所占比例的大小来决定其子代保留的可能性。
  若某个个体iii的适应度为fif_ifi​,种群大小为NpN_pNp​,则它被选择的概率表示为:
pi=fi/∑i=1Npfi(i=1,2,...,Np)p_i=f_i/\sum_{i=1}^{N_p}f_i(i=1,2,...,N_p)pi​=fi​/i=1∑Np​​fi​(i=1,2,...,Np​)
  个体适应度越大,则其被选择的机会也越大;反之亦然。为了选择交叉个体,需要进行多轮选择,选择足够多的个体达到种群大小。每一轮产生一个[0,1][0,1][0,1]内的均匀随机数rrr,将rrr作为选择指针来确定被选个体。若r≤q1r\leq q_1r≤q1​,则个体i(i=1)i(i=1)i(i=1)被选中;
  若qk−1<r≤qk(2≤k≤Np)q_{k-1}<r\leq q_{k}(2\leq k \leq N_p)qk−1​<r≤qk​(2≤k≤Np​),则个体i(i=k)i(i=k)i(i=k)被选中。其中qi(i=k)q_i(i=k)qi​(i=k)称为个体iii的积累概率,其计算公式如下所示:
qi=∑j=1ipj(i=1,2,...,Np)q_i=\sum_{j=1}^{i}p_j(i=1,2,...,N_p)qi​=j=1∑i​pj​(i=1,2,...,Np​)

(5.2) 交叉算子

  将被选择的优良个体所组成的新种群P(t+1)P(t+1)P(t+1)中的各个个体随机搭配,对每一对个体,以某一概率(交叉概率PcP_cPc​)交换他们之间的部分染色体。
  交叉操作一般分为以下几个步骤:
  首先,从交配池中随机取出要交配的一对个体;
  然后,根据串位长度LLL,对要交配的一对个体,随机取出[1,L−1][1,L-1][1,L−1]中的一个或多个整数kkk作为交叉位置;
  最后,根据交叉概率PcP_cPc​实施交叉操作,配对个体在交叉位置处,相互交换各自的部分基因,从而形成一对新的个体。遗传算法的性能在很大程度上取决于采用的交叉操作的性能。

(5.3) 变异算子

  对群体中的每个个体,以某一概率(变异概率PmP_mPm​)将某一个或某一些基因上的基因值改变为其他的等位基因值。
  变异的一般步骤为:
  首先,对种群中所有个体按事先设定的变异概率判断是否进行变异;
  然后,对进行变异的个体随机选择变异位进行变异。

2. 遗传算法的特点

  遗传算法是模拟生物在自然环境中的遗传和进化的过程而形成的一种并行、高效、全局搜索的方法,它主要有以下特点:

  1. 遗传算法将问题参数编码成染色体后进行进化操作,而不是针对参数本身,这使得遗传算法不受函数约束条件的限制,如连续性、可微性等。
  2. 采用群体搜索方式,搜索过程是从问题解的一个集合开始的,而不是从单个个体开始的,具有隐含并行搜索的特性,从而大大减小了陷入局部极小的可能。
  3. 遗传算法使用的遗传操作都是随机操作,同时根据个体的适应度进行搜索。
  4. 遗传算法具有全局搜索能力,最善于搜索复杂问题和非线性问题。
  5. 遗传算法具有自组织、自适应和自学习等特性,易于同别的算法相结合,有极强的扩展性。

(一)遗传算法基本概念总结相关推荐

  1. 遗传算法的概念和python实现

    遗传算法是一个非常经典的智能算法,主要用于解决优化问题.本文主要简单介绍一些原理,同时给出一个基于python实现的,用于解决实数内优化问题的模板. 本文参考: 原理:遗传算法入门详解 - 知乎 简单 ...

  2. 遗传算法的基本概念和实现,附Java实现案例!

    本文经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载 作者:MallawaarachchiFollow 原文:https://medium.com/towards-dat ...

  3. 遗传算法概念、步骤、应用解析(案例直白--黄含驰)

    遗传算法 ①  在几十亿年的演化过程中,自然界中的生物体已经 形成了一种优化自身结构的内在机制,它们能够不 断地从环境中学习,以适应不断变化的环境  对于大多数生物体,这个过程是通过自然选择和有性 ...

  4. Java实现一元函数遗传算法_遗传算法的基本概念和实现,附Java实现案例!

    基因遗传算法是一种灵感源于达尔文自然进化理论的启发式搜索算法.该算法反映了自然选择的过程,即最适者被选定繁殖,并产生下一代.本文简要地介绍了遗传算法的基本概念和实现,希望能为读者展示启发式搜索的魅力. ...

  5. Genetic Algorithm遗传算法,两个代码实现例子

    通过了解遗传算法的概念,应用和代码实现,来充分理解和学习遗传算法.本文文末包含两个不同的通俗易懂的例子,分别使用java和python实现. 什么是遗传算法? 可参考这篇文章:link 应用:List ...

  6. 算法——遗传算法基础

    1.遗传算法的概念 遗传算法是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,它借鉴了达尔文的进化论和孟德尔的遗传学说.其本质是一种高效.并行.全局搜索的方法. 2.遗传算法的特点 2.1遗传 ...

  7. 【超参数寻优】遗传算法(GA) 超参数寻优的python实现

    [超参数寻优]遗传算法(GA) 超参数寻优的python实现 一.遗传算法简介 1.遗传算法由来 2.遗传算法名词概念 3.遗传算法中对染色体的操作 3.1.选择 3.2.交叉 3.3.变异 二.遗传 ...

  8. 遗传算法(Genetic Algorithm)详解与实现

    遗传算法(Genetic Algorithm)详解与实现 遗传算法简介 类比达尔文进化论 达尔文进化理论 遗传算法对应概念 遗传算法理论 图式定理(schema theorem) 遗传算法与传统算法的 ...

  9. java matlab 遗传算法_简单遗传算法MATLAB实现

    遗传算法的概念最早是由Bagley J.D 于1967年提出的.后来Michigan大学的J.H.Holland教授于1975年开始对遗传算法(Genetic Algorithm, GA)的机理进行系 ...

最新文章

  1. word精华样式篇之三使用样式集让所有文档风格统一
  2. labelimg如何调整框的颜色_P图改字:来看看吧!教你如何用PS墙壁发光灯泡广告文字图片...
  3. 在电脑上显示未知发布者怎么办_电脑开机后显示器黑屏只有鼠标能动,怎么办呢?...
  4. android 9.0 权限管理_你真的了解Android权限机制吗?
  5. 如何让地面不起灰_什么是不发火地面,如何施工?
  6. XP停止服务,共建网络安全大环境
  7. 【南邮操作系统实验】页面置换算法 (FIFO、LRU、OPT)Java 版
  8. python课程开课吧怎么样-年薪30万,未来十年大量缺人,这个技能在金融圈到底有多吃香?...
  9. idea类文件前面有个小叉号
  10. HDU6069 Counting Divisors
  11. 新型能力的分解与组合
  12. 苹果屏幕尺寸_iPhone 12屏幕维修价格出炉,买得起伤不起?
  13. 探索Whisper语音识别
  14. 图片转文字怎么转换?分享你个简单的方法
  15. VUE实现DIV点击换色
  16. 黑马程序员-01.IOS和MAC OS X简介总结
  17. 一天一篇latex刘海洋代码解析:1.2.3填写正文
  18. Socket.io使用介绍
  19. Google趋势 - Google Trend in Chinese
  20. 鱼类eDNA生物多样性检测重磅来袭!

热门文章

  1. eclipse中找不到jar包中的类与函数java.lang.ClassNotFoundException让jar包全局可用
  2. Arcmap特殊注记
  3. mapbox-gl加载three.js泛光效果(视频)
  4. abap开发那点事 (二)
  5. HttpException: 503: Server Error for url:http://cic-1:9696/v2.0/security-groups, Service Unavailable
  6. NET 模拟Htpp请求
  7. 虚拟机重启服务器命令,虚拟机中重启命令
  8. 【毕业设计】基于单片机的心率检测系统 - stm32 物联网 嵌入式
  9. 汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp 寄存器 含义
  10. 操作系统--04文件管理