在现实生活中许多重要问题都涉及从众多方案中选取一个最佳方案,在不改变现有条件的情况下,进一步提高生产效率,这样的问题可以归结为优化问题。随着科学技术的进步和生产经营的发展,优化问题几乎遍布了人类生产和生活的各个方面,成为现代科学的重要理论基础和不可缺少的方法,被广泛地应用到各个领域,发挥着越来越重要的作用,对优化问题的研究具有十分重要的意义。
长期以来,人们不断地探讨和研究优化方法,希望找到高效且系统的寻优方案,早在17世纪的欧洲就有人提出了求解最大值最小值的问题,并给出了一些求解法则,但是没有形成系统的理论。传统的优化算法,如线性规划、非线性规划、整数规划和动态规划等算法,这些算法复杂度较大,一般只适用于求解小规模问题,往往不适合在实际工程中应用。随着生物技术的不断发展,人们尝试着从生物学角度出发,解决一些复杂的优化问题。20世纪50年代中期人们摆脱了一些经典数学规划方法的束缚,从生物进化的激励中受到启发,创立了仿生学,提出采用模拟人、自然及其他生物种群的结构特点、进化规律、思维结构、觅食过程的行为方式,按照自然机理方式,直观构造计算模型,解决优化问题。
随着对生物学的深入研究,人们逐渐发现自然界中个体的行为简单、能力非常有限,但当它们一起协同工作时,表现出并不是简单的个体能力的叠加,而是非常复杂的行为特征。例如,蜂群能够协同工作,完成诸如采蜜、御敌等任务;在个体能力有限的蚂蚁组成蚁群时,能够完成觅食、筑巢等复杂行为;鸟群在没有集中控制的情况下能够很好地协同飞行。1999年,Bonabeau,Dorigo和Theraulaz在《Swarm Intelligence:From Natural to Artificial Systems》中对群体智能进行了详细的论述和分析,给出了群体智能的一种不严格定义:任何一种由昆虫群体或其他动物社会行为机制而激发设计出的算法,或分布式解决问题的策略,均属于群体智能。在后来的研究中,群体智能中的群被详细阐述为“一组相互之间可以进行直接或间接通信的主体”。群体智能则是指“无智能或简单智能的主体通过任何形式的聚集协作而表现出智能行为的特性”,它是一组简单的智能体集体智能的涌现。群体智能优化算法在没有集中控制并且不提供全局模型的前提下,利用群体的优势,分布搜索,这种方法一般能够比传统的优化方法更快地发现复杂优化问题的最优解,为寻找复杂问题的最佳方案提供了新的思路和新方法。
一直以来,人类从大自然中不断得到启迪,通过发现自然界中的一些规律,或模仿其他生物的行为模式,从而获得灵感解决各种问题。仿生智能优化算法大多以模仿自然界中不同生物种群的群体体现出来的社会分工和协同合作机制为目标,而非生物的个体行为,属于群体智能的范畴,因而也被广泛称为群体智能优化算法。群体智能优化算法的基本思想是用分布搜索优化空间中的点来模拟自然界中的个体,用个体的进化或觅食过程类比为随机搜索最优解的过程,用求解问题的目标函数度量个体对于环境的适应能力,根据适应能力采取优胜劣汰的选择机制类比为用好的可行解代替差的可行解,将整个群体逐步向最优解靠近的过程类比为迭代的随机搜索过程。以下为几种常用的群体智能优化算法,在优化领域这些算法称为仿生智能优化算法,它们为采用传统的优化算法难以处理的问题提供了切实可行的解决方案。
(1)进化算法(Evolutionary Algorithm,EA)
进化算法是通过模拟自然界中生物基因遗传、种群进化的过程和机制,而产生的一种群体导向随机搜索技术和方法。它的基本思想来源于达尔文的生物进化学说,即认为生物进化的主要原因是基因的遗传与突变,以及“优胜劣汰、适者生存”的生存竞争机制。进化算法基于其发展历史,有4个重要的分支:遗传算法(Genetic Algorithms,GA),进化规划(Evolution Programming,EP),进化策略(Evolution Strategy,ES)和差分进化(Differential Evolution,DE)。进化算法在搜索过程中能够自动获取和积累有关搜索空间的知识,并能利用问题固有的知识来缩小搜索空间,自适应地控制搜索过程,动态有效地降低问题的复杂度,从而求得原问题的真正最优解或满意解。进化算法具有适于高度并行及自组织、自适应、自学习和“复杂无关性”等特征,因而有效地克服了传统方法在解决复杂问题时的障碍和困难。另外,由于进化算法效率高、易于操作、简单通用,广泛应用于各种不同的领域中。
(2)人工免疫算法(Artificial Immune Algorithm,AIA)
在人工智能不断向生物智能学习的过程中,人们逐渐意识到生物免疫能力的重要性,并对其进行了一定的研究。人工免疫算法是受生物免疫系统启发,在原有进化算法理论框架的基础上引入免疫机制,模仿自然免疫系统功能而形成的一个新的进化理论。生物免疫系统是通过从不同种类的抗体中构造一个自己—非己的非线性自适应网络系统,在处理动态变化的环境中发挥作用,是一个分布式的自适应动态平衡系统,具有学习、记忆和识别的功能。人工免疫算法充分利用优秀抗体或免疫疫苗含有解决问题的关键信息,把群体的进化建立在适应度较高的可行解基础上,变盲目地产生子代个体为有指导地产生子代个体,一旦某些抗体达到一定的亲和力,人工免疫算法会启动记忆功能和克隆功能,通过免疫细胞的分裂和进化作用,产生大量的抗体来抵御各种抗原,产生多样性,当有新的抗原入侵或某些抗体大量复制而破坏免疫平衡时,通过免疫系统的调节,抑制浓度过高或相近抗体的再生能力,并实施精细进化达到重新平衡,具有自我调节能力。抗体的多样性与进化算法在解决实际问题时产生的可行解多样性是相对应的,可保证算法具有全局搜索能力,避免未成熟收敛到局部最优。利用抗体的自我调节能力可动态调节进化算法求解实际问题时的局部搜索能力。免疫记忆功能促使进化算法做到最优个体适应度一直处于最优状态,不会出现退化的现象,从而逐渐收敛到实际问题的最优解。
(3)Memetic算法(Memetic Algorithm,MA)
Memetic算法是一种结合遗传算法和局部搜索策略的新型智能算法,因此很多人又将Memetic算法称为混合遗传算法、遗传局部优化等。1976年,英国科学家Dawkins在《The Selfish Gene》中首次提出了模因(Meme)的概念。它是仿照基因(Gene)一词的拼写,代表的是一个文化传播或模拟单位,是人们交流传播的信息单元。Memetic算法提出的是一种框架,通过与局部优化策略的结合,局部调整进化后产生的新个体,强化了算法的局部搜索能力。采用不同的搜索策略可以构成不同的Memtic算法,如全局搜索可以采用遗传算法、进化规划、进化策略等,局部搜索策略可以采用模拟退火、爬山算法、禁忌搜索等。对于不同的问题,可以灵活地构建适合该问题的Memetic算法。Memetic算法采用的这种全局搜索和局部搜索相结合的机制使得其搜索效率在某些问题领域比传统的遗传算法快几个数量级,显示出了较高的寻优效率,并被尝试应用于求解各种经典的优化问题及各类工程优化问题。
(4)粒子群算法(Particle Swarm Optimization,PSO)
粒子群算法是一种有效的全局寻优算法,最早由美国的Kenedy和Eberhart于1995年提出,设想模拟鸟群觅食的过程,后来从这种模型中得到启示,并将粒子群算法用于解决优化问题。粒子群算法是基于群体智能理论的优化算法,通过群体中粒子间的合作与竞争,实现复杂空间中最优解的搜索,具有进化计算和群智能的特点。与传统的进化算法相比,粒子群算法保留了基于种群的全局搜索策略,但其采用速度—位移模型,操作简单,避免了复杂的遗传操作,具有记忆全局最优解和个体自身所经历的最优解功能,能够动态跟踪当前的搜索情况,调整搜索策略。由于每代种群中的个体具有“自我”学习和向“他人”学习的双重提高的优点,从而能在较少的迭代次数内找到最优解。粒子群算法目前已广泛应用于函数优化、数据挖掘、神经网络训练等应用领域。
(5)混合蛙跳算法(Shuffled Frog Leaping Algorithm,SFLA)
混合蛙跳算法通过模拟现实自然环境中青蛙群体在觅食过程中所体现出的协同合作和信息交互行为,来完成对问题的求解过程,是一种全新的启发式群体智能进化算法。现实生活中的一群青蛙生活在池塘中,整个蛙群被分为不同的子群体,并且分布着许多的石头,每只青蛙都具有自己对食物源远近的判断能力,并且为了靠近目标而努力。通过在不同的石头间跳跃去寻找食物较多的地方,提高自己寻找食物的能力,而青蛙个体之间通过思想的交流与共享实现信息的交互。混合蛙跳算法采用模因分组算法,模拟青蛙的聚群行为,通过分群与重组实现青蛙的跳跃,采用类似于粒子群算法中的速度—位移模型,实现个体之间的信息共享和交流机制,进行启发式搜索,从而找到最优解。该算法具有高效的并行计算性能和优良的全局搜索能力,由Eusuff和Lansey在2003年首次提出,并用来成功解决管道网络扩充中的管道尺寸最小化问题。关于蛙跳算法的研究目前还比较少,近年来国内外一些学者提出将混合蛙跳算法用于多进程控制的优化调整、全局优化、旅行商问题、连续优化问题和模糊控制器设计等。
(6)猫群算法(Cat Swarm Optimization,CSO)
猫群算法是模拟在日常生活中猫的行为动作而产生的一种群体智能算法,由台湾人Shu-Chuan Chu最早提出。日常生活中,猫总是非常懒散地躺在某处不动,经常花费大量的时间处在一种休息、张望的状态。即使在这种情况下,它们也保持高度的警惕性,它们对于活动的目标具有强烈的好奇心,一旦发现目标便进行跟踪,并且能够迅速地捕获到猎物。猫群算法将猫的行为分为两种模式,一种是搜寻模式,此时猫处于懒散、环顾四周的搜索状态;另一种是跟踪模式,此时的猫向着全局最优解逼近,类似于粒子群算法,利用全局最优解的位置来优化当前的位置。为了更好地模仿现实世界中猫的行为,处于跟踪状态的猫的数量少于处于搜索模式的猫的数量,之后采用类似于混合蛙跳算法进行重新分组。
(7)细菌觅食算法(Bacterial Foraging Optimization,BFO)
细菌觅食算法是K.M.Passino于2002年提出的一种新型仿生类群体智能算法,该算法模仿大肠杆菌在人体肠道内搜寻食物的行为过程中表现出来的群体竞争协作机制。在寻找可能存在的食物源区域,通过先验知识判断是否进入该区域;一旦进入觅食区域,在消耗掉一定量的食物后,或者觅食区域环境变得恶劣,造成不适合生存的条件出现后,细菌死亡,或者迁移到另一个适合的觅食区域。细菌觅食算法依靠自身特有的趋化、复制、迁徙三种行为,进行细菌个体位置的更新和群体最优位置的搜索,进而实现种群的进化。该算法具有群体智能算法并行搜索、易跳出局部极小值等优点,被广泛应用于电气工程与控制、滤波器控制、人工神经网络训练及各种群智能识别等方面,已成为生物启发式计算研究领域的又一热点。
(8)人工鱼群算法(Artificial Fish School Algorithm,AFSA)
人工鱼群算法是浙江大学的李晓磊博士于2002年基于现实环境中的鱼群觅食行为首次提出的一种新型的仿生类群体智能全局寻优算法。人工鱼群算法主要模拟鱼群在觅食过程中表现出来的觅食、聚群和追尾三种行为基础,从构造单条鱼的底层行为做起,通过鱼群中各个个体的局部寻优、个体之间的协作使群体达到最优选择的目的,从而达到群体全局寻优的目的。算法实现的重点是人工鱼模型的建立和个体人工鱼行为的描述和实现,采用了自下而上的设计思想,开发人工鱼群的觅食、聚群和追尾三种算子,构造个体的底层行为。每条人工鱼个体选择执行一种行为算子,探索它当前所处的环境,通过不断调整自己的位置,最终集结在食物密度较大的区域周围,即取得全局极值。人工鱼群算法具有良好的求取全局极值的能力,并具有对初值参数选择不敏感、鲁棒性强、简单易实现等优点。目前,人工鱼群算法已经在神经网络、模式识别、参数估计辨识方法等诸多方面得到了应用,并与其他算法相结合,在解决组合优化问题上得到了社会广泛的认可。
(9)蚁群算法(Ant Colony Algorithm,ACA)
蚁群算法受到自然界中真实蚂蚁群集体在觅食过程中行为的启发,利用真实蚁群通过个体间的信息传递、搜索从蚁穴到食物间的最短路径的集体寻优特征,来解决一些离散系统优化中的困难问题。该算法源于意大利学者M.Dorigo等人于1991年首先提出的一种基于种群寻优的启发式搜索算法。经过观察发现,蚂蚁在寻找食物的过程中,会在它们所经过的路径上留下一种被称为信息素的化学物质,信息素能够沉积在路径上,并且随着时间逐步挥发。在蚂蚁的觅食过程中,同一蚁群中的其他蚂蚁能够感知到这种物质的存在及其强度,后续的蚂蚁会根据信息素浓度的高低来选择自己的行动方向,蚂蚁总会倾向于向信息素浓度高的方向行进,而蚂蚁在行进过程中留下的信息素又会对原有的信息素浓度进行加强,因此,经过蚂蚁越多的路径上信息素浓度就会越强,而后续的蚂蚁选择该路径的可能性也就越大。通常在单位时间内,越短的路径会被越多的蚂蚁所访问,该路径上信息素的强度也越来越强,因此,后续的蚂蚁选择该短路径的概率也就越大。经过一段时间的搜索后,所有的蚂蚁都将选择这条最短的路径。也就是说,当蚁巢与食物之间存在多条路径时,整个蚁群能够通过搜索每只个体蚂蚁留下的信息素痕迹,寻找到蚁巢和食物之间的最短路径。目前,该算法已被用于求解NP难度的旅行商问题(Traveling Salesman Problem,TSP)的最优解答,以及指派问题和调度问题等,取得了较好的实验结果。虽然研究时间不长,但是目前的研究表明蚁群算法在求解复杂优化问题,特别是离散优化问题时有一定的优势,蚁群算法是一种很有发展前景的优化算法。
(10)人工蜂群算法(Artificial Bee Colony Algorithm,ABCA)
蜜蜂是一种群居昆虫,单个蜜蜂的行为极其简单,但是由单个简单的个体组成的群体却表现出极其复杂的行为。现实生活中的蜜蜂能够在任何环境下,以极高的效率获得食物;同时它们能够适应环境的改变。在蜂群算法中,蜜源的位置代表了所求优化问题的可行解,蜜源的丰富程度表示可行解的质量。将当前蜜源的位置看做引领蜂找到的蜜源,在舞蹈区将蜜源的信息与跟随蜂共享,根据贪婪原则,吸引不同数量的跟随蜂。跟随蜂对蜜源邻域搜索,若没有找到更好的解,此时引领蜂变成侦察蜂,并且由侦察蜂随机在解空间中产生一个新的蜜源来代替原来的蜜源。Seeley于1995年最先提出了蜂群的自组织模拟模型,在该模型中,蜜蜂以“摆尾舞”、气味等多种方式在群体中进行信息的交流,使得整个群体可以完成诸如喂养、采蜜、筑巢等多种工作。Karaboga于2005年将蜂群算法成功地应用于函数的数值优化问题。Basturk等人在2006年又进一步将人工蜂群算法理论应用到限制性数值优化问题上,并且取得了比较好的测试成果。
目前已经开发的群体智能优化算法有进化计算、人工免疫算法、粒子群算法、蚁群算法、蛙跳算法、人工鱼群算法、猫群算法、蜂群算法、细菌觅食算法、Memetic算法、量子进化计算等。这些算法依据对生物模仿着眼点的不同,可分为两类:仿生过程算法和仿生行为算法。
(1)仿生过程算法
仿生过程算法是以模仿生物种群进化发展的过程而形成的一类仿生智能算法。
模仿生物进化过程的基本流程是:
种群初始化(随机分布个体)→交叉、重组、变异(更新个体)→适应度计算(评价个体)→选择(群体更新)。
生物种群通过每一代之间的遗传物质传递,构成生物进化的基础,保持优良基因和性状的稳定性;通过基因的突变,维持种群的多样性,通过优胜劣汰的选择竞争机制确保种群的进化向最优解移动。这种进化机制体现了随机搜索最优解的一般过程。
仿生过程算法以遗传算法为基础,在此基础上发展了进化规划算法、进化策略及差分进化算法,从而形成了进化计算的体系。在进化算法理论框架的基础上引入了生物免疫机制,仿造生物免疫系统在进化过程中形成的能够保护自身免受异物侵袭,维持机体环境平衡所具有的能力,而形成一个新的人工免疫算法。微观世界的微观粒子具有波粒二象性、叠加性、纠缠性等量子相干特性,将微观粒子的量子态特性引入进化计算理论框架中,形成一种崭新的量子进化算法。
(2)仿生行为算法
仿生行为算法着眼于自然界中不同生物在漫长的进化中逐渐形成的特有的社会行为模式和协同合作机制,是仿生算法中最主要也是最庞大的一类。在现有的仿生行为算法中,大多是学者们模仿不同生物种群在觅食过程中呈现的行为模式,而开发的新算法。本书中所介绍算法大多属于这一类,如粒子群算法、人工鱼群算法、混合蛙跳算法、蜂群算法、猫群算法、蚁群算法、细菌觅食算法。这些算法的共同特点是,种群内部的个体通过各自特有的行为模式和协作机制,指导个体的位置移动,从而趋向食物源附近觅食,即找到优化问题的最优解。而这些算法各自的特色在于不同的搜索方式,例如:粒子群算法模仿自然界中鸟群的觅食方式,依据速度—位移公式,实现搜索位置的更新;人工鱼群算法中每条鱼都尝试三种搜索机制,即觅食行为、追尾行为、聚群行为,实现位置更新;蜂群算法通过蜜蜂职能的划分(引领蜂、跟随蜂、侦察蜂),实现不同的位置更新方式。它们依靠群体的随机分布搜索机制完成对解空间的全局搜索,个体受到全局最优解或局部最优解的吸引而产生位移,完成局部搜索。
这两类算法普遍具有较强的搜索能力,可比传统的优化方法更快地发现复杂优化问题的最优解,同时能够较好地跳出局部最优解,因此在优化问题的求解和其他领域得到了广泛的应用。
群体智能优化算法的仿生计算一般由初始化种群、个体更新和群体更新三个过程完成。下面分别介绍这三个过程的仿生计算机制。
在任何一种群体智能算法中,都包含种群的初始化。种群的初始化是对所求优化问题的解空间进行分布操作,产生若干个个体,人为地认为这些群体中的每一个个体为所求问题的解。因此,一般需要对所求问题的解空间进行编码操作,将具体的实际问题以某种解的形式给出,便于对问题的描述和求解。对于初始化种群的产生通常有两种方式:一种是完全随机产生的方法,另一种是结合先验知识产生初始种群。在没有任何先验知识的情况下往往采用第一种方式,而第二种方式可以使得算法较快地收敛到最优解。种群的初始化主要包括问题解形式的确定、算法参数的选取、评估函数的确定等。
(1)问题解形式的确定
对于任何一类优化问题,在应用群体智能算法求解之前都需要对问题的解空间进行编码操作,将具体问题以一定的形式给出。不同的群体智能算法所对应的问题解的形式有所不同,在传统进化计算算法中,问题的解通常是以染色体的形式给出;粒子群算法中,问题的解是用粒子所经历的位置来表示;而在蜂群算法中,往往是通过蜜源来代表所求优化问题的可行解。对于各种解形式的编码方式一般有二进制编码、十进制编码、浮点数编码等,根据具体问题选择合适的编码方式可以加快算法的收敛速度。
(2)算法参数的选取
合理选取算法的参数对于算法的求解有着重要的作用,好的参数值能够提高算法的准确性。在群体智能算法中,有关算法参数的选取,最为关键的就是种群的规模和算法终止条件中关于最大迭代次数的确定。对于种群的规模也需要根据具体问题来确定,规模过大,将会增加算法的时间复杂度,降低算法的效率;规模过小,又不容易使算法找到最优解,很容易使算法出现“早熟”现象。对于算法的最大迭代次数,需要根据多次实验来指导确定,合理地选取最大迭代次数才可使算法收敛到全局最优解,并且提高执行效率。
不同的群体智能算法对应不同的控制参数。在传统进化计算算法中主要的控制参数还有交叉概率、变异概率,交叉概率用来控制两个个体之间信息的交互能力,变异概率用来控制产生新个体的能力,两种操作都增加了解的多样性。在传统遗传算法中,适应度值高的个体在一代中被选择的概率高,相应的浓度高;适应度值低的个体在一代中被选择的概率低,相应的浓度低,没有自我调节功能。而在免疫遗传算法中,除了抗体的适应度,还引入了免疫平衡算子,参与到抗体的选择中。免疫平衡算子对浓度高的抗体进行抑制,反之,对浓度较低的抗体进行促进。根据抗体的适应度和浓度确定选择概率,它们的比例系数决定了适应度与浓度的作用大小。
粒子群算法中的主要参数为惯性权重、速度调节参数,惯性权重使得粒子保持运动惯性,速度调节参数表示粒子向自身最优和全局最优位置的加速项权重。在蚁群算法中,以前蚂蚁所留下的信息将会逐渐消失,比较重要的参数有信息素挥发系数,它直接影响算法的全局搜索能力及收敛速度。
猫群算法中的主要参数有分组率、记忆池大小、个体上每个基因的改变范围,由于自然界中的猫总是非常懒散,经常花费大量的时间处在一种休息、张望的状态,称之为搜寻模式,一旦发现目标便进行跟踪,并且能够迅速地捕获到猎物,称之为跟踪模式,分组率控制了仿照真实世界中猫的行为模式。在蜂群算法中,为了保证蜜源的质量,将对蜜源的开采次数进行限制,开采次数过少不利于进行深入的局部搜索,开采次数过多容易造成蜜源枯竭,不利于跳出局部最优解。混合蛙跳算法采用模因分组算法模拟青蛙的聚群行为,模因组参数控制青蛙群体分成若干个小群体的数量。人工鱼群算法中的参数包含尝试次数、感知范围、步长、拥挤度因子、人工鱼群数目等。细菌觅食算法中,趋化、繁殖、迁徙三种算子决定了算法的性能。相比其他算法,细菌觅食算法需要调节的参数较多,包括种群大小、前进步长、最大前进次数、趋化算子次数、繁殖算子次数、迁徙算子次数、迁徙概率,细菌觅食算法的优化能力和收敛速度与这些参数值的选择紧密相关。
在群体智能算法中,这些参数的选取都是在算法开始执行之前设定的,对于算法的性能和效率有很大的影响,如果参数选取不当,会使得算法的适应性变差甚至影响算法的整体性能。如变异概率,如果取值太小就没有个体的更新机会,不容易产生新解;如果取值太大,容易造成个体发散。实践证明,没有绝对的最优参数,针对不同的问题只有通过反复试验,才能选取较合适的参数,获得更好的收敛性能。
(3)评估函数的确定
在所有的群体智能算法中,对于所求得的问题的解,都需要进行评价,可以帮助群体在迭代过程中选择出优良个体并且及早地剔除较差个体,搜索出问题的最优解。在群体智能算法中,一般用适应度来评价个体(即问题的解)的好坏。对于适应度函数的确定,需要根据不同的问题进行设定。例如,在解决函数优化问题中,一般将目标函数直接作为适应度函数,通过求得它的值作为个体评价的标准;在手写数字识别问题中,用待识别数字与模板数字特征距离的倒数作为评估函数,此值越小说明特征越接近,其评价函数也就越高。
合理地选取评估函数对于算法的求解有着重要的作用,好的评估函数不但提高了评价的准确性,而且还会降低算法的时间复杂度,提高算法的执行效率。
个体的更新是群体智能算法中的关键一步,是群体质量提高的驱动力。在自然界中,个体的能力非常有限,行为也比较简单,但是当多个简单的个体组合成一个群体之后,将会有非常强大的功能,能够完成许多复杂的工作。如蚁群能够完成筑巢、觅食,蜂群能高效地完成采蜜、喂养、保卫,鱼群能够快速地寻找食物、躲避攻击等。
群体智能算法中,采用简单的编码技术来表示一个个体所具有的复杂结构,在寻优搜索过程中,对一群用编码表示的个体进行简单的操作,本书将这些操作称为“算子”,对不同的群体智能算法仿生构造了不同的算子,个体依靠这些算子实现更新。如进化算法中的交叉算子(Crossover)、重组算子(Recombination)或变异算子(Mutation),具有繁殖子代(OffSprings)的功能,选择算子(Selection)具有挑选后代的功能;蚁群算法中的蚂蚁移动算子具有产生新个体的功能,信息素更新算子具有信息素强度更新的功能。
个体更新的方式主要分为两种:一种是依靠自身的能力在解空间中寻找新的解;另一种是受到其他解(如当前群体中的最优解或邻域最优解)的影响更新自身。
(1)依靠自身的能力进行局部搜寻
这类算法主要有传统进化计算算法、Memetic算法、猫群算法中的搜寻模式、蜂群算法中跟随蜂和侦察蜂的位置更新、细菌觅食算法、人工鱼群算法等。对于不同的算法,依靠自身的能力进行更新的方式又有所不同,下面介绍相关算法中个体更新的机制。
在传统的进化计算算法中,个体的位置更新主要有交叉、变异操作,交叉是模仿生物界的繁殖过程,对于完成选择操作的配对染色体以一定的概率通过某种方式互换部分基因,变异则是通过一定的概率改变个体的基因来产生新的个体。
Memetic算法的个体更新方式与传统进化计算算法稍有不同,即在完成遗传操作后,需要对群体中的所有个体进行局部搜索,使得解的质量进一步提高。局部搜索的策略有很多,如爬山法、模拟退火法、禁忌搜索算法等,具体问题应选取合适的搜索策略以提高自身解的质量。
在猫群算法中,当猫处于搜寻模式时,是通过对自身位置进行复制,对复制出来的每一个副本进行类似于进化计算算法的变异操作,之后进行适应度计算,选取最好的解来代替当前解。
蜂群算法中跟随蜂的位置更新是在引领蜂位置基础上加一个随机扰动实现的,而当蜜源枯竭时,即当前位置附近没有比引领蜂所在位置有更好的蜜源,则引领蜂更换角色,变为侦察蜂,侦察蜂随机地在解空间中产生一个新的解。
细菌觅食算法中的迁徙算子,满足迁徙概率的细菌执行迁徙操作,在整个解空间中随机地产生一个新解。
在人工鱼群算法中,当每条鱼尝试聚群算子和追尾算子后,若其适应度没有得到改善,则执行觅食算子,然而在尝试一定次数的觅食算子后,其适应度还是没有得到改善,此时人工鱼将在解空间中随机地游到一个新的位置,作为一个新解。
我们看到,如果仅仅是在原有解的基础上进行变异操作或加上一个随机扰动或做搜索操作,属于在原有解的附近做局部寻优,这种方式带来的个体位置更新范围不大;若直接将任意一个解赋给该个体,则具有较强的随机性,一定程度上增加了对于解空间的搜索范围,有利于求得全局最优解,但这也往往造成了一种盲目搜索。因此,在实际的问题求解中,要权衡这两者之间的矛盾,以便于更好地搜寻到全局最优解。
(2)受到其他解的影响来更新自身
这类算法主要有免疫算法、猫群算法中的跟踪模式、粒子群算法、混合蛙跳算法、蚁群算法、蜂群算法中引领蜂的更新。
免疫算法中,个体的更新过程是通过将上一代个体的优秀基因作为疫苗直接注射到下一代个体的相应基因位上,以此方式更新自身,使得下一代的个体优于上一代,不断地提高解的质量。
在猫群算法中,当猫处于跟踪模式时,其位置更新并不是无目的的随机搜索,而是朝着最优解的方向不断逼近,通过猫所记忆的当前群体中的全局最优解来更新自身,提高算法的搜索能力。
粒子群算法中个体的更新方式分为全局模式和局部模式。在全局模式中,粒子追随自身极值和全局极值,使得粒子向着最优解的方向前进,具有较快的收敛速度,但鲁棒性较差;而在局部模式中,粒子只受自身极值和邻近粒子的影响,它具有较高的鲁棒性但收敛速度相对较慢。
在混合蛙跳算法中,是利用子群中处于最优位置的青蛙和处于全局最优位置的青蛙来更新蛙群中最差青蛙的位置,最差青蛙通过与这两者的交互使得自身位置不断地更新,向着最优解靠拢。
在蚁群算法中,蚂蚁在觅食的过程中会根据先前蚂蚁在所行路径上留下的一种叫做信息素的东西来指引自己的路径,信息素越多表明该路径越好,使得后来的蚂蚁以较大的概率选择该路径,所有的蚂蚁都是通过这种特殊的消息交互机制实现个体进化的。
蜂群算法中跟随蜂搜索到的位置是以引领蜂为核心,在引领蜂所引领的位置,加上引领蜂与群体中随机位置的偏差乘以随机数实现的;而引领蜂通过跟随蜂所搜寻到的最优位置实现自身更新。
通过与群体中其他个体的交流,使得自身的位置不断地得到更新,这种方式具有向优秀个体学习的机制,加快了算法的收敛速度和效率。
在基于群体概念的仿生智能算法中,群体更新是种群中个体更新的宏观表现,它对于算法的搜索和收敛性能具有重要作用。在不同的仿生群体智能优化算法中,存在着不同的群体更新方式。
(1)个体更新实现群体更新
这种群体的更新主要依靠个体更新来实现。在仿生群体智能优化算法中,群体是由多个个体构成的,这些个体作为算法实行搜索的载体,代表了搜索问题的解空间,个体通过相同或不同的更新方式,改变自身的位置,使个体以较大概率得到改善。
而纵观不同的进化时代,群体更新代表了群体的流动方向。这种更新方式大多采用贪婪选择机制,即比较个体更新前后的评估值,保留较优的个体,使个体自身不断优化,趋向最优解,从而使群体的质量得到改善。
例如:在人工鱼群算法中,每条人工鱼通过一定的规则尝试执行聚群行为、追尾行为、觅食行为,并选择改善最大的行为,进行位置的移动,实现个体更新。通过这种方式,使得每次迭代时,所有人工鱼都能以较大概率得到优化,从而实现整个种群质量的提高。
(2)子群更新实现群体更新
在仿生群体智能优化算法中,有些算法将整个群体划分成多个子群,不同子群进行独立搜索,有些算法的每个子群运行相同的搜索模式,并实行子群间的协同合作与信息交互。例如,在混合蛙跳算法中,算法将群体分为若干小群,在每一次迭代过程中,每个子群作为一个独立的进化单元,运行相同的搜索模式,子群在执行完一定次数的进化后,子群间的青蛙发生跳跃,子群体混合成新的群体,实现种群的整体进化。
有些算法的每个子群则执行不同的搜索模式,如在猫群算法中,根据一定比例将整个猫群分为搜寻模式与跟踪模式两个子群,在每一次迭代过程中猫的行为模式都会重新进行随机分配,不同子群运行不同的行为模式,在一定程度上提高了算法的全局搜索能力,使得整个群体解的质量不断地提高。
蜂群算法中,群体的划分主要是根据蜜蜂工作职能的不同来区分的。在蜂群算法中蜜蜂主要分为引领蜂、跟随蜂和侦察蜂,三种蜜蜂的位置更新方式不同,引领蜂是通过跟随蜂所搜索到的最优位置进行更新的,而跟随蜂是在所跟随的引领蜂位置附近进行搜索实现更新的,侦察蜂则是在解空间中随机移动。这充分结合了全局搜索与局部搜索的特点和优点,并通过种子群功能的划分提高了算法的寻优性能。
这种划分子群的机制很大程度上提高了解的搜索范围,增加了解的多样性,虽然其群体更新方式较为复杂,但对于求解一些复杂的优化问题具有很好的效果。
(3)选择机制实现群体更新
在前面介绍的两类算法中,个体更新后一般都能以较大概率取得更为优秀的新个体,而群体的更新主要通过选择算子来实现,若一味地选择适应度较高的个体,易造成种群内部的多样性枯竭,使算法出现早熟,搜索陷入局部最优。这是种群内部个体多样性缺失的表现,需要其他方式来弥补这一缺点。由于即便是较差个体也保存着一些优秀基因,为避免产生退化现象,有必要让一些较差个体保留下来。
在进化计算体系中,个体更新后允许较差个体的出现,以此来扩充种群多样性,同时保证种群进化的整体方向。例如,在遗传算法中,父代个体通过交叉、变异等遗传算子产生子代个体,但是由于交叉、变异算子一般属于随机搜索,不能保证子代个体的质量,不可避免地会产生退化现象。遗传算法采用轮盘赌方式选择算子、依据个体的适应度进行择优保留,并且是以概率方式选择个体,而不是确定性的选择。这使得算法一方面保证了群体向更优的方向进化,向最优解逼近,从而实现群体的优化更新;另一方面保证基因库的多样性,为搜索出更优秀的个体提供基础。
群体智能算法是一种概率搜索算法,与传统的优化方法有很大的不同。群体智能算法在进行问题求解时,其最大的特点是不依赖于问题本身的严格数学性质,它不要求所研究的问题是连续、可导的,不需要建立关于问题本身的精确数学描述模型,不依赖于知识表示,一般不需要关于命题的先验知识的启发,而是在信号或数据层直接对输入信息进行处理,属于求解那些难以有效建立形式化模型、使用传统方法难以解决或根本不能解决的问题。
与传统的优化方法相比,群体智能算法具有以下优势。
(1)渐进式寻优
群体智能算法从随机产生的初始可行解出发,一代一代地反复迭代计算,使新一代的结果优越于上一代,逐渐得出最优的结果,这是一个逐渐寻优的过程,但是却可以很快地找出所要求的最优解。
(2)体现“适者生存,劣者消亡”的自然选择规律
在搜索过程中,借助群体选择操作,或个体变化前后的比较操作,无须添加任何额外的作用,就能使群体的品质不断地得到改进,具有自动适应环境的能力。
(3)有指导的随机搜索
群体智能算法是一种随机概率型的搜索方法,这种随机搜索既不是盲目的搜索,也不是穷举式的全面搜索,而是一种有指导的随机搜索,指导算法执行搜索的依据是适应度,也就是它的目标函数。在适应度的驱动下,利用概率来指导其搜索方向,概率被作为一种信息来引导搜索过程朝着更优化的区域移动,使算法逐步逼近目标值。虽然表面看起来群体智能算法是一种盲目搜索方法,但实际上有着明确的搜索方向,这种不确定性使其能有更多的机会求得全局最优解。群体智能算法充分利用了个体局部信息和群体全局信息,具有协同搜索的特点,搜索能力强。
(4)并行式搜索
群体智能算法具有并行性,表现在两个方面:一是内在并行性,即搜索过程是从一个解集合开始的,每一代运算都针对一组个体同时进行,不容易陷入局部最优解。使其本身适合大规模的运算,让多台计算机各自独立运行种群的进化运算,适合在目前所有的并行机或分布式系统上并行处理,且容易实现,提高了算法的搜索速度。二是内含并行性,各种群分别独立进化,不需要相互之间进行信息交换,可以同时搜索解空间的多个区域,并相互交流信息,使得算法能以较少的代价获得较大的收益。
(5)黑箱式结构
群体智能算法直接表达问题的解,只研究输入与输出的关系,结构简单,并不深究造成这种关系的原因。算法根据所解决问题的特性,用字符串表达问题及选择适应度,个体的字符串表达如同输入,适应度计算如同输出,一旦完成这两项工作,其余的操作都可按固定方式进行。因此,从某种意义上讲,群体智能算法是一种只考虑输入与输出关系的黑箱问题,便于处理因果关系不明确的问题。群体智能算法对初值、参数选择不敏感,鲁棒性较强。
(6)全局最优解
群体智能算法由于采用群体搜索的策略,多点并行搜索,扩大了解的搜索空间,而且每次迭代模仿生物进化或觅食方式产生多种操作算子,在操作算子的作用下产生新个体,不断扩大搜索范围,具有极好的全局搜索性能。群体具有记忆个体最优解的能力,将搜索重点集中于性能高的部分,能够以很大的概率找到问题最优解。同时,算法中仅使用了问题的目标函数,对搜索空间有一定的自适应能力。因此群体智能算法很容易搜索出全局最优解而不是局部最优解,具有较好的全局寻优能力,提高了解的质量。
(7)通用性强
传统的优化算法,需要将所解决的问题用数学式表示,而且要求该函数的一阶导数或二阶导数存在。采用群体智能算法,只用某种编码表达问题,然后根据适应度区分个体优劣。其余的操作都是统一的,由计算机自动执行。因此有人称群体智能算法是一种框架式算法,它只有一些简单的原则要求,在实施过程中,无须额外的干预,算法具有较强的通用性,使其不过分依赖于问题的信息。
(8)智能性
确定进化方案之后,群体智能算法不需要事先描述问题的全部特征,利用得到的信息自行组织搜索,基于自然选择策略,优胜劣汰,具备根据环境的变化自动发现环境的特征和规律的能力,可用来解决未知结构的复杂问题。也就是说,群体智能算法能适应于不同的环境、不同的问题,并且在大多数情况下都能得到比较有效的解。群体智能算法提供了噪声忍耐、无教师学习、自组织等进化学习机理,能够明晰地表达所学习的知识和结构,具有一些优良特性,如分布式、并行性、自学习、自适应、自组织、鲁棒性和突显性等。除此之外,群体智能算法的优点还包括过程性、不确定性、非定向性、整体优化、稳健性等多个方面。群体智能算法在寻优等方面有着收敛速度快、鲁棒性好、全局收敛、适应范围宽等优势,可适用于多种类型的优化问题。
(9)具有较强的鲁棒性
群体智能算法具有极强的容错能力,算法的初始种群可能包含与最优解相差很远的个体,但算法能通过选择策略,剔除适应度很差的个体,使可行解不断地向最优解逼近。个体之间通过非直接的交流方式进行合作,确保了系统具有更好的可扩展性和安全性;整个问题的解不会因为个体的故障受到影响,没有集中控制的约束,使得系统具有较强的鲁棒性。
(10)易于与其他算法相结合
较其他优化算法,群体智能算法控制参数少,原理相对简单,完全采用分布式来控制个体与个体和个体与环境之间的信息交互,具有良好的自组织性。由于系统中单个个体的能力十分简单,只需要最小智能,这样每个个体的执行时间较短。算法对问题定义的连续性无特殊要求,实现简单,易于与其他智能计算方法相结合,可以方便地将其他方法特有的一些操作算子直接并于其中,当然也可以很方便地与其他各种算法相结合产生新的优化算法。
目前,群体智能算法还存在一些不足之处,有待于进一步的研究探讨。群体智能算法的理论基础还比较薄弱,缺乏普遍意义的理论分析。算法中的参数都是按照经验确定的,没有确切的理论依据,对于问题的依赖性比较大。对于算法融合的研究不足,并且算法融合也基本都是针对某一具体问题提出的,因此算法融合也存在着很大的差异,不具备系统性和一般性。
现有的群体智能算法在应用领域的成功,使研究者对仿生算法的研究有了更大的信心。各种新的群体智能算法正在不断地涌现出来。目前,对经典智能算法的改进和应用研究比较广泛,针对各种具体问题提出了大量对经典算法的改进,使得这些群体智能算法得以满足各个领域的需求。
为拓宽群体智能优化算法的应用领域,开发新的智能工具,将群体智能优化算法进行融合,是当前一个研究的热点和研究趋势,有着固有的内在需求。群体智能算法的融合并不是简单的几种算法的组合,而是按照一定的融合模式进行,需要为其寻求支撑的理论基础。
实践表明,不存在适应于任何问题的群体智能算法,对于算法的应用领域和算法融合还需要更深入的研究,这也是一个非常有理论价值和应用价值的课题,对于群体智能算法的拓展有极大的推动作用。
本书对若干群体智能算法加以分析,剖析这些算法的机理,挖掘群体智能算法所具有的普遍意义的理论模型。书中以图像中的物体聚类分析为例,介绍用群体智能算法解决聚类问题的仿生计算方法,并提供开发这些群体智能算法的仿生计算代码,为读者应用群体智能算法提供借鉴和引导。