当前位置:文档之家› 遗传算法的基本原理

遗传算法的基本原理

遗传算法的基本原理LG GROUP system office room 【LGA16H-LGYY-LGUA8Q8-LGA162】第二章 遗传算法的基本原理遗传算法的基本描述2.1.1 全局优化问题全局优化问题的定义:给定非空集合S 作为搜索空间,f :S —>R 为目标函数,全局优化问题作为任务)(max x f Sx ∈给出,即在搜索空间中找到至少一个使目标函数最大化的点。

全局最大值(点)的定义:函数值+∞<=)(**x f f 称为一个全局最大值,当且仅当)()(*x f x f S x ≤⇒∈∀成立时,S x ∈*被称为一个全局最大值点(全局最大解)。

局部极大值与局部极大值点(解)的定义:假设在S 上给定了某个距离度量ρ,如果对S x ∈',0>∃ε,使得对S x ∈∀,)()(),(''x f x f x x ≤⇒<ερ,则称x ’为一个局部极大值点,f (x ’)为一个局部极大值。

当目标函数有多个局部极大点时,被称为多峰或多模态函数(multi-modality function )。

主要考虑两类搜索空间:伪布尔优化问题:当S 为离散空间B L ={0,1}L ,即所有长度为L 且取值为0或1的二进制位串的集合时,相应的优化问题在进化计算领域称为伪布尔优化问题。

连续参数优化问题:当取S 伪n 维实数空间R n 中的有界集合],[1i i n i b a S =∏=,其中i i b a <,i = 1, 2, … , n 时,相应的具有连续变量的优化问题称为连续参数优化问题。

对S 为B L ={0,1}L ,常采用的度量时海明距离,当],[1i i n i b a S =∏=时,常采用的度量就是欧氏距离。

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 的运行效率,允许生成包含致死基因的编码位串,它们对应于优化问题的非可行解。

虽然会导致冗余或无效的搜索,但可能有助于生成全局最优解所对应的个体,所需的总计算量可能反而减少。

根据模式定理,De Jong 进一步提出了较为客观明确的编码评估准则,称之为编码原理。

具体可以概括为两条规则:1)有意义积木块编码规则:编码应易于生成与所求问题相关的短距和低阶的积木块。

2)最小字符集编码规则:编码应采用最小字符集,以使问题得到自然、简单的表示和描述。

1.二进制编码1)连续实函数的二进制编码设一维连续实函数],[),(v u x x f ∈采用长度维L 的二进制字符串进行定长编码,建立位串空间:{}K L a a a S ,,,21 =,),,,(21kL k k k a a a a =,{}1,0∈kl ak =1,2,…,K; l =1,2,…,L; K=2L其中,个体的向量表示为),,,(21kL k k k a a a a =,其字符串形式为kL k k k a a a s 21=,s k 称为个体a k 对应的位串。

表示精度为)12/()(--=∆L u v x 。

将个体又位串空间转换到问题空间的译码函数],[}1,0{:v u L →Γ的公式定义为:对于n 维连续函数),,2,1](,[),,,,(),(21n i v u x x x x x x f i i i n =∈=,各维变量的二进制编码位串的长度为l i ,那么x 的编码从左到右依次构成总长度为∑==ni i l L 1的二进制编码位串。

相应的GA 编码空间为:},,,{21K L a a a S =,K=2L该空间上的个体位串结构为对于给定的二进制编码位串s k ,位段译码函数的形式为)2(12),,,(121∑=---+=Γ=i i i il j j l i kj l i i i i kl i k i k i i a u v u a a a x , i = 1,2,…,n 采用二进制编码的GA 进行数值优化时,可以通过改变编码长度,协调搜索精度和搜索效率之间的关系。

2) 组合问题的二进制编码在很多组合优化问题中,目标函数和约束函数均为离散函数,采用二进制编码往往具有直接的语义,可以将问题空间的特征与位串的基因相对应。

2.其他编码1)大字符集编码2)序列编码3)实数编码4)树编码5)自适应编码6)乱序编码7)二倍体和显性规律Lawrence Davis等学者主张:采用的编码对问题来讲应该时最自然的,并可以据此设计能够处理该编码的遗传算子。

2.1.4 群体设定遗传算法的两个主要特点之一就是基于群体搜索的策略,群体的设定,尤其是群体规模的设定,对遗传算法性能有着重要的影响。

这中间包括两个问题:1)初始群体如何设定;2)进化过程中各代的规模如何维持?1.初始群体的设定遗传算法中初始群体中的个体是按一定的分布随机产生的,一般来讲,初始群体的设定可以采用如下的策略:1)根据问题固有知识,设法把握最优解所占空间在整个问题空间中的分布范围,然后,在此分布范围内设定初始群体。

2)先随机生成一定数目的个体,然后从中挑出最好的个体加入到初始群体中。

这一过程不断重复,直到初始群体中个体数达到了预定的规模。

2.群体规模的设定根据模式定理,若群体规模为M,则遗传操作可从这M个个体中生成和检测O(M3)个模式,并在此基础上不断形成和优化积木块,直到找到最优解。

显然M越大,遗传操作处理的模式就越多,生成有意义的积木块并逐渐进化为最优解的机会就越高。

换句话说,群体规模越大,群体中个体的多样性越高,算法陷入局部最优解的危险就越小。

另外,群体规模太小,会使遗传算法的搜索空间分布范围有限,因而搜索有可能停止在未成熟阶段,引起未成熟收敛(premature convergence)现象。

但是,从计算效率来看,群体规模越大,其适应度评价次数越多,计算量也就越大,从而影响算法的效率。

研究表明,在二进制编码的前提下,为了满足隐并行性,群体个体数只要设定为2L/2即可,L为个体串长度。

这个数比较大,实际应用中群体规模一般取几十~几百。

2.1.4 适应度函数(评价函数)遗传算法在进化搜索中基本不用外部信息,仅用目标函数即适应度函数为依据。

遗传算法的目标函数不受连续可微的约束且定义域可以为任意集合。

对适应度函数的唯一要求是,针对输入可计算出能加以比较的非负结果(比例选择算子需要)。

需要强调的是,适应度函数值是选择操作的依据,适应度函数设计直接影响到遗传算法的性能。

1.目标函数映射成适应度函数对于给定的优化问题,目标函数有正有负,甚至可能是复数值,所以有必要通过建立适应度函数与目标函数的映射关系,保证映射后的适应度值是非负的,而且目标函数的优化方向应对应于适应度值增大的方向。

1)对最小化问题,建立如下适应函数和目标函数的映射关系:其中,c可以是一个输入值或是理论上的最大值,或者是当前所有大或最近K代中g(x)的max随着代数会有变化。

最大值,此时cmax2)对于最大化问题,一般采用以下映射:其中,c可以是一个输入值,或者是当前所有代或最近K代中g(x)的最小值min2.适应度函数定标在遗传进化的初期,通常会出现一些超常个体,若按比例选择策略,这些异常个体有可能在群体中占据很大的比例,导致未成熟收敛。

显然,这些异常个体因竞争力太突出,会控制选择过程,从而影响算法的全局优化性能。

另以方面,在遗传进化过程中,虽然群体中个体多样性尚存在,但往往会出现群体的平均适应度已接近最佳个体适应度,这时,个体间的竞争力相似,最佳个体和其它个体在选择过程中有几乎相等的选择机会,从而使有目标的优化过程趋于无目标大的随机搜索过程。

对未成熟收敛现象,应设法降低某些异常个体的竞争力,这可以通过缩小相应的适应度值来实现。

对于随机漫游现象,应设法提高个体间的竞争力差距,这可以通过放大相应的适应度值来实现。

这种适应度的缩放调整称为适应度定标。

1)线性定标(linear scaling)f’ = af + b2) 截断(sigma truncation)3)乘幂标f’ = f K4)指数定标f’ = exp(-bf)2.1.5 遗传算子遗传操作是模拟生物基因遗传的操作。

包括三个基本遗传算子(genetic operator):选择,交叉和变异。

这三个遗传算子具有一些特点:(1)这三个算子的操作都是在随机扰动情况下进行的。

换句话说,遗传操作是随机化操作,因此,群体中个体向最优解迁移的规则是随机的。

需要强调的是,这种随机化操作和传统的随机搜索方法是有区别的。

遗传操作进行的是高效有向的搜索,而不是如一般随机搜索方法所进行的无向搜索。

(2)遗传操作的效果和所取的操作概率、编码方法、群体大小,以及适应度函数的设定密切相关。

(3)三个基本算子的操作方法和操作策略随具体求解问题的不同而异。

或者说,是和个体的编码方式直接相关。

1、选择(selection)算子从群体中选择优胜个体,淘汰劣质个体的操作叫选择。

选择算子有时又称为再生算子(reproduction operator)。

选择即从当前群体中选择适应度值高的个体以生成配对池(mating pool)的过程。

为了防止由于选择误差,或者交叉和变异的破坏作用而导致当前群体的最佳个体在下一代的丢失,De Jong提出了精英选择(elitist selection)策略和代沟的概念。

相关主题