这是我本科生阶段学习遗传算法基础后整理而成的一篇小paper,主要介绍了遗传算法的来源、原理、主要思想和伪代码实现。

遗传算法的浅层分析

内容摘要: 简要说明了遗传算法的基本思想及实现步骤,探究了其相对于传统算法的优缺点,并提出了针对于缺点的改进方式。最后介绍了遗传算法在未来工程与科研中的实际应用方向与场景。
关键词:自然选择模拟 鲁棒性 应用广 前景广阔

Shallow analysis of genetic algorithm

Abstract: Briefly explains the basic idea and implementation steps of genetic algorithm, explores its advantages and disadvantages compared with traditional algorithms and puts forward some improvement methods for shortcomings. At last, the practical application direction and scenario of genetic algorithm in future engineering and scientific research are introduced.
Key word: natural selection simulation, robustness, wide application, broad prospects

1 引言

遗传算法是受到自然界生物进化的启发而利用计算机实现对其的模拟的一种算法,最早由美国Michigan大学的Holland教授及其学生提出。其依据达尔文“物竞天择”的物种进化原理,使用数组模拟染色体并设置多个参数以模拟自然选择的方式使解集收敛而求得问题的最优解。遗传算法如今已受到学术界的高度关注,国际上已开展了“遗传算法和进化计算国际学术会议(International Conference on Genetic and Evolutionary Computing)”,“进化计算会议(Congress on Evolutionary Computation)”等多个会议,推动了遗传算法在理论与工程应用上的发展。其主要应用于函数优化、机器学习、图像处理、数据挖掘等多个领域,在未来有广阔的发展空间。本文将在遗传算法的发展历史、原理、实现步骤、优缺点分析和各领域用途方面展开分析。

2 遗传算法的发展历史

遗传算法由美国Michigan大学的Holland教授及其学生提出。在1967年Holland教授的学生Baglry的博士论文中首次提出了“遗传算法”一词。以后他又发展了复制、交叉、变异、显性、倒位等遗传算子。Holland教授用遗传算法的思想对自然和人工适应系统进行了基本研究,提出了遗传算法的基本定理——模式定理,并于1975年出版了第一本系统论述遗传算法和人工自适应系统的专著《自适应与智能系统》(《Adaptation in Natural and Artificial Systems》)。20世纪80年代,Holland教授实现了第一个基于遗传算法的机器学习系统,开创了遗传算法的机器学习新概念。1975年,De Jong基于遗传算法的思想在计算机上进行了大量纯属值函数优化计算实验,建立了遗传算法的工作框架,得到了一些重要且有指导意义的结论。1989年,Goldberg出版了《遗传算法在搜索、优化和机器学习中的应用》(《Genetic Algorithm in Search, Optimization and Machine Learning》)一书,系统的总结了遗传算法的主要研究成果,全面完整地论述了遗传算法的基本原理及其应用。1991年,Davis出版了《遗传算法指南》(《Handbook of Genetic Algorithms》)一书,介绍了遗传算法在科学计算、工程技术和社会经济中的大量实例。1992年,Koza将遗传算法应用于计算机程序的优化设计及自动生成,提出了“遗传编程”的概念。在控制系统的离线设计方面遗传算法被众多的使用者证明是有效的策略。例如,Krishnakumar和Goldberg以及Bramlette和Cusin已证明使用遗传优化方法在太空应用中导出优异的控制器结构比使用传统方法如LQR和Powell的增音机设计所用的时间要少。Porter和Mohamed展示了使用本质结构分派任务的多变量飞行控制系统的遗传设计方案。以此同时,另一些人证明了遗传算法如何在控制器结构的选择中使用。
       在整个遗传算法发展的历程中,20世纪70年代是兴起阶段,80年代是发展阶段,90年代是高潮阶段。遗传算法作为一种实用、高效、鲁棒性强的优化技术,发展极为迅速,已引起国内外学者的高度重视。

3 遗传算法的基本原理

遗传算法是基于生物遗传和进化机制的适合于复杂系统优化的自适应概率优化技术。其的核心是将问题的解抽象成染色体(数组),然后经过一系列操作使最初的染色体集收敛至一个或多个环境适应度最高的染色体,这些剩余的染色题对应数组所代表的解在一定程度上很可能即为此问题的最优解。在标准遗传算法模型中基本步骤包括编码、重组、变异、筛选四部分。简单的遗传算法伪代码如下:

precedure GA
begain  t=0;  iniitialize P(t);  evaluate P(t);  while not finished do  begaint++;select P(t) from P(t-1);reproduce pairs in P(t);evaluate P(t);end
end

3.1 基本用语介绍

遗传算法中常用的基本用语包含以下几种,先对其进行简要说明。
       染色体:表示解的抽象表示方法,一般为按照某一方式排列的0、1序列。
       基因:表示染色体上每一位的特征。
       等位基因:表示染色体上每一位的特性值,一般即基因的值。
       个体:表示每一种问题的解。
       适应性:表示由适应度函数计算出的染色体的与问题最优解的相关程度,       &#160适应性越大越倾向于成为问题的最优解。

3.2编码

编码即将搜索空间中的参数或解转换成遗传空间中的染色体或个体。编码是遗传算法中较灵活度的部分。依据不同的问题需要,可以以不同的方式开展。祖先种群的染色体序列可采用随机的方式。如X=000101110001,这就是一个个体,其染色体由12位的序列组成。

3.3 个体适应度检测评估

在标准遗传算法模型中,个体适应度与种群总适应度的比值与其染色体能否继续遗传至下代的概率成正比。在实际应用中,依据不同问题可以构造出不同的适应度评价函数,并且这些函数要保证计算所得非负。

3.4 三种重要算子

在遗传算法中,比例选择算子、交叉算子、变异算子是三种不可或缺的算子。
       比例选择算子用于选择操作。所选择的为种群内适应度高的个体,其优良基因能因此被继续延续下。在多次重组迭代后,如此基因能始终保持高的适应度,则种群中此优良基因的成分将逐渐增加,在种群基因库中占据更大的比例。个体被选择后将被分配进入重组区等待与另一被选择的个体进行染色体的杂交。
       交叉算子用于基因的重组。一般使用单点交叉算子。重组方式为在重组双方的染色体链上随机选择一点,将数组在此点进行左右分割,并进行相互交换。例如个体P1染色体为011101010111,个体P2为110100001101,随机得到分割点为左数第3,故交叉重组后产生的子代位F1=011100001101,F2=110101010111。
       变异算子用于基因的变异。变异旨在根据一些概率引起个体基因型发生变化,增加基因的多样性,确保研究问题的子空间概率永不为0,能在一定程度上防止解的过早及不合理收敛。最基本的变异方式是随机获取一个或多个变异点,将染色体上变异点的等位基因进行数值变换,即将0与1进行调换。如X=00110011在第2、6发生变异,变异后的染色体序列为X’=01110111。

4遗传算法的特点

遗传算法是一种借鉴了生物进化理论的随机搜索算法。传统启发式算法主要依赖于评价函数来优化搜索性能,而遗传算法则模拟了自然选择的过程使适应性更高染色体有更大的概率存活并生成子代。其具有不同于古典算法的优缺点。

4.1 优点

4.1.1 进行群体搜索

遗传算法有能进行群体搜索的特性。传统算法仅能求出局部最优解,如在面对多峰问题时往往会陷于寻找某个峰的极限值。而遗传算法采用的是群体搜索模式,会对搜索空间中的多个解同时开始评估。这一特性使得遗传算法具有很高的可并行性与全局搜索性能。

4.1.2 无需辅助信息

遗传算法不需要辅助信息。传统的算法的解的准确性严重依赖于初始值的设定。而遗传算法则仅用适应度函数来对解的可靠性进行评估,与初始设定无关。且遗传算法不受连续可微的约束。这一限定范围小优点使得遗传算法能更加广泛地使用。

4.1.3 可扩展性

遗传算法具有可扩展性,易于与其他算法交叉使用。如可与模拟退火算法相结合以有效控制早熟收敛的问题。

4.2 缺点

遗传算法在设计编码及适应度评价函数时的难度较大,且这些参数将直接影响到解的最优性。在具体运行时,遗传算法的效率比传统算法低,存在收敛速度慢的问题。使用遗传算法还可能会陷入局部最优,出现过早收敛的问题。并且对于遗传算法的精度、可信度及复杂度方面,还没有有效的定量分析方法。

5.遗传算法的改进

针对当前遗传算法所面临的没有标准的编码评估函数模型,算法的过早收敛问题及在最优解附近摆动收敛速度慢的问题,众多学者编码方式,参数控制和算法交叉方面做出了深入的研究,提出来不同方式的遗传算法改进措施。其中主要核心途径为以下几种:
(1) 改进遗传算法的组成或使用技术,如优化参数设置,寻找更加合适的编码技术等。
(2) 采用混合遗传算法,如将退火算法与遗传算法相结合。
(3) 采用动态自适应调整,如设置一个能随演变方向自调整的参数。
(4) 采用并行算法和非标准遗传算法模型
       其具体的主流改进算法有分层遗传算法、CHC算法、Messy遗传算法、自适应遗传算法、并行遗传算法、NGA算法及混合遗传算法7种。

6.遗传算法的主要应用

遗传算法提供了一种解决复杂优化问题的通用框架,具有很强的鲁棒性,不依赖于问题所存在的,因而广泛应用于各领域。

6.1函数优化

函数优化是遗传算法的经典应用领域。人们构造了许多种不同的函数来测试遗传算法的性能。遗传算法能比传统算法更好地解决多线性、多目标、多峰问题。

6.2 组合优化

随着组合问题规模的扩大,搜索空间也在急剧扩大。许多搜索问题应用传统的搜索方式已经很难获得问题的最优解。对于这类问题,人们已经更多的将注意力放在寻求其最优解上。而遗传算法就是寻求此类最优解的最佳工具之一。实践证明,遗传算法对于组合优化中的NPC问题非常有效。

6.3 生产调度问题

很多情况下生产调度问题所建立起的数学模型难以获得精确的解,因此在现实生活中时常要靠人们的经验进行调度。而采用遗传算法能有利于帮助解决复杂的生产调度问题。遗传问题已经在生产车间调度、流水线生产车间调度、生产规划、任务分配的方面得到了广泛的应用,且其求得的解比传统算法如动态规划算法更加精确。

6.4 机器人学

遗传算法起源于对人工自适应系统的研究,正好适用于机器人所搭载的复杂而难以精确建模的人工系统。遗传算法在机器人路径规划、关节机器人路径
规划、机器人逆运动学求解、细胞机器人的结构优化和行动协调方面得到有效应用。

6.5 图像处理

图像处理是机器视觉中的重要领域。在图像特征提取过程中,有时会出现难以避免的误差。而使用遗传算法则会优化图像的计算,较少图像处理中的误差。

6.6 机器学习

基于遗传算法的机器学习,特别是分类器系统,在许多领域得到了应用。例如,遗传算法被用于模糊控制规则的学习,利用遗传算法隶属度函数,从而更好地改进了模糊系统的性能。基于遗传算法的机器学习可用于调整人工神经网络的连接权,也可用于神经网络结构的优化设计。分类器系统在多机器人路径规划系统中得到了成功的应用。

7 结束语

自提出至今遗传算法已有了50余年的发展历史。如今在科研、工程等多个领域均有广泛应用价值。但与此同时它的一些缺陷也在不断暴露。国内外专家学者始终都在开拓研究挖掘其更大的利用价值,也在为克服其种种缺陷而努力。

参考文献:

[1]雷英杰,张善文,李续武,周创明:MATLAB遗传算法工具箱及应用,西安电子科技大学出版社,2005.
[2]吉根林:遗传算法综述,《计算机应用与软件》,2004年2月,第21卷第2期.
[3]武广号,文毅,乐美峰:遗传算法及其应用,《应用力学报》,1996年6月,第13卷第2期
[4]葛继科,邱玉辉,吴春明,蒲国林:遗传算法研究综述,《计算机应用研究》,2008年10月第25卷第10期.

对于遗传算法的基础梳理相关推荐

  1. Docker | Docker技术基础梳理(五) - Docker网络管理

    Docker | Docker技术基础梳理(五) - Docker网络管理 链接: 原文链接 原文链接: https://gitbook.cn/books/5b8f3c471966b44b00d265 ...

  2. python基本程序结构有几种_python基础梳理(一)(推荐)

    一.python程序的组成 表达式:建立并且处理数据对象且能返回数据对象的引用关系 示例:1 + 2 系统会产生1和2俩个对象,并且进行处理生产对象3,将对象3返回回去. 二.核心的数字类型 1.整型 ...

  3. 遗传算法(基础知识)

    遗传算法(基础知识) 遗传算法简称GA(Genetic Algorithms)模拟自然界生物遗传学(孟德尔)和生物进化论(达尔文)通过人工方式所构造的一类 并行随机搜索最优化方法,是对生物进化过程** ...

  4. java基础梳理--朝花夕拾(二)

    1.Java语言语法规则和文件格式: 第一个Java程序: /** 第一个Java程序: 控制台输出Hello world! */ public class Test{     //访问修饰符 cla ...

  5. Kafka 基础梳理

    Kafka 基础梳理 角色 Kafka Cluster(Kafka服务集群),每个服务节点称为:Broker. Broker之间基本上是对等关系,通常第一个启动的broker角色为:Controler ...

  6. 专家系统/模糊理论/神经网络/遗传算法相关基础知识

    整理于大学时代的一篇笔记,对重新再研究AI及其关联的技术有一定概念参照意义.毕竟比较古老,可能仅在基础概念入门方面有一些提示. 常用缩写 缩写 全称 解释 AI Artificial Intellig ...

  7. DW集训营算法基础梳理任务1:线性回归

    DW集训营数据库基础算法梳理[一] 一. 损失函数的极大似然推导 二. 一元线性回归的参数求解公式推导 三. 多元线性回归的参数求解公式推导 四. 线性回归损失函数的最优化算法 一. 损失函数的极大似 ...

  8. 关于HTTP协议、万维网文档以及网络编程的基础梳理

    常用协议 IP协议:是一个分组交换,不保证可靠传输. TCP协议:传输控制协议,面向连接.可靠传输.双向通信. TCP协议是建立在IP协议之上的,(对应TCP/IP模型)IP协议只负责发数据包,不保证 ...

  9. 【数通网络交换基础梳理2】三层设备、网关、ARP表、VLAN、路由表及跨网段路由下一跳转发原理

    一.不同网段如何通讯 同网段可以依靠二层交换机通讯,网络中存在多个网段192.168.1.1/24 172.16.1.1/24 173.73.1.1/24情况下如何互相通讯?上节留一下的问题,这节继续 ...

最新文章

  1. CSS浮动元素特点有什么
  2. 说明:最新谷歌AI智商不超过6岁研究来自中国科学院而非美国康内尔大学
  3. oracle统计数据库所有表的数据记录数SQL
  4. JACK——PaintRobot Exercise9
  5. nssl1210-质数【素数筛】
  6. android R编译OTA时报“ExternalError: Invalid ro.product.property_source_order”解决方法
  7. eclipse各个版本的区别
  8. [linux内存]伙伴系统学习笔记(一)——概念
  9. 美国住宅保修公司新增支持加密货币支付,并决定将 BTC 列入资产负债表
  10. Android 四大组件学习之BroadcastReceiver一
  11. 自带flash的浏览器_受够了手机自带浏览器?来看看这些超实用的不常用浏览器...
  12. google浏览器常用插件整理
  13. java mail authen,javaxmail发送邮件:用Authenticator的子类进行身份验证及策略模式(Strategy)...
  14. 2019-01-19-build-xmr-stak-on-ubuntu
  15. Office2010安装时,需要安装msxml6.msi解决办法
  16. InfluxDB查询 tag和field列名字重复
  17. realtek没有禁用前面板_为什么HD声卡必须禁用前面板插孔检测前置耳机和麦克才可以有声...
  18. opencv证件照变更任意底色
  19. 鸿合一体机触屏没反应怎么办_一体机电脑触摸屏没反应怎么办 触摸屏一体机故障解决方法...
  20. python抢票开发——设备预约助手实现

热门文章

  1. C语言if与else匹配规则你知道多少?
  2. 传感器系列之4.4超声测距传感器
  3. Python爬虫自动识别验证码登陆
  4. MATLAB | MATLAB地形生成:矩形迭代法 · 傅里叶逆变换法 · 分形柏林噪声法
  5. 如何用 BearyChat 将 ChatOps 带到你的日常工作中
  6. P1417烹调方案——背包问题中的排序
  7. 职称计算机考试在哪做题,全国计算机职称考试做题中必备的经验
  8. 2019秋招面经(计算机相关专业)
  9. (神技能)Python控制的鼠标实战与源码
  10. 戴尔台式机进入bios的方法