演化算法是一种具有鲁棒性的随机搜索优化算法,它通过模拟大自然的生物进化过程,依据简单的遗传操作和优胜劣汰的自然选择法则来寻求问题的最优解。
演化算法具有适于高度并行与自组织、自学习、自适应等特征。
一方面当使用演化算法对实际问题进行求解时,算法可以利用演化过程中所获得的相关信息自行地组织搜索行为。
另一方面由于演化算法采用种群的方式组织进行对最优解的搜索,从而能够对实际问题的解空间的多个区域同时进行搜索,因此特别适合于大规模并行。
遗传算法(GA,Genetic Algorithm)由美国Michigan大学的John Holland教授于20世纪60年代首次提出,其起源于人们对生物系统所进行的计算机模拟研究。
该算法被提出后首先应用于自然和人工系统的自适应行为方面的研究,然后又被推广并且应用到机器学习和优化计算等领域。
遗传算法的出现极大地推动了借助生物演化的思想和原理来解决实际问题的理论的发展。
遗传算法不同与以往的任何一种优化方法,它以达尔文的进化论和孟德尔的遗传学理论作为基本思想,因此在这个算法中引入了很多的生物学概念术语。
为了能够更好的了解算法,在此对相关术语作以说明。
- 染色体个体——由实际问题的解空间中的一个解映射得到的二进制串。
- 种群——对应于问题搜索空间的二进制串个体的集合。
- 选择——模仿自然选择,对种群中的个体实现优胜劣汰操作,个体的适应度值与其被遗传到下一代种群的概率成正比。用来确定如何从父代种群中按照某种策略选取哪些个体遗传到下一代的种群中。
- 交叉——首先将两个染色体配为染色体对,然后依据某种策略对两者的部分基因执行相互交换,最终形成两个新的染色体个体。当前较为常用的交叉策略包括单点交叉、多点交叉和概率模板交叉。
- 变异——在染色体个体的编码串中,依据一定的变异概率,使用某些等位基因的值来替换其中的变异点上的基因值,从而形成新的染色体个体。当采用二进制编码时,变异操作就是将个体在变异点上的0、1值进行取反操作。
- 适应度——种群中的每一个染色体个体在演化计算过程中相对于问题最优解的接近程度。每个染色体个体的适应度值与其被遗传到下一代种群的概率成正比。染色体个体适应度值的评估过程是首先解码染色体个体的编码串,以便得到染色体个体的表现型,即在实际环境中染色体个体所表现出的性状;然后根据染色体个体的表现型计算出该个体的实际函数值;最后根据所要处理的问题类型,按照特定的转换准则将目标函数值对应转化为染色体个体的适应度值。
- 终止准则——演化算法终止的判断条件,当演化种群收敛于某一最优个体不再具有进一步演化的趋势时,或者演化代数达到所预先设定的终止代数,则演化算法终止,将此时演化得到的染色体个体作为最优解。较为常用的终止判定准则有以下两种:连续若干代染色体个体的平均适应度值的差异不大于预先设定的阈值;群体中所有的染色体个体的适应度值的方差低于预先设定的阈值。
- 早熟收敛现象——在种群中出现了超级个体,该染色体个体的适应度值远远大于种群染色体个体的平均适应度值,由于选择算子以染色体个体的适应度值比例作为选择依据,从而使得超级个体能够很快地在种群中占有绝对比例,导致演化算法过早收敛到局部最优点。
- 停滞现象——在搜索过程后期,群体的平均适应度值可能会接近群体的最优适应度值,即使种群中仍然存在足够的多样性,但是实际上已经不存在竞争,导致搜索目标难以得到改善。
作为主流演化算法中的一种,遗传算法具有算法结构简单、适用面广、通用性强、具有鲁棒性等优点,其为解决复杂系统优化问题提供了一种通用框架,并且已经在众多学科中得到了广泛的应用。
J. Holland教授所提出的遗传算法通常被称之为简单遗传算法