遗传算法(Genetic Algorithm,简写为遗传算法)试图从解释自然系统中生物的复杂适应过程入手,采用生物进化的机制来构造人工系统模型。它是从达尔文进化论中得到灵感和启迪,借鉴自然选择和自然进化的原理,模拟生物在自然界中的进化过程所形成的一种优化求解方法。它最初由J.Holland 教授和他的学生于1975 年提出来,并且他们出版了颇有影响的专著《Adaptation in Natural and Artificial Systems》。自此,遗传算法这个名称才逐渐为人所知,J.Holland 教授所提出的遗传算法通常称为基本遗传算法。
遗传算法自从被提出之后,经历了一个相对平衡的发展时期。但在进入90 年代之后, 遗传算法迎来了兴盛时期,无论是理论研究还是应用研究都成了十分热门的课题,尤其是遗传算法的应用研究显得格外活跃,原因在于该算法是一种自适应随机搜索方法,它对优化对象既不要求连续,也不要求可微,并具有极强的鲁棒性和内在的并行计算机制。因此,随着研究的不断深入,它的应用领域逐渐扩大,而且利用遗传算法进行优化和规则学习的能力也显著提高。此外,一些新的理论和方法在应用研究中亦得到了迅速发展,这些无疑给遗传算法增添了新的活力。
多年的不懈研究证明,遗传算法特别适合于非凸空间中复杂的多极值优化和组合优化问题。它在机器学习、自动控制、机器人技术、电气自动化以及计算机和通信等领域已取得了非凡的成就。
遗传算法从代表问题的可能潜在解集的一个种群(population)出发,一个种群由一定数目的个体(individual)组成,每个个体实际上是染色体带有特征的实体。初始群体产生后,按照适者生存和优胜劣汰的原理,逐代演化产生越来越好的个体。在每一代,根据个体的适应度大小挑选个体,并借助于自然遗传学的遗传算子进行组合交叉和变异,产生出新的种群。整个过程类似于自然的进化,最后末代种群中的最优个体经过解码,可以作为问题的近似最优解。
遗传算法中使用适应度这个概念来度量种群中的各个个体在优化过程中有可能达到最优解的优良程度,度量个体适应度的函数称为适应度函数,该函数的定义一般与具体问题有关。
从算法的基本思想可知遗传算法是一种自适应寻优技术,可用来处理复杂的线性、非线性问题。但它的工作机理十分简单,主要采用了如选择,交叉,变异等自然进化操作。遗传算法的求解步骤如下:
步骤1:构造满足约束条件的染色体。由于遗传算法不能直接处理解空间中的解,所以必须通过编码将解表示成适当的染色体。实际问题的染色体有多种编码方式,染色体编码方式的选取应尽可能地符合问题约束,否则将影响计算效率。
步骤2:随机产生初始群体。初始群体是搜索开始时的一组染色体,其数量应适当选择。
步骤3:计算每个染色体的适应度。适应度是反映染色体优劣的唯一指标,遗传算法就是要寻找适应度最大的染色体。
步骤4:使用复制、交叉和变异算子产生子群体。这三个算子是遗传算法的基本算子, 其中复制体现了优胜劣汰的自然规律,交叉体现了有性繁殖的思想,变异体现了进化过程中的基因突变。
步骤5:若满足终止条件,则输出搜索结果;否则返回步骤3。
上述算法中,适应度是对染色体(个体)进行评价的指标,是遗传算法进行优化所用的主要信息,它与个体的目标值存在一种对应关系;复制操作通常采用比例复制,即复制概率正比于个体的适应度;交叉操作通过交换两父代个体的部分信息构成后代个体,使得后代继承父代的有效模式,从而有助于产生优良个体;变异操作通过随机改变个体中某些基因而产生新个体,有助于增加种群的多样性,避免早熟收敛。
将遗传算法应用于实际问题中,通常需做以下工作:
(1)寻求有效的编码方法,将问题的可能解直接或间接地编码成有限位字符串;
(2)产生一组问题的可行解;
(3)确定遗传算子的类型及模式,如复制、交叉、变异、重组、漂移等等,并设计其模式;
(4)确定算子所涉及的参数,如种群规模n,交叉概率pc,变异概率pm 等等;
(5)根据编码方法和问题的实际需求,定义或设计一个适应度函数,以测量和评价各个解的性能优劣;
(6)确定算法的收敛判据;
(7)根据编码方法,设计译码方法。
遗传算法利用生物进化和遗传的思想实现优化过程,区别于传统优化算法,它具有以下特点:
(1)遗传算法对问题参数编码成“染色体”后进行进化操作,而不是针对参数本身,这使得遗传算法不受函数约束条件的限制,如连续性、可微性;
(2)遗传算法的搜索过程是从问题解的一个集合开始的,而不是从单个个体开始的,具有隐含并行搜索特性,从而大大减小了陷入局部极小的可能;
(3)遗传算法使用的遗传操作均是随机操作,同时遗传算法根据个体的适应度信息进行搜索,无需其他信息,如导数信息等;
(4)遗传算法具有全局搜索能力,最善于搜索复杂问题和非线性问题。
遗传算法的优越性主要表现在:
(1)算法进行全空间并行搜索,并将搜索重点集中于性能高的部分,即使在所定义的
适应函数是不连续的、非规则的或有噪声的情况下,它也能以很大的概率找到整体最优解,
不易陷入局部极小,从而能够提高效率;
(2)算法具有固有的并行性,通过对种群的遗传处理可处理大量的模式,并且容易并行实现。
遗传算法理论研究的主要内容有分析遗传算法的编码策略、全局收敛性和搜索效率的数
学基础、遗传算法的新结构研究、基因操作策略及其他算法的比较研究等。
(1)数学基础
Holland 的模式理论(定义长度短、低阶并且适应度高于群体平均适应度的模式数量随代数的增加呈指数增长)奠定了遗传算法的数学基础,根据隐含并行性可得出每代处理的有效模式是O(n3),其中n 是种群规模。Bertoni 和 Dorigo 推广了该研究,获得n2βι,β为任意值时,处理多少有效模式的表达式,其中ι 为染色体长度。
模式定理中模式适应度难以计算和分析,Bethke 运用Walsh 函数和模式转换发展了有效的分析工具,Holland 扩展了这种计算。后来Frantz 首先觉察到了一种常使遗传算法从全局最优解发散出去的问题,称为遗传算法-欺骗问题。Goldberg 首先运用Walsh 模式转换设计了最小遗传算法-欺骗问题,并进行了详细分析。
近几年来,在遗传算法全局收敛分析方面取得了突破。Goldberg 和Segrest 首先使用马尔可夫链分析了遗传算法,Eiben 等用马尔可夫链证明了保留最优个体的遗传算法的全局收敛性,Rudolph 用齐次有限马尔可夫链证明了带有复制、交叉、变异操作的标准遗传算法收敛不到全局最优解,不适合于静态函数优化问题,建议改变复制策略以达到全局收敛。Back和Muhlenberg 研究了达到全局最优解的遗传算法的时间复杂性问题。以上收敛性分析是基于简化了的遗传算法模型,复杂遗传算法的收敛性分析仍是困难的。
Holland 模式定理建议采用二进制编码。由于浮点数编码有精度高、便于大空间搜索的优点,浮点数编码越来越受到重视,Michalewicz 比较了两种编码的优缺点。 Qi 和Palmieri 对浮点数编码的遗传算法进行了严密的数学分析,用马尔可夫链建模,进行了全局收敛性分析,但其结果是基于群体无穷大这一假设的。另外,Kazz 还发展了用计算机程序来编码,开创了新的应用领域。
(2) 算法结构研究
包括在遗传算法的基本结构中插入迁移、显性、倒拉等其它高级遗传算子和启发式知识, 以及针对复杂约束问题,研究遗传算法并行实现的结构等,如Gretenstette 提出的同步主从式、半同步主从式、非同步分布及网络式结构形式。
(3)遗传算子
遗传算子包括复制、交叉和变异,适应度尺度变换和最佳保留等策略可视为遗传复制的一部分,另外,还有许多用的较少、作用机理尚不明或没有普遍意义的高级遗传算子。这部分内容的研究在遗传算法理论研究中最为丰富多彩。
(4)遗传算法参数选择
遗传算法中需要选择的参数主要有染色体长度、种群规模、交叉概率和变异概率等,这些参数对遗传算法性能影响很大。许多学者对此进行了研究,建议的最优参数范围是:n=20~200,pc=0.75~0.95,pm=0.005~0.01。
(5)与其它算法的综合及比较研究
由于遗传算法的结构是开放式的,与问题无关,所以容易和其它算法综合。例如Lin 等把遗传算法和模拟退火进行综合,构成模拟遗传算法,在解决一些NP 难问题时显示了良好的性能,时间复杂性为O(n3)。
(6) 遗传算法的应用研究
遗传算法的应用研究总的来说可分为优化计算、机器学习和神经网络三大类。其中优化计算是遗传算法最直接的应用,应用面也最广,目前在运筹学、机械优化、电网设计、生产管理、结构优化、VLSL 设计等应用学科中都尝试着用遗传算法解决现实优化计算问题。
上述内容表明:遗传算法提供了一种求解复杂系统问题的通用框架,即不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,所以它被广泛应用于许多科学。下面介绍一下遗传算法的主要应用领域。
(1)函数优化。函数优化是遗传算法应用最早也是最经典的领域,也是进行遗传算法性能评价的常用算例。许多人构造出了各种各样复杂形式的测试函数:连续函数和离散函数、凸函数和凹函数、低维函数和高维函数、单峰函数和多峰函数等。对于一些非线性、多模型、多目标的函数优化问题,用其它优化方法较难求解,而遗传算法可以方便的得到较好的结果。
(2)组合优化。例如遗传算法在旅行商问题方面的应用,背包,装箱问题等等。
(3)人工生命。遗传算法在人工生命以及复杂系统的模拟设计等方面有很广阔的应用前景。
(4)机器学习。基于遗传算法的机器学习,在许多领域得到了应用。例如利用遗传算法调节神经网络的权值,还可用于神经网络的优化设计等等。
此外,遗传算法在图像处理,自动控制,生产调度等方面也有广泛应用。
随着应用领域的不断扩展,遗传算法的研究出现了几个引人注目的新动向。
(5)基于遗传算法的机器学习。这一新的研究课题把遗传算法从历来离散的搜索空间的优化搜索算法扩展到具有独特的规则生成功能的崭新的机器学习算法,这对于解决人工智能中知识获取和知识优化精炼的瓶颈难题带来了希望。
(6)遗传算法正日益和神经网络、模糊推理以及混沌理论等其它智能计算方法相互渗透和结合。这对开拓21 世纪中新的智能计算技术将具有重要的意义。
(7)并行处理的遗传算法研究。这一研究不仅对遗传算法本身的发展,而且对于新一代智能计算机体系结构的研究都是十分重要的。
(8)遗传算法和人工生命研究领域的渗透。所谓人工生命即是用计算机模拟自然界丰富多彩的生命现象,其中生物的自适应、进化和免疫等现象是人工生命的重要研究对象,而遗传算法在这方面将会发挥一定的作用。
(9)遗传算法、进化规划以及进化策略等进化计算理论日益结合。它们几乎是和遗传算法同时独立发展起来的,同遗传算法一样,它们也是模拟自然界生物进化机制的智能计算方法,即同遗传算法具有相同之处,也有各自的特点。目前,这三者之间的比较研究和彼此结合的探讨正形成热点。