遗传算法的基本原理.docx
《遗传算法的基本原理.docx》由会员分享,可在线阅读,更多相关《遗传算法的基本原理.docx(21页珍藏版)》请在冰豆网上搜索。
遗传算法的基本原理
第二章遗传算法的基本原理
2.1遗传算法的基本描述
2.1.1全局优化问题
全局优化问题的定义:
给定非空集合S作为搜索空间,f:
S—>R为目标函数,全局优化问题作为任务maxf(x)给出,即在搜索空间中找到至少一个使目标函数最大化的点。
X母
全局最大值(点)的定义:
函数值f*=f(x*):
:
:
■:
:
称为一个全局最大值,当且仅当
-X•S=f(x)_f(x)成立时,x-S被称为一个全局最大值点(全局最大解)。
局部极大值与局部极大值点(解)的定义:
假设在S上给定了某个距离度量t,如果对x
:
:
(X,X):
:
;=f(X)_f(X),则称x为一个局部极大值点,f(x')为一个局部极大值。
当目标函数有多个局部极大点时,被称为多峰或多模态函数(multi-modalityfunction)。
主要考虑两类搜索空间:
伪布尔优化问题:
当S为离散空间Bl={0,1}l,即所有长度为L且取值为0或1的二进制位串的集合时,相应的优化问题在进化计算领域称为伪布尔优化问题。
连续参数优化问题:
当取S伪n维实数空间Rn中的有界集合S「「n=1[3i,bi],其中&:
:
:
bi,i=1,2,…,n时,相应的具有连续变量的优化问题称为连续参数优化问题。
对S为吐{0,1}L,常采用的度量时海明距离,当S「点[ai,bj时,常采用的度量就是欧氏距离。
2.1.2遗传算法的基本流程
遗传算法的基本步骤如下:
1)选择编码策略,把参数集合X和域转换为位串结构空间S;
2)定义适应度函数f(X);
3)确定遗传策略,包括群体规模,选择、交叉、变异算子及其概率。
4)生成初始种群P;
5)计算群体中各个体的适应度值;
6)按照遗传策略,将遗传算子作用于种群,产生下一代种群;
7)迭代终止判定。
遗传算法涉及六大要素:
参数编码,初始群体的设定,适应度函数的设计,遗传操作的设计,控制参数的设定,迭代终止条件。
2.1.3遗传编码
由于GA计算过程的鲁棒性,它对编码的要求并不苛刻。
原则上任何形式的编码都可以,只要存在合适的对其进行操作的遗传算子,使得它满足模式定理和积木块假设。
由于编码形式决定了交叉算子的操作方式,编码问题往往称作编码-交叉问题。
对于给定的优化问题,由GA个体的表现型集合做组成的空间称为问题(参数)空间,由GA基因型个体所组成的空间称为GA编码空间。
遗传算子在GA编码空间中对位串个体进行操作。
定义:
由冋题空间向GA编码空间的映射称为编码,而有编码空间向冋题空间的映射成为译码。
问题编码一般应满足以下三个原则:
1)完备性(completeness):
问题空间中的所有点都能能成为GA编码空间中的点的表现型。
即编码应能覆盖整个问题空间。
2)健全性(soundness):
GA编码空间中的染色体位串必须对应问题空间中的某一潜在解。
即每个编码必须是有意义的。
3)非冗余性(non-redundancy):
染色体和潜在解必须一一对应。
在某些情况下,为了提高GA的运行效率,允许生成包含致死基因的编码位串,它们对应于优化问题的非可行解。
虽然会导致冗余或无效的搜索,但可能有助于生成全局最优解所对应的个体,所需的总计算量可能反而减少。
根据模式定理,DeJong进一步提出了较为客观明确的编码评估准则,称之为编码原理。
具体可以概括为两条规则:
1)有意义积木块编码规则:
编码应易于生成与所求问题相关的短距和低阶的积木块。
2)最小字符集编码规则:
编码应采用最小字符集,以使问题得到自然、简单的表示和描述。
1.二进制编码
1)连续实函数的二进制编码
设一维连续实函数f(x),[u,v]采用长度维L的二进制字符串进行定长编码,建立位串
空间:
其中,个体的向量表示为ak=(ak1,ak2^',akL),其字符串形式为sk=ak1ak2…akL,Sk称
为个体ak对应的位串。
表示精度为Ax=(v-u)/(2L-1)
将个体又位串空间转换到问题空间的译码函数-:
{0,1}L>[u,v]的公式定义为:
对于n维连续函数f(x),x=(X1,X2,…,xn),为•[upvj(i二1,2,…,n),各维变量的二进制编
n
码位串的长度为li,那么x的编码从左到右依次构成总长度为L-I,的二进制编码位串。
iJ
相应的GA编码空间为:
S={ai,a2^,aK},K=2
该空间上的个体位串结构为
对于给定的二进制编码位串Sk,位段译码函数的形式为
h
Xi=-(aki,ak2,…,&外)=Ui「(•二.akj2'J),i=1,2,…,n
2i-1y
米用二进制编码的GA进行数值优化时,可以通过改变编码长度,协调搜索精度和搜索效率之间的关系。
2)组合冋题的二进制编码
在很多组合优化问题中,目标函数和约束函数均为离散函数,采用二进制编码往往具有直接的语义,可以将问题空间的特征与位串的基因相对应。
2.其他编码
1)大字符集编码
2)序列编码
3)实数编码
4)树编码
5)自适应编码
6)乱序编码
7)二倍体和显性规律
LawreneeDavis等学者主张:
采用的编码对问题来讲应该时最自然的,并可以据此设计能够处理该编码的遗传算子。
2.1.4群体设定
遗传算法的两个主要特点之一就是基于群体搜索的策略,群体的设定,尤其是群体规模的设定,对遗传算法性能有着重要的影响。
这中间包括两个问题:
1)初始群体如何设定;2)进化过程中各代的规模如何维持?
1.初始群体的设定
遗传算法中初始群体中的个体是按一定的分布随机产生的,一般来讲,初始群体的设定可以采用如下的策略:
1)根据问题固有知识,设法把握最优解所占空间在整个问题空间中的分布范围,然后,在此分布范围内设定初始群体。
2)先随机生成一定数目的个体,然后从中挑出最好的个体加入到初始群体中。
这一过程不断重复,直到初始群体中个体数达到了预定的规模。
2.群体规模的设定
根据模式定理,若群体规模为M则遗传操作可从这M个个体中生成和检测o(M)个模式,并在此基础上不断形成和优化积木块,直到找到最优解。
显然M越大,遗传操作处理的模式就越多,生成有意义的积木块并逐渐进化为最优解的机会就越高。
换句话说,群体规模越大,群体中个体的多样性越高,算法陷入局部最优解的危险就越小。
另外,群体规模太小,会使遗传算法的搜索空间分布范围有限,因而搜索有可能停止在未成熟阶段,引起未成熟收敛(prematureconvergence)现象。
但是,从计算效率来看,群体规模越大,其适应度评价次数越多,计算量也就越大,从而影响算法的效率。
研究表明,在二进制编码的前提下,为了满足隐并行性,群体个体数只要设定为2l/2即
可,L为个体串长度。
这个数比较大,实际应用中群体规模一般取几十〜几百。
2.1.4适应度函数(评价函数)
遗传算法在进化搜索中基本不用外部信息,仅用目标函数即适应度函数为依据。
遗传算法的目标函数不受连续可微的约束且定义域可以为任意集合。
对适应度函数的唯一要求是,针对输入可计算出能加以比较的非负结果(比例选择算子需要)。
需要强调的是,适应度函
数值是选择操作的依据,适应度函数设计直接影响到遗传算法的性能。
1.目标函数映射成适应度函数
对于给定的优化问题,目标函数有正有负,甚至可能是复数值,所以有必要通过建立适应度函数与目标函数的映射关系,保证映射后的适应度值是非负的,而且目标函数的优化方向应对应于适应度值增大的方向。
1)对最小化问题,建立如下适应函数和目标函数的映射关系:
其中,Cmax可以是一个输入值或是理论上的最大值,或者是当前所有大或最近K代中g(X)的最大值,此时Cmax随着代数会有变化。
2)对于最大化问题,一般采用以下映射:
其中,cmin可以是一个输入值,或者是当前所有代或最近K代中g(x)的最小值
2.适应度函数定标
在遗传进化的初期,通常会出现一些超常个体,若按比例选择策略,这些异常个体有可能在群体中占据很大的比例,导致未成熟收敛。
显然,这些异常个体因竞争力太突出,会控制选择过程,从而影响算法的全局优化性能。
另以方面,在遗传进化过程中,虽然群体中个体多样性尚存在,但往往会出现群体的平均适应度已接近最佳个体适应度,这时,个体间的竞争力相似,最佳个体和其它个体在选择过程中有几乎相等的选择机会,从而使有目标的优化过程趋于无目标大的随机搜索过程。
对未成熟收敛现象,应设法降低某些异常个体的竞争力,这可以通过缩小相应的适应度值来实现。
对于随机漫游现象,应设法提高个体间的竞争力差距,这可以通过放大相应的适应度值来实现。
这种适应度的缩放调整称为适应度定标。
1)线性定标(linearscaling)
f'=af+b
2)匚截断(sigmatruncation)
3)乘幂标
4)指数定标
f'=exp(-bf)
2.1.5遗传算子
遗传操作是模拟生物基因遗传的操作。
包括三个基本遗传算子(geneticoperator):
选择,交叉和变异。
这三个遗传算子具有一些特点:
(1)这三个算子的操作都是在随机扰动情况下进行的。
换句话说,遗传操作是随机化操作,因此,群体中个体向最优解迁移的规则是随机的。
需要强调的是,这种随机化操作和传统的随机搜索方法是有区别的。
遗传操作进行的是高效有向的搜索,而不是如一般随机搜索方法所进行的无向搜索。
(2)遗传操作的效果和所取的操作概率、编码方法、群体大小,以及适应度函数的设定密切相关。
(3)三个基本算子的操作方法和操作策略随具体求解问题的不同而异。
或者说,是和个体的编码方式直接相关。
1、选择(selection)算子
从群体中选择优胜个体,淘汰劣质个体的操作叫选择。
选择算子有时又称为再生算子(reproductionoperator)。
选择即从当前群体中选择适应度值高的个体以生成配对池(matingpool)的过程。
为了防止由于选择误差,或者交叉和变异的破坏作用而导致当前群体的最佳个体在下一代的丢失,DeJong提出了精英选择(elitistselection)策略和
代沟的概念。
Holland等提出了稳态选择(steady-stateselection)策略。
下面一些概念可以用来比较不同的选择算法:
(1)选择压力(selectionpressure):
最佳个体选中的概率与平均选中概率的比值。
(2)偏差(bias)个体正规化适应度与其期望再生概率的绝对差值。
(3)
⑷多样化损失(lossofdiversity)
(5)选择强度(selectionintensity)度。
(6)选择方差(selectionvarianee)度的方差。
个体扩展(spread)单个个体子代个数的范围。
在选择阶段末选中个体数目占种群的比例。
将正规高斯分布应用于选择方法,期望平均适应
将正规高斯分布应用于选择方法,期望种群适应
1)适应度比例选择
是最基本的选择方法,其中每个个体被选择的期望数量与其适应度值和群体平均适应度值的比例有关,通常采用轮盘赌(roulettewheel)方式实现。
这种方式首先计算每个个体的适应度值,然后计算出此适应度值在群体适应度值总和中所占的比例,表示该个体在选择
过程中被选中的概率。
选择过程体现了生物进化过程中“适者生存,优胜劣汰”的思想。
对于给定的规模为n的群体P二{a「a2,…,aj,个体arP的适应度值为f(aj),其选择
概率为:
经过选择操作生成用于繁殖的配对池,其中父代种群中个体生存的期望数目为:
当群体中个体适应度值的差异非常大时,最佳个体与最差个体被选择的概率之比(选择压力)业将按指数增长。
最佳个体在下一代的生存机会将显着增加,而最差个体的生存机会将被剥夺。
当前群体中的最佳个体将快速充满整个群体,导致群体的多样性迅速降低,GA
也就过早地丧失了进化能力。
这是适应度比例选择容易出现地问题。
2)Boltzmann选择
在群体进化过程中,不同阶段需要不同地选择压力。
早期阶段选择压力较小,我们希望较差地个体也又一定地生存机会,使得群体保持较高地多样性;后期阶段,选择压力较大,我们希望GA缩小搜索邻域,加快当前最优解的改善速度。
为了动态调整群体进化过程中的选择压力,Goldberg设计了Boltzmann选择方法。
个体选择概率为:
其中,T>0是退火温度。
T随着迭代地进行逐渐缩小,选择压力将随之升高。
T是控制群
体进化过程中选择压力的关键,一般T的选择需要考虑预计最大进化代数。
3)排序选择
排序选择方法是将群体中个体按其适应度值由大到小的顺序排成一个序列,然后将事先设计好的序列概率分配给每个个体。
显然,排序选择域个体的适应度值的绝对值之间无直接关系,仅仅与个体之间适应度值的相对大小有关。
排序选择不利用个体适应度值绝对值的信
息,可以避免群体进化过程中的适应度标度变换。
由于排序选择概率比较容易控制,所以在实际计算过程中经常采用,特别是适用于动态调整选择概率,根据进化效果适时改变群体的选择压力。
最常用的排序选择方法是采用线性函数将队列序号映射为期望的选择概率,即线
性排序选择(linearrankingselection)。
对于给定的规模为n的群体P二{a“a2,…,an},并且满足个体适应度值降序排列
f⑻)一f6)一…-f(an)。
假设当前群体最佳个体a1在选择操作后的期望数量为,即
•二nP1;最差个体an在选择操作后的期望数量为pn。
其它个体的期望数量按等
差序列计算,厶=j-jj贝Ujy-##(j-1)=2(j-1),故现在
nTnT
排序选择概率为
n
由aj=n可以导出;_=2。
要求Pj_O,__0,故1乞<2。
当.=2,_=0时,j壬
即最差个体在下一代生存的期望数量为o,群体选择压力最大;当•二一二1时,选择方式为按均匀分布的随机选择,群体选择压力最小。
4)联赛选择(tournamentselection)
联赛选择的基本思想是从当前群体中随机选择一定数量的个体(放回或者不放回),将
其中适应值最大的个体放入配对池中。
反复执行这一过程,直到配对池中的个体数量达到设定的值。
联赛规模用q表示,也称q-联赛选择。
联赛选择与个体的适应度值由间接关系,注重适应度值大小的比较。
根据大量实验总结,联赛规模一般取q=2。
联赛选择的选择概率也是比较容易控制的,实际计算中也经常采用,适用于在GA迭代
过程中动态调整选择概率,将进化效果与群体选择压力联系起来。
研究证明,当群体规模比较大时,联赛选择与排序选择的个体选择概率基本相同。
5)精英选择
从GA的整个选择策略来讲,精英选择时群体收敛导优化问题全局最优解的一种基本保障。
如果下一代群体的最佳个体适应度值小于当前群体最佳个体的适应度值,则将当前群体最佳个体或者适应度值大于下一代最佳个体适应度值的多个个体直接复制到下一代,随机替代和替代最差的下一代群体中的相应数量的个体。
6)稳态选择
DeJong将下一代群体中生成的与上一代不同的新个体所占的比例称为“代沟”
(generationgap)。
代沟越大,说明新个体的生成比例越高,群体正在搜索新的编码空间。
稳态选择操作中,仅有少量个体按适应度值比例选择方法被选择,通过遗传操作生成新的个体。
新个体放回到群体中时,随机替代等量的旧个体,或者替代等量的最差的旧个体。
Holland将稳态选择方法应用于分类器规则学习中,最大程度继承已获得的规则,实现增量学习。
2、交叉(crossover)算子
交叉操作时进化算法中遗传算法具有的原始性的独有特征。
GA交叉算子时模仿自然界有性繁殖的基因重组过程,其作用在于将已有的优良基因遗传给下一代个体,并生成包含更复杂基因结构的新个体。
交叉操作一般分为以下几个步骤:
1)从配对池中随机取出要交配的一对个体;
2)根据位串长度L,对要交叉的一对个体,随机选取[1,L-1]中一个或多个整数k作为交叉位置;
3)根据交叉概率实施交叉操作,配对个体在交叉位置处,相互交换各自的部分内容,从而形成新的一对个体。
实现个体结构重组的交叉算子的设计一般与所求解的具体问题有关,任何交叉算子需满足交叉算子的评估准则,即交叉算子需保证前一代中优秀个体的性状能在下一代的新个体中尽可能得到遗传何继承。
此外,交叉算子设计和编码设计需协调操作。
1)一点交叉(one-pointcrossover)
一点交叉是由Holland提出的最基础的一种交叉方式。
一点交叉操作的信息量比较小,
交叉点位置的选择可能带来较大的偏差(positionbias)。
按照Holland的思想,一点交叉算子不利于长距模式的保留和重组,而且位串末尾的重要基因总是被交换(尾点效应,end-pointeffect)。
故实际应用中采用较多的是两点交叉。
位串A:
1101|1010
位串B:
1011|0101
位串A':
11010101
位串B':
10111010
2)两点交叉(two-pointcrossover)
位串A:
11|011|010
位串B:
10|110|101
位串A:
11|110|010
位串B':
10|011|101
3)多点交叉(multi--pointcrossover)
多点交叉是上述两种交叉的推广,有时又被称为广义交叉。
一般来讲,多点交叉较少采用,因为它影响遗传算法的在线和离线性能。
多点交叉不利于有效保存重要的模式。
位串A:
11|01|10|10
位串B:
10|11|01|01
位串A':
11|11|10|01
位串B':
10|01|01|10
4)一致交叉
一致交叉即染色体位串上的每一位按相同概率进行随机均匀交叉。
一致交叉算子生成的
新个体位:
si二a'11al…a'1L,s\二a'22…a/,操作描述如下:
O(Pc,x):
x>1/2a2i,xa1/2
xE1/2;a2^a1i,xE1/2
x是取值为[0,1]上符合均匀分布的随机变量。
Spears和DeJong认为一致交叉算子优于多点交叉算子,并提出一种带偏置概率的一致交叉(0.8_x_0.5),不存在多点交叉算子操作引起的位置偏差,任意基因位的重要基因在一致交叉作用下均可以重组,并遗传给下一代个体。
3、逆转算子
在自然遗传学中有一种称作倒位的现象,在染色体中有两个倒位点,在这两点之间的基因位置倒换,使得那些在父代中离得很远得基因位在后代中紧靠在一起。
在GA中相当于重
新定义基因块,使染色体位串上得重要基因更加紧凑,更不易被交叉算子所分裂。
仿照此现象,Holland提出了逆转算子。
逆转操作首先在个体位串上随机地选择两个点,位串染色体被这两个点分成三段,将中间段的左右顺序倒转过来与另两段相连,形成新的个体位串。
比如:
长度为10的二进制位
串,其中下划线标示的等位基因为重要基因:
10A111011A01(A是倒位位置)
经倒位后变为1011011101。
新的位串中重要基因更为靠近,被单点交叉算子分离的可能性大大降低了。
逆转算子一般要求采用类似于乱序编码的带基因位标号的染色体结构。
比如,长度为10
的位串:
位串:
1011101101
基因位编号:
12345678910
按照上述方法实施逆转操作后,编号也随之翻转:
位串:
1_011011101
基因位编号:
12876543910
这样倒位操作就不会影响个体位串的适应值计算。
但是,逆转算子对交叉算子有一定影响。
考虑下列A,B位串之间的单点交叉:
位串A:
1011101101
基因位编号:
12345678910
位串B:
10_1」011101
基因位编号:
12876543910
若简单地将第4个基因位以右的部分位串进行交换,得到:
位串A'1011011101
基因位编号:
12346543910
位串B'1011101101
基因位编号:
12875678910
两个子代位串中第3、4和7、8位基因在A'B'中重复或遗漏,导致子代个体中包含冗余或不完整的遗传信息。
为解决此问题,一般遵循五种交换规则:
1)严格同序交换,只允许同序位串才能交换。
2)生存性交换,允许不同序位串进行交换,如果子代码串不包含完整的遗传信息,则不把它们放入新一代群体中。
3)任选方案交换,随意选择两个位串,并将其中任何一个指定为主序位申,另一个位串则按主序位串的次序映射,然后再进行通常的交换,这样保证了交换结果的合法性。
4)最佳方案交换,与任选方案交换基本相同,只是将两个位串中适应值高的位串作为主序位串。
5)结构修复,对于两个子代位串中重复或短缺的基因,随机将重复的基因改变为缺省的基因,形成完整的位串结构。
目前,这五种原则在基于二进制编码的参数优化问题的GA求解中还很少采用。
对于某
些问题要求采用具有显着物理含义的特殊编码方式,可以根据GA进化的困难程度适当应用。
4、变异(mutation)算子
变异操作模拟自然界生物体进化中染色体上某位基因发生的突变现象,从而改变染色体的结构和物理性状。
在遗传算法中,变异算子通过按变异概率Pm随机反转某位等位基因的二进制字符值来实现。
对于给定的染色体位串S=务&2…aL,具体如下:
生成新的个体S^3'1a'2…a'L。
其中,xi是对应于每一个基因位产生的均匀随机变量,
为[1,0]。
变异操作作用于个体位串的等位基因上,由于变异概率比较小,在实施过程中一些个体
可能根本不发生一次变异,造成大量计算资源的浪费。
因此,在GA具体应用中,我们可以
采用一种变通措施,首先进行个体层次的变异发生的概率判断,然后再实施基因层次上的变
异操作。
一般包括两个基本步骤:
1)计算个体发生变异的概率
以原始的变异概率Pm为基础,可以计算出群体中个体发生变异的概率:
给定均匀随机变量Xi•[1,0],若X乞Pm(aj),则对该个体进行变异,否则表示不发生变异。
2)计算发生变异的个体上基因变异的概率
由于变异操作方式发生了改变,被选择变异的个体上基因的变异概率也需要相应修改,以保证整个群体上基因发生变异的期望次数相等。
传统变异方式下整个群体基因变异的期望
次数为nLPm。
设新的基因变异概率为P'm,新的变异方式下整个群体基因变异的期望次
长度趋于无穷大时,两者相等,即
数为(nxpm(aj))"Lxp'm):
。
要求两者相等,即
可以导出:
P'mL。
P'mPm,位串越短,P'm越比Pm大。
当位串
Pm(aj)1—(1—Pm)