对于遗传算法的基础梳理

这是我本科生阶段学习遗传算法基础后整理而成的一篇小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  
    begain
        t++;
        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期.

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优的方法,它最初由美国Michigan大学J.Holland教授于1975年首先提出来的,并出版了颇有影响的专著《Adaptation in Natural and Artificial Systems》,GA这个名称才逐渐为人所知,J.Holland教授所提出的GA通常为简单遗传算法(SGA)。   遗传算法是从代表问题可能潜在的集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。每个个体实际上是染色体(chromosome)带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。因此,在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似,在每一代,根据问题域中个体的适应度(fitness)大小选择(selection)个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的集的种群。这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过码(decoding),可以作为问题近似最优

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值