进化优化算法概述.docx
《进化优化算法概述.docx》由会员分享,可在线阅读,更多相关《进化优化算法概述.docx(13页珍藏版)》请在冰豆网上搜索。
![进化优化算法概述.docx](https://file1.bdocx.com/fileroot1/2023-7/25/26b99ecd-e09e-4ec0-a760-9371bb3f93ae/26b99ecd-e09e-4ec0-a760-9371bb3f93ae1.gif)
进化优化算法概述
第一章进化优化算法概述
1.1进化算法的一般框架
自1960年以来,进化算法已经发展出相当多的种类,但一般认为进化算法有5个基本组成部分[3]:
1.问题解的遗传表示。
2.种群的初始化方法。
3.根据个体适应度对其进行优劣判定的评价函数。
4.产生新的种群的进化算子
5.算法的参数取值
1.1.1进化优化算法解决对象的描述
进化算法主要是求解优化问题,其数学模型如下:
Maximizey=f(x)(1.1)
Subjecttog(x)=(
,…,
)
0(1.2)
其中x=(
,
,…,
)
X,x是决策向量,X是决策向量形成的决策空间;y是决策目标。
这是个最大化问题,对于最小化问题可以令
=C-f(x)转化为最大化问题,因此,它们在本质上是一致的。
根据优化函数f(x)是否连续可以将最优化问题分为二大类:
连续函数的最优化与离散函数的最优化。
后者也可以称为组合优化问题。
根据是否包含约束条件(1.2)可分为约束优化问题和无约束优化问题。
此外,若y是一个决策向量,则是一个多目标的优化问题,我们将在第二章进一步讨论。
1.1.2进化优化算法结构
进化算法的一般结构如图1.1所示,进化算法维持由一群个体组成的种群P(t)
(t为进化代数)。
每个个体代表问题的一个潜在解。
每个个体通过目标函数评价得到适应度并根据优胜劣汰的原则进行选择。
被选择的个体经历遗传操作产生新的个体,主要有两种遗传操作:
杂交是将多个个体的有关部分组合起来形成新的个体,变异是将一个个体改变而获得新的个体。
新产生的个体(子代)继续被评价优劣。
从父代种群和子代种群中选择比较优秀的个体形成新的种群。
在若干代后,算法收敛到一个最优个体,该个体很有可能代表问题的最优或次优解。
图1.1进化算法流程图
1.1.3进化算法几个环节的解释
遗传编码:
如何将问题的解编码成染色体是进化算法使用中的关键问题,目前的编码方式主要有二进制编码[4]、Gray编码、实数编码、字符编码等,对于更复杂的问题,用合适自然的数据结构来表示染色体的等位基因,可以有效抓住问题的本质,但总的来说,完整的遗传编码理论尚未建立,部分文献[5~7]的讨论都有都有一定的局限性。
繁殖算子:
模拟生物物种的繁衍过程和遗传变异机制,主要有两种算子:
交叉算子和变异算子,这主要考虑平衡算法的勘探(exploration)能力(勘探出新的解空间)和开发(exploitation)能力(积累所搜索的信息)[8~10],在最早的进化策略和进化规划两类进化算法中,并没有交叉算子。
已形成许多对包括各种交叉算子之间[11~18](单点、两点、多点、均匀、算术等)、各种变异算子之间[18~19](均匀、正态、非一致等)及交叉和变异算子之间[18~29]的选取原则,但这些原则主要还是基于经验或部分经验的,严格理论刻画还是较少。
选择算子:
对生物的优胜劣汰的模拟,已有文献[2]对选择算子进行科学的归类并指出了各自的优缺点。
1.2进化优化的研究动态
进化算法发展至今,已成为一门庞大的学科,一方面,进化算法在原来三个并行的框架下,对各自的进化参数(包括交叉、变异、选择、种群规模、自适应、收敛性、复杂度、进化机制等)进行深入研究;另一方面,进化算法框架下的三类算法积极吸收对方的方法,相互渗透,有一种融合的趋势;进化计算还吸收其它高性能计算的新成果、新思想(如与文化进化、神经网络、群智能、模糊计算、免疫计算、分子计算、量子计算等相结合),从而拓展了进化算法的内容,有些新算法甚至跳出原来三类算法的标准内容而成为与其并行的算法群。
但纵观这些进化算法的发展,可以发现它们在利用进化论思想和立足于主要解决优化问题这两个方面没有变,我们称之为进化优化算法,进化优化以遗传算法、进化策略、进化规划和优化理论为基础但不局限于此,积极吸收计算智能和仿生学的思想和理论成果,发展一系列高性能的优化算法。
由于进化优化的迅猛发展,要对其进行综述是一件困难的事,一些好的综述都是大致在20世纪九十年代左右发表的[8][12][21][31~35]。
在最近的几年,据作者所知,很少出现进化优化的综述,有些资深的研究者最近发表的综述性文章[36~38],也仅仅是对自己感兴趣的几个热点进行评述。
而国内期刊上发表的几篇的综述[39~41]则仅仅是对遗传算法或进化算法的简单介绍,基本上是国外20世纪90年代初的研究成果。
基于此,本节对最近特别是21世纪这几年进化优化的发展做一个述评,有时为了保持完整性会追溯到上世纪80,90年代的论文。
做这个评述的目的有二:
充分了解进化优化的发展情况;对进化优化的新思想和发展趋势做一个总结,形成改进进化优化算法的若干见解,以此来指导进化优化算法的创新。
1.2.1进化优化的新算法
基于进化算法在优化方面的强大优势和20世纪八九十年代良好的发展基础所形成的广阔交流学习研究平台(每年数十个关于进化计算的学术会议和包括《进化计算》和《IEEE进化计算学报》等有影响力的期刊,全球数十个有名的进化计算研究小组的网络共联并有公开的网络讨论社区和提供最新软件和研究成果),更重要的是进化现象和其它计算思想给我们提供无限的启发创新空间,近年来,新的进化优化算法层出不穷并受到不同程度的关注迅速成长起来。
在这里我们主要介绍有影响力的新算法,关于遗传算法、进化策略、进化规划和遗传编程的介绍,在一般的专著[2~3][19][26][31][42~43]和综述文章[8][12][21][31~41]中都能找到。
生物一个独特的性质就是它的智能性,而作为一种智能算法,向生物学习和模拟就成为很自然的方法,主要的仿生算法有:
人工免疫算法(artificialimmunealgorithms):
生物免疫系统是识别体内所有细胞,区分某一细胞是自身还是外界的,并对非自身细胞进一步分类以加强抵御
图1.2生物免疫系统示意图
的机制。
图1.2是SatoshiEndoh给出的示意图,当抗原入侵时,部分T细胞识别出是外来物,于是通知相应B细胞,B细胞开始分化、增殖,用B细胞表面的抗体与抗原结合,使抗原无害化,完成一次抵抗抗原入侵过程,最后免疫系统保留(记忆)一部分B细胞作为下一次抵抗同样抗原入侵的基础。
而人工免疫系统就是对生物免疫系统的模拟,有免疫记忆、自我识别、免疫多样性和并行分布式等特点。
目前的人工免疫优化算法主要有三类:
免疫遗传算法(immunegeneticalgorithm)[44~46],可看成是遗传算法的改进。
免疫网络算法(immunenetworkalgorithm)[48~49]将免疫系统看成网络结构,通过节点间的信息传递达到识别、响应、记忆等功能。
反向选择算法(negativeselectionalgorithm),该算法最初模拟生物免疫系统的T细胞用于计算机安全检测[50~52],Gonzalez将其修改[53],用于函数优化取得很好的效果。
微粒群算法(particleswarmoptimizationalgorithms):
微粒群算法是由J.Kennedy和R.C.Eberhart提出的新仿生算法[54~55],它模拟鸟群觅食场景:
鸟不知食物在哪,但知道食物离它有多远,所以最好的策略就是跟随离食物最近的那只鸟。
在微粒群算法中,决策向量对应觅食的鸟,也叫微粒,每个微粒都有适应度和飞行速度,微粒群就在最好微粒的带领下搜索问题空间找到最好的解。
因此,微粒群算法就是在下两个公式下的迭代:
(1.3)
(1.4)
其中
表示该微粒迄今为止找到的最好的解,
表示包括该微粒及其邻居迄今为止找到的最好的解,所以(1.3)式的第二项代表该个体的自学成分,第三项则表示个体向社会学习的成分。
微粒群算法中,有五个重要的参数:
,
,
,
,
.对这些参数的选取,许多学者做过这方面的研究[56~59],但并没有定论,而且选取的原则与问题的类型(约束问题、多目标问题、动态优化问题等)会有所不同。
标准的微粒群算法主要用于连续函数优化,对于离散函数的优化,算法要作适当的修改[60~61],主要要考虑微粒的速度的定义及离散变量的相邻原则。
微粒群算法已成功应用于约束优化、多目标优化、动态优化等许多领域,目前主要有以下问题急需解决:
理论分析微粒群算法的收敛性,更好离散化方案,微粒与智能体结合等。
蚂蚁算法(antoptimizationalgorithms):
蚁群寻找食物时会派出一些蚂蚁分头在四周游荡,如果一只蚂蚁找到食物,它就返回巢中通知同伴并沿途留下“信息素”(其多少与食物的数量和质量有关)作为蚁群前往食物所在地的标记,信息素会逐渐挥发,如果两只蚂蚁同时找到同一食物,又采取不同路线回到巢中,那么比较绕弯的一条路上信息素的气味会比较淡,蚁群将倾向于沿另一条更近的路线前往食物所在地。
受到蚂蚁觅食时的通信机制的启发,1991年,Dorigo在解决TSP问题时提出了蚂蚁算法[62],主要是下两个过程的迭代:
根据信息素模型产生新解(根据概率分布有偏好的抽样解空间),根据解的质量修改信息素(影响下一次抽样)。
根据解的产生和信息素的更新的方式不同,蚂蚁算法已衍生出许多新的算法:
蚁群算法[63]、最大最小蚁群系统[64]、排序蚁群系统[65]、最好最坏蚁群系统[66]等。
目前对蚁群算法的研究主要集中在[67~68]:
在算法中更好的加入启发式知识,与其它算法的结合,蚁群算法的收敛性,算法在连续函数中的应用等。
文化算法(culturealgorithms):
如图1.3(Reynolds提供)所示,文化算法有种群空间和信仰空间组成,在种群空间中可用各种群算法(如进化规划[69]、微粒
图1.3文化算法框架示意图
群[70]、差分进化[71]等算法)实现。
这两个空间通过由协议构成的函数通信:
首先,由目标函数obj()评价种群空间中的个体,然后,由accept()函数决定用哪些个体去信仰空间,去信仰空间后,这些精英个体通过update()更新信仰空间的知识或信仰,最后,信仰空间反过来用influence()影响种群空间的进化。
此外,最近提出的仿生算法如:
散布算法[72](scatteralgorithms)、模因算法[73](memeticalgorithms)、蛙跳算法[74](shuffledfrogleapingalgorithms)、蜜蜂算法[75](honeybeesearchalgorithms)、细菌算法[76](bacteriaoptimizationalgorithms)、侦探进化算法[77](scouting-inspiredevolutionaryalgorithm)等,都不同程度的模拟了自然生物现象,也值得关注。
最近二十年,学科的综合交叉成为学科发展的新方向,计算智能也在分解与交叉中发展,进化计算与其它智能计算渗透,相互补充也成为一种趋势,量子进化算法[78](quantumevolutionaryalgorithms),退火遗传算法[79](annealinggeneticalgorithms),禁忌进化算法[80](tabuevolutionaryalgorithms),模糊遗传算法[81](fuzzygeneticalgorithms)就是其中较成功的典型。
同时,研究者在原来三类进化算法的基础上推陈出新,发展了许多改进的进化算法,这些包括协同进化算法[82](co-evolutionaryalgorithms)、遗传编程[19](geneticprogramming)、微分进化算法[83](differentialevolutionaryalgorithms)、竞争遗传算法[38](competentgeneticalgorithms)、分布估计算法[84](estimationofdistributionalgorithms)、空间结构化进化算法[85](spatiallystructuredevolutionaryalgorithms)、微观遗传算法[86](microgeneticalgorithms)、分支遗传算法[87](forkinggeneticalgorithms)等。
这些算法有的结构完美,有的抽样合理,有的更符合进化特征,都很好的实现了算法的智能性、启发性、种群多样性、自适应等特征。
1.2.2进化优化算法的应用
进化算法在优化方面各种优点吸引各行各业的研究者加盟,不断拓展进化优化的领域,在许多领域应用非常成功。
从数学模型的角度看,进化优化主要应用于:
多目标优化(multiobjectiveoptimization):
多目标优化的目的是求得Pareto最优解集,以供决策者选择,由于进化算法是同时进化一组解(种群),这样运行一次就能找到一组最优解集,而且通过适当的技术还可以使其分布良好,因此进化算法似乎十分适合多目标优化。
关于多目标优化将在第四章进一步介绍。
组合优化(combinatorialoptimization):
随着问题规模的增大,问题的搜索空间也急剧增大,因此很多组合优化问题都是NP完全或NP难的问题,而这些问题在经典方法中是不能解决的,而进化算法通过与启发式结合,能在有限的时间内找到满意解,现在有大量的文献用进化算法解决TSP问题、装箱问题、背包问题、指派问题、着色问题等。
约束优化[88~89](constraintoptimization):
进化算法最初是处理非约束优化的,但是,通过一定的处理,进化算法在约束优化上同样也是相当成功的,现在处理的方式主要有:
特殊编码和算子、罚函数法、修复不可行解、约束条件目标化等方法。
非确定性环境优化[90~91](optimizationinuncertainenvironment):
非确定性环境包括适应度函数评估带有噪声、决策变量受到扰动、适应度函数用简单函数来逼近所带来的误差、适应度函数是时变的等,对于这四种情况,建立不同的模型进行补偿,也可以克服这些非确定因素。
从社会自然科学角度看,进化优化除了在常见领域如人工智能、自动控制、机械制造、工程设计、经济非常成功外,最近在艺术、社会组织等方面的尝试也取得一定的成果。
1.2.3进化优化的理论研究动态
与大量的进化优化的新算法设计和应用相比,进化优化的理论研究显然是比较单薄而滞后的。
理论研究可以分为两个层面,一个层面是在一个大的框架下研究进化计算的优化机制;另一个层面是研究某一具体进化算法的优化特性。
但不管在哪个层面内,类似于搜索算法理论研究[92],进化优化的理论研究都要关注下列问题。
全局收敛性(globalconvergence):
如果优化问题有最优解,进化算法能否保证能找到并提供一个最优解。
由于进化算法是一种随机算法,当不能保证时,还必须研究进化算法能以多大概率的找到最优解。
时间复杂度(timecomplexity):
进化算法要多长时间找到一个最优解。
空间复杂度(spacecomplexity):
进化算法在运行时要占用多少内存。
搜索最优性(searchoptimal)[43]:
在进化算法的参数及策略空间中,某一特定参数和策略的进化算法所用的资源(比如时间和空间)最少。
种群进化机制(populationevolutionarydynamics):
进化算法如何通过种群的变化(尤其是基因的分布变化)提高种群的平均适应度和最好适应度以及这些动力学行为的局限性。
1.2.3.1进化计算的理论研究模型
根据数学分析的特点,分析问题首先必须对问题进行建模[94]。
进化计算的模型主要有以下几种(不完全统计):
模式理论(schematheory):
模式理论主要用于遗传算法的理论研究[3][31],主要由模式定理和建筑块假说两个部分组成。
模式定理有较严格的证明,它说明了在繁殖算子和选择算子的作用下,具有低阶、短定义长度以及平均适应度高于种群平均适应度的模式在后代中将以指数级增长。
建筑块假说则是基于对自然的观察而提出的一种假说,并没有得到证明,它认为低阶、短定义长度以及高平均适应度的模式在进化算子的作用下,能生成高阶、长定义长度以及高平均适应度的模式,最终生成全局最优解。
对模式理论的批评主要有以下几点[95~99]:
模式定理是一个不等式,只刻画了模式在下一代生存的概率的下界,不足于准确描述种群进化的动力学行为,成立的条件苛刻,仅适用一部分遗传算法;建筑块假说隐含的假定优化问题在一定程度上是可分的,而事实上存在一些欺骗函数;隐含并行性的证明存在严重的漏洞。
最近的研究对模式定理进行了一定的改进:
Stephens[100~101]提出有效适应度的概念,将模式定理从不等式改为等式,而修改的建筑块假说(高适应度的模式可由高适应度的亚模式建构生成)也很自然的成为模式定理的推理,从而能较准确的刻画种群的进化行为,但同时也指出:
总体看来,算法对低阶、短距的模式并没有偏好,高阶、长距的模式同样可能被破坏成低阶、短距模式,这要看建构和破坏谁占优势。
Goldberg[102~103]将模式定理一般化,对常用的进化算子都成立;指出仅模式定理不足以保证遗传算法成功搜索,并从建筑块角度提出遗传算法成功优化的六个条件,对其中两个重要条件(能提供足够多的解决给定问题的建筑块、让好的建筑块随进化递增)进行了详细的阐述。
Poli[104]提出总体转移概率的概念,考虑了模式的生存率,破坏率和生成率,也可以把模式定理从不等式改为等式,结合Stephens修改的模式定理,论证了模式定理在适应度有扰动时仍然成立。
Poli等[105~108]还对模式理论用于理论分析遗传编程进行了深入的研究。
马尔可夫链模型(Markovchainmodel):
既然进化种群仅与前一代种群以概率方式相关,马氏链显然能很好的描述种群的进化行为。
这方面的研究可大致分三种模型:
转移概率矩阵模型[109~111],用C,M,S三个概率矩阵表示交叉、变异和选择的作用,分析进化算法的极限行为(种群规模无限大或进化时间无限长时的收敛性、遍历性等),但由于转移矩阵太大、转移概率的具体形式很难表达,妨碍了对进化算法的有限种群规模和有限进化时间的研究。
Vose-Liepins模型(随机泛函分析模型)[112~115],种群的状态由一概率向量表示,概率向量的维数为所有可能个体的数目,第i个分量表示第i个在种群的个数比例(相对频率),若种群是无穷大,则用概率分布表示。
在假设种群规模无穷大时,可以导出概率向量的进化迭代方程,通过研究迭代方程的不动点和稳定性,可描述进化算法的极限行为,这个模型的缺点是对有限规模种群的解释较差。
Cerf扰动模型(广义退火模型)[116~122],将遗传算法看成一种特殊形式的广义模拟退火模型,利用动力系统的随机扰动理论,对遗传算法的收敛性和收敛速度进行研究,这个模型的缺点是由于把变异率看成退火温度,在每个固定退火温度,种群的进化被看成是无限的随机过程,这显然没有充分利用进化特点,而且要求变异率最终降为零,这些缺点使得这种模型仅适用有限的几种进化算法。
次序统计学模型(orderstatisticsmodel)[123~132]:
这种模型最初用于进化策略(近考虑变异和选择两种算子)的理论研究,把变异后的个体看成是对父代周围空间抽样的样本,利用排位统计学理论导出最佳个体与最优解的距离的抽样分布和父代与最优解的距离的抽样分布的关系,进而求得进步率(progressrate),从而能很容易的分析进化算法的收敛速度,之后研究了将这种模型用于有重组算子的进化算法,这样得出的结论对遗传算法和进化规划也适用。
这种算法的主要难点是求解前后代的抽样分布关系与适应度函数的关系,当适应度函数为球函数(相对最优点)能很容易的得出,最近的研究集中在有一维不是球对称的屋脊适应度函数[128~129]、动态噪声适应度函数[131]及对自适应模型的理论解释[132],甚至对连续和离散适应度函数都做了统一的分析[130],所有这些工作对进化优化的理解、教学和算法设计都有实际的意义。
维数分析模型(Dimensionalanalysismodel)[133~135]:
该模型把变异率、重组率、选择压、种群规模、编码长度等看成是进化系统的特征向量,将这些特征向量与要研究的算法特性,比如占领时间(takeovertime)、混合时间(mixingtime),建立函数关系(用猜想的方式或解析的方式),然后通过实验模拟证实这种关系,建立的函数关系可以引导理论家去做进一步的理论解释和证明,同时对进化算法的设计也有重要的指导作用,特别是对有普遍争议的重组算子。
正交函数分析模型(Orthogonalfunctionsanalysismodel)[136~139]:
根据编码情况对适应度函数进行正交分解(比如Fourier,Walsh,和Haar函数分解),分析模式的正交分解系数的变化情况,判断遗传编码是否满足建筑块假说,进而可以判定该函数对进化算法的难易程度。
这种方法的缺点是要精确判定时计算量太大。
公理化随机过程模型(axiomaticstatisticsprocessmodel)[2][140~142]:
把众多类型的进化算法概括成抽象进化算法,把种群的进化看成是抽象随机过程且进化过程由选择算子和进化算子(注:
作者认为改为繁殖算子更贴切,进化算子应该包括选择算子)组成。
定义进化算子的本质特征数,如选择压、选择强度、进化吸收率、散射率、保持率,此外如果研究某一特定的进化算法,还可以定义特有的特征数,最后应用进化算子特征数刻画算法的各种收敛性态,如在特征数满足适当条件下,算法产生的随机种群列以概率1收敛到全局最优解集,并可以准确的分析具体进化算法的收敛性,这种分析方法的优点是直观且适用范围广,能产生直接指导应用的进化参数设置策略,缺点是对连续型的进化算法,计算对应的进化算子特征数比较困难。
进化图灵机模型(evolutionaryTuringmachinemodel)[93][143~147]:
据作者所知,这种模型是迄今为止理论上最完善的模型,得到包括DavidFogel,ZbyszekMichalewicz等资深研究者的赞赏。
在数学和人工智能基础上阐述优化算法解决问题的能力标准,提出一个能够概括一般进化算法和包括蚁群算法、微粒群算法和人工免疫算法等新出现的进化算法的高度抽象的算法模型,澄清了一些容易忽略的问题,这些问题包括进化算法是否一定要群智能、随机的、算法的,进化算法是否是所有算法的一个子集?
是否一定要有明确的适应度函数?
…等等,正式提出了进化图灵机(EvolutionaryTuringMachine)和进化图灵机全体(UniversalEvolutionaryTuringMachine)。
在这个统一模型下,研究了进化算法的收敛性、收敛率和最优性,提出并证明了进化算法是完全的充分条件。
在UETM空间中,把算法所找的解最优(optimal)和算法在算法族中搜索最优(searchoptimal)作为一个多目标问题,考察算法的总体最优性,这样可以同时优化解的质量和搜索费用,就为进化难解问题(intractabilityofevolutionarysearch)提供自动处理的方法,同时也可以对进化计算难解的和进化计算易解的问题更科学的分类。
在表达能力(expressiveness)方面,探讨了进化图灵机比图灵机更有表达力,能解决图灵机不能解决的问题,因此传统的计算机科学可以在进化图灵机的基础上建立,进化图灵机能够解决图灵机不能解决的图灵机停机问题,能渐进解决最优进化算法问题——不存在最优的进化算法,但可以通过进化技术不断改进进化算法。