自适应遗传算法(Adaptive Genetic Algorithm,AGA)是对基本遗传算法的一种改进,它通过对遗传参数的自适应调整,大大提高了遗传算法的收敛精度,加快了收敛速度。
基本介绍
- 中文名:自适应遗传算法
- 外文名:Adaptive genetic algorithm
- 所属学科:IT
- 套用领域:程式设计
遗传算法
编码
编码就是把自然问题描述为编码的形式,生成编码的原则是:所定编码应当易于生成与所求问题相关的最小字元集。目前主要的编码技术有:
- 一维染色体编码;
- 多参数映射编码;
- 可变染色体长度编码等。
最初的编码方式为二进制编码,它是基于二进制串的,类似于生物染色体结构,各种遗传操作易于实现,现在也经常用到,但是二进制编码不能直接反映问题的固有结构特徵,个体长度大,占用计算机记忆体多,数值最佳化时精度不高,所以就产生了实数编码和格雷码编码方法。实数编码更方便、简洁的描述了实际问题,在具体问题中,直接採用解空间的形式进行编码,可在解的表现型上进行遗传操作,精度高,适合于複杂的大空间搜寻。格雷码是一种绝对编码方式,典型的格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了遗传算法在随机取数时出现重大误差的可能,使遗传算法的随机编码的错误最小化,同时,格雷编码便于反映所求问题的结构特徵,对于一些连续函式的最佳化问题,也可以改善遗传运算局部搜寻能力差的缺点。
群体规模
对于种群的规模,一般是在初始阶段设定好的,複杂程度不同的问题,相应的初始种群的设定也不同。种群规模设定要适中,太小的种群规模会使收敛速度过慢,过大的规模也会增加搜寻的难度,演化为枚举搜寻。
适应度函式
适应度函式是评价个体适应环境的能力,在进行选择操作时经常用到,它的选取是否恰当直接影响到遗传算法的性能,所以就形成了很多计算适应度的函式,改进这些适应度函式是为了使适应度能更好的反映个体的优劣,使得适应度低的个体被淘汰,适应度高的个体被保留。自适应的适应度函式可以随着种群代数的增加自适应的调整,在算法的开始阶段,适应度差别较大,为了防止一些适应度较差的个体在一开始就丢失,可以通过改变适应度函式使得它们得以保留下来,另外,当种群趋于收敛时,适应度差别很小,这时为了加快收敛的速度,应对适应度进行调整,使得个体适应度差别增大,从而更快的收敛到全局最优解。常用的适应度变换方法有:线性变换、幂函式变换和指数变换。
另外,採用适应度结合了模拟退火的思想。选择的作用是按某种方法从父代群体中选取一些将要进行交叉的个体,现在常用的选择方法很多,它们大多有一个共同的特点,就是都是基于适应度的选择,适应度大的个体被选中的机率就大,适应度小的个体被选中的机率就小。常用的选择算法有适应度比例法、精英保留策略、联赛选择法等。另外,也可以将这些选择算法混合使用,如今还出现了启发式的搜寻选择策略,这种策略是用每个个体所带有的启发信息来确定它被选中的机率。
交叉
交叉运算,是指对两个相互配对的染色体依据交叉机率cp,按某种方式相互交换其部分基因,从而形成两个新个体。交叉运算是遗传算法区别于其它进化算法的重要特徵,它在遗传算法中起关键作用,交叉操作应该产生儘可能多样性的后代[38]。目前常用的交叉方法有:单点交叉(简单交叉)、两点交叉、多点交叉、均匀交叉、算术交叉等。
变异
所谓变异运算,是指依据变异机率mp将个体编码串中的某些基因值用其它基因值来替换,从而形成一个新个体。遗传算法中的变异运算是产生新个体的辅助方法,它增强了遗传算法的局部搜寻能力,同时保持了种群的多样性。交叉运算和变异运算相互配合,共同完成对搜寻空间的全局搜寻和局部搜寻。对于用二进制编码符号串表示的个体,若需要进行变异操作的某一基因座上的基因值为0,则变异操作将其变为1;反之,若原有基因值为1,则变异操作将其变为0。对于用实数编码串表示的个体,则需要对进行变异操作的某一基因座上的基因值进行改变,比如基因值是1.4,可以通过随机方法重新生成一个基因值来替换原基因值,也可以採用别的生成方法重新生成一个基因值来替换原基因值。
自适应遗传算法
自适应遗传策略
自适应遗传算法(Adaptive Genetic Algorithm,AGA)是对基本遗传算法的一种改进,它通过对遗传参数的自适应调整,大大提高了遗传算法的收敛精度,加快了收敛速度。自适应遗传算法在保持群体多样性的同时,保证了遗传算法的收敛性。自适应遗传算法的遗传参数是自适应的,提高了基本遗传算法的收敛速度和收敛精度。如今大量改进算法根据生物进化特徵,更加形象的模拟生物进化,使算法能够以较大机率收敛到最优解。为了提高遗传算法的收敛速度、搜寻精度以及稳定性,自适应遗传算法各个阶段(编码、计算流程、种群规模、种群初始化策略、GA运算元、终止条件等)的设计必须合理,这样,许多改进的自适应遗传算法就应运而生。自适应遗传策略研究与设计可以分为微观遗传策略研究和巨观遗传策略研究两部分。
- 微观遗传策略:主要讨论群体规模、遗传运算元的形式和参数设计,及其对GA求解能力的影响。
- 巨观遗传策略:主要讨论关于通过GA流程的再设计,改变GA的巨观特徵,或者以GA流程为基础,引入其他算法构成混合GA,以期提高GA求解全局最优解的能力。下面我们讨论改进遗传算法的一些方法。
自适应群体策略
种群规模要视最佳化问题的具体特徵而定,一般的种群规模为几十到几百。现在,也有很多关于自适应种群规模研究的学术论文出现,比如徐晓华、陈俊、陈宏建所给出的可变种群规模的遗传算法[39],通过模拟人类进化过程中人口数量的增长规律,证明了他们的算法能得到较优的解,计算代价也较小。
自适应选择策略
自适应的选择策略可以不单单依靠个体适应度的由高到低的排序来进行选择,它会根据遗传算法的进化特徵自适应的选择将要进入交叉操作的个体。比如在王宁的硕士论文中所提到的自适应选择方法[40],首先挑选出种群中的最小适应度函式值,然后将种群中的所有个体的适应度函式值都减去这个最小值,然后根据新的适应度函式值採用轮盘赌法进行选择。这种策略在计算的过程中就能动态的改变每个串的适应度值。这样,个体的生存环境改变,评判标準也应随之发生变化。
自适应交叉策略
基本遗传算法的交叉机率是固定的,自适应交叉机率是随着进化过程的进行自适应调整的,在进化的开始阶段,交叉机率要选的大一些,这样的粗略搜寻过程有利于保持种群的多样性,而在后期,则需要进行细緻搜寻,防止破化最优解,加快收敛速度。许多改进的算法都立足于恰当的利用广泛搜寻和细緻搜寻来调整交叉机率,比如自适应算法可以利用分阶段法,将种群进化过程分为几个阶段,每个阶段的交叉机率上限和下限不同,一般都是採用从小到大的变化方式,还有的将交叉机率的计算公式改为余弦自适应变化。不同个体交叉机率的选取直接影响到算法的收敛速度和收敛精度,所以交叉机率的选取也很重要。
自适应变异策略
自适应变异是变异机率依照种群的进化特徵而变化的过程。一般的变异机率都在0.01以内选取,变异机率过大,对解的破坏性也比较大,容易使得到的最优解丢失,变异机率太小,容易出现早熟现象。所以,自适应的变异机率一般採取从大到小的变化方式。这样,在开始阶段进行广泛搜寻可以保持种群的多样性,在将要结束时进行细緻搜寻可以防止最优解被破坏。另外,在最佳化过程中,多次进行从广泛搜寻到细緻搜寻的操作,利用这种方法可以使得算法既能保证搜寻的全面性和精确性,也可以很快的跳出局部最优,从而更快更好地收敛到全局最优,经过实验证明,这种变异方法与以往的自适应算法相比较,在收敛速度、收敛精度上都有很大的提高,尤其对于多峰函式更加有效。