进化策略和进化规划德国学者Schwefel和Rechenburg美国学者Fogel分别提出进化策略ES和进化规划EP。这三种方法具有共同的本质,分别强调了自然进化中的不同方面:遗传算法强调染色体的操作,进化策略强调了个体级的行为变化。而进化规划则强调种群级上的行为变化。现在学术界把遗传算法GA、进化策略ES和进化规划EP通称为进化算法EC。8.1进化算法的早期研究进化算法起源于20世纪30年代的通过仿真生物进化过程进行机器学习的研究。早在1932年,Cannon就把自然进化想象为一个学习过程。与自然进化过程的机制和结果稍微不同是,Cannon不是通过维持一个特定的种群来进行搜索,而是对单个个体反复进行随机试验。到了1950年,Turng认识到,在机器学习和进化之间存在着明显的关系。1959年,Friedman推测,利用变异和选择的仿真可以设计“思想机器”,并且指出下棋的程序可以用这种方法设计。在1960年,Cambell猜想:在导致知识扩张的所有过程中,都要涉及“盲目—变化—选择—幸存”的过程。此后,一些学者逐渐将进化理论用于随机工程控制、机器学习和函数优化等领域。8.2进化策略•进化策略(EvolutionaryStrategies)是在1965年由Rechenburg和Schwefel独立提出的。•早期的进化策略的种群中只包含一个个体,并且只使用变异操作。在每一代中,变异后的个体与其父代进行比较,并选择较好的一个,这种选择策略被称为(1+1)策略。•进化策略中的个体用传统的十进制实型数表示,即:Xt——第t代个体的数值,N(0,σ)——服从正态分布的随机数,其均值为零,标准差为σ。8.2进化策略进化策略的一般算法可以描述如下:(1)问题为寻找实值n维矢量x,使得函数F(x):RnR取极值。不失一般性,设此程序为极小化过程。(2)从各维的可行范围内随机选取亲本xi,i=1,…,p的初始值。初始试验的分布一般是均匀分布。(3)通过对于x的每个分量增加零均值和预先选定的标准差的高斯随机变量,从每个亲本xi产生子代x’i。(4)通过将误差F(xi)和F(x’i),i=1,…,p进行排序,选择并决定哪些矢量保留。具有最小误差的p个矢量变成下一代的新亲本。(5)进行新试验,选择具有最小方差的新子代,一直到获得充分解,或者直到满足某个终止条件8.2进化策略•在这个模型中,把试验解的分量看做个体的行为特性,而不是沿染色体排列的基因。可以和GA一样,假设这些表现型特征具有基因根源,但是它们之间的联系实质并没有被弄清楚,所以我们把着重点放在个体的行为特性上。•假设不管发生什么遗传变换,所造成各个行为的变化均遵循零均值和某个标准差的高斯分布。•由于基因多效性和多基因性,特定基因的改变可以影响许多表现型特征。所以在创造新子代时,较为合适的是同时改变亲本所有分量。8.2进化策略进化策略的最初试验采用上述算法,主要采用单亲本—单子代的搜索,即“(1+1)进化策略((1+1)-ES)”,其中单个子代是由单个亲本产生的,它们都被置于生存竞争中,较弱的一个要被挑选出来消去。当把这种算法用于函数优化时,发现它有两个缺点:(1)各维取定常的标准差使得程序收敛到最优解的速度很慢;(2)点到点搜索的脆弱本质使得程序在局部极值附近容易受停滞的影响(虽然此算法表明可以渐近地收敛到全局最优点)。8.2进化策略(μ+1)-ES:早期的(1十1)-ES,没有体现群体的作用,只是单个个体在进化,具有明显的局限性。随后,Rechenberg又提出(μ+1)-ES,在这种进化策略中,父代有μ个个体(μ>1),并且引入重组(Recombination)算子,使父代个体组合出新的个体。在执行重组时,从μ个父代个体中用随机的方法任选两个个体:8.2进化策略然后从这两个个体中组合出如下新个体:式中qi=1或2,它以相同的概率针对i=1,2,…,n随机选取。对重组产生的新个体执行突变操作,突变方式及σ的调整与(1+1)-ES相同。将突变后的个体与父代μ个个体相比较,若优于父代最差个体,则代替后者成为下一代μ个个体新成员,否则,重新执行重组和突变产生另一新个体,8.2进化策略(μ+1)-ES和(1+1)-ES具有相同的策略:只产生一个新个体。(μ+1)-ES的特点在于:(1)采用群体,其中包含μ个个体;(2)增添重组算子,它相当于遗传算法中的交叉算子,从父代继承信息构成新个体。显然,(μ+1)-ES比(1+1)-ES有了明显的改进,为进化策略这种新的进化算法奠定良好的基础。8.2进化策略在1973年,Rechenburg把该算法的期望收敛速度定义为对最优点的平均距离与要得到此改善所需要的试验次数之比。1981年,Schwefel在进化策略中使用多重亲本和子代,这是Rechenburg早期工作(使用多重亲本,但是仅使用单个子代)的发展,后来考察了两种方法,分别表示为(μ+λ)-ES和(μ,λ)-ES。在前者中,μ个亲本制造λ个子代,所有解均参加生存竞争,选出最好的μ个作为下一代的亲本。在后者中,只有λ(λμ)个子代参加生存竞争,在每代中μ个亲本被完全取代。这就是说,对于每一代,每个解张成的生命是有限的。增加种群大小,就在固定数目的世代中增加了优化速率。8.2进化策略Rechenburg引入了如下想法,在每个新样本的特征分布中附加了一个自适应参数。在这个方法中,每个解矢量不仅包括了n维试验矢量x,而且还包括了扰动矢量σ,后者给出如何变异x以及它本身如何变异的指令。例如,设x为当前矢量,σ为对应于x每个维的方差矢量,于是新的解矢量x’,σ’可以这样产生:N(0,1)表示单个标准高所随机变量,Ni(0,1)表示第i个独立相同的标准高斯分布,τ和τ’是影响总体和个体步长的算子集参数。以这种方式,进化策略可以在线地适应误差曲面的宽度,并且更恰当地分配实验次数。进化策略的基本技术问题的表达:为了与突变操作相适应,进化策略有两种表达方式。(1)二元表达方式。这种表达方式中个体由目标变量X和标准差σ两部分组成,每部分又可以有n个分量,即:X和σ的关系为:τ为全局系数,常取1。进化策略的基本技术(2)三元表达方式。为了改善进化策略的收敛速度,Schwefel在二元表达的基础上引入第三个因子——坐标旋转角度α。个体的描述扩展为(X,σ,α),即:三者的关系为:αi——父代个体i分量与j分量间坐标的旋转角度;α’j——子代新个体i分量与j分量间坐标的旋转角度;β——系数,常取0.0873;zi——取决于σ’及α’的正态分布随机数。进化策略的基本技术旋转角度αi表面上是分量i与j间坐标的旋转角度,实质上它是分量i与分量j之间协方差的体现。重组进化策略中的重组(Recombination)算子相当于遗传算法的交叉,它们都是以两个父代个体为基础进行信息交换。进化策略中,重组方式主要有三种:(1)离散重组。先随机选择两个父代个体进化策略的基本技术然后将其分量进行随机交换,构成子代新个体的各个分量,从而得出如下新个体:(2)中值重组。这种重组方式也是先随机选择两个父代个体,然后将父代个体各分量的平均值作为子代新个体的分量,构成的新个体为:这时,新个体的各个分量兼容两个父代个体信息,而在离散重组中则只含有某一个父代个体的因子。进化策略的基本技术(3)混杂(Panmictic)重组。这种重组方式的特点在于父代个体的选择上。混杂重组时先随机选择一个固定的父代个体,然后针对子代个体每个分量再从父代群体中随机选择第二个父代个体。也就是说,第二个父代个体是经常变化的。至于父代两个个体的组合方式,既可以采用离散方式,也可以来用中值方式,甚至可以把中值重组中的1/2改为[0,1]之间的任一权值。研究表明,进化策略采用重组后,明显增加算法的收敛速度。Schwefel建议,对于目标变量X宜用离散重组,对于策略因子σ及α宜用中值重组或混杂中值重组。进化策略的基本技术选择:进化策略的选择有两种:一为(μ+λ)选择,另一为(μ,λ)选择。(μ+λ)选择是从μ个父代个体及λ个子代新个体中确定性地择优选出μ个个体组成下一代新群体。(μ,λ)选择是从λ个子代新个体中确定性地择优桃选μ个个体(要求λ>μ)组成下一代群体,每个个体只存活一代,随即被新个体顶替。粗略地看,似乎(μ+λ)选择最好,它可以保证最优个体存活,使群体的进化过程呈单调上升趋势。但是,深入分析后发现(μ+λ)选择具有下述缺点:进化策略的基本技术(1)(μ+λ)选择保留旧个体,它有时会是过时的可行解,妨碍算法向最优方向发展。(μ,λ)选择全部舍弃旧个体,使算法始终从新的基础上全方位进化。(2)(μ+λ)选择保留旧个体,有时是局部最优解,从而误导进化策略收敛于次优解而不是最优解。(μ,λ)选择舍弃旧的优良个体,容易进化至全局员优解。(3)(μ+λ)选择在保留旧个体的同时,也将进化参数σ保留下来,不利于进化策略中的自适应调整机制。(μ,λ)选择则恰恰相反,可促进这种自适应调整。实践也证明,(μ,λ)-ES优于(μ+λ)-ES,前者已成为当前进化策略的主流。进化策略的基本技术在(μ+λ)-ES中,为了控制群体的多样性和选择的力度,比值μ/λ是一个重要参数,它对算法的收敛速度有很大影响。一方面,μ不能太小,否则群体太单调(例如μ=1的极端情况);另一方面,μ也不能太大,否则计算工作量过大。通常,μ取15或更多一些。λ数值的大小,类似于μ的作用,也要适当。某些研究表明.比值μ/λ宜取1/7左右。也就是说,若μ=15,则λ宜取100。8.3进化规划进化规划(EvolutionaryProgramming)由Fogel在20世纪60年代所提出。Fogel将仿真进化方法用于由相互竞争的算法所构成的种群,在一系列研究中探索了进化规划的可能性,目的是发展人工智能。Fogel认为,智能行为需要有如下的复合能力:(1)预报它的环境;(2)把预报变成对于给定目标的适当响应。8.3进化规划标准进化规划进化规划用传统的十进制实数表达问题。在标准进化规划(StandardEP)中,个体的表达形式为:式中:xi——旧个体目标变量X的第i个分量,xi’——新个体目标变量X的第i个分量,f(X)——旧个体X的适应度;N(0,1)——针对第i分量发生的随机数,它服从标准正态分布。)1,0()('iiiNXfxx8.3进化规划•上式表明,新个体是在旧个体的基础上添加一个随机数,添加值的大小与个体的适应度有关:适应度大的个体添加值也大,反之亦然。•根据这种表达方式,进化规划首先产生μ个初始个体,这也就是突变。接着从μ个旧个体及μ个新个体(2μ个个体)中根据适应度挑选出μ个个体组成新群体。如此反复迭代,直至得到满意结果。•应该指出,进化规划没有重组或交换这类算子,它的进化主要依赖突变。在标准进化规划中这种突变十分简单,它只需参照个体适应度添加一个随机数。很明显,标准进化规划在进化过程中的自适应调整功能主要依靠适应度f(X)来实现。8.3进化规划StandardEP流程:1.生成初始群体;2.WhileNot-EndDo1)突变;2)计算个体适应度;3)选择;4)组成新群体3.EndWhile8.3进化规划元进化规划为了增加进化规划在进化过程中的自适应调整功能,人们在突变中添加方差的概念。类似于进化策略,在进化规划中个体的表达采用下述方式:式中:σi——旧个体第i分量的标准差;σi’——新个体第i分量的标准差;N(0,1)——针对第i分量发生的随机数,它服从标准正态分布。)1,0(')1,0('iiiiiiiiNNxx8.3进化规划从上式可以看出,新个体也是在旧个体的基础上添加一个随机数,该添加量取决于个体的方差,而方差在每次进化中又有自适应调整。这种进化方式已成为进化规划的主要手段,因此在进化规划前冠以“元”这个术语以表示它为基本方法。元进化规划(MetaEP)的突变尽管类似于进化策略,但是它们有下述差别:(1)执行顺序不同。进化规划中首先计算新个体的目标变量xi’,计算中沿用旧个