软件学报
JOURNAL OF SOFTWARE
2000　Vol.11　No.3　P.416-420



基于模拟退火机制的多种群并行遗传算法
吴浩扬　常炳国　朱长纯　刘君华
摘要　模拟退火和多种群并行遗传进化是两种较好的改进遗传算法性能的方法.将这两种思想有机地结合起来,提出了一种基于模拟退火机制的多种群并行遗传算法.仿真结果表明,该算法不仅能增强算法的全局收敛性,还能加快遗传进化速度,得到满意的全局最优值.
关键词　遗传算法,模拟退火,多种群,并行算法.
中图法分类号　TP18
A Multigroup Parallel Genetic Algorithm Based on Simulated Annealing Method
WU Hao-yang　ZHU Chang-chun
(Department of Microelectronic Engineering School of Electronic Information Engineering Xi'an Jiaotong University Xi'an 710049)
CHANG Bing-guo　LIU Jun-hua
(Department of Automation Engineering School of Electrical Engineering Xi'an Jiaotong University Xi'an　710049)
Abstract　Simulated annealing and multigroup parallel evolution are two helpful methods which can improve the performance of genetic algorithm.These two ideas are well combined in this paper,and a new algorithm is derived,that is the multigroup parallel genetic algorithm based on simulated annealing method.Simulation results show that this method not only quickens the computation,but also improves the convergence efficiency,thus produces more satisfactory results.
Key words　Genetic algorithm,simulated annealing,multigroup,parallel algorithm.
　　遗传算法(genetic algorithm)是一种借鉴生物界自然选择思想和自然遗传机制的全局随机搜索算法.它把问题的可能解组成种群,把每一个可能的解看作种群的个体,运行时，算法在整个种群空间内随机搜索,按一定的评估策略(或称适应度函数)对每一个体作评价,不断使用选择、交叉、变异这3种遗传算子,使问题的解不断进化,直至产生最优解.因为遗传算法在解决大空间、非线性、全局寻优等复杂问题时具有传统方法所不具备的独特的优越性,所以它自从70年代由美国学者J.H.Holland提出以来,已经得到了广泛的研究和应用.
　　然而，传统的遗传算法有两个严重的缺点，即容易过早收敛，以及在进化后期搜索效率较低.这使得最终搜索得到的结果往往不是全局最优解,而是局部最优解.由于传统的遗传算法不能有效地克服过早收敛现象,因此，现在大量的研究集中于如何改进传统的遗传进化思想.目前，各种改进方法层出不穷,已经取得了大量成果.近年来,模拟退火和多种群并行遗传进化思想分别被引入遗传算法中［1～3］,显现出良好的应用前景.本文将这两种思想有机地结合起来,提出基于模拟退火机制的多种群并行遗传算法.仿真实例表明,该算法不仅能增强遗传算法的全局收敛性,还能加快进化速度3～5倍.
1 模拟退火思想简述
　　模拟退火算法起源于统计物理学中对固体退火过程的模拟［4］.它采用Boltzmann接受准则接收新解,用一个称为冷却系数的参数控制算法进程,使算法在多项式时间里给出一个近似最优解.求解过程如下：
　　(1) 初始化退火温度Tk(令k=0),产生随机初始解X0;
　　(2) 在温度Tk下重复执行如下操作,直至达到温度Tk的平衡状态：
　　① 在解x的领域中产生新的可行解x;
　　② 计算新解的评价函数f(x)和旧解的评价函数f(x)的差值Δf;
　　③ 依照概率min｛1,exp(-Δf/Tk)｝＞random［0,1］接收新解,其中random［0,1］是［0,1］区间内的随机数.
　　(3) 令Tk+1=αTk,k←k+1,其中α∈(0,1).若满足收敛判据,则退火过程结束；否则,转(2).
其中退火温度T控制着求解过程向最小值的优化方向进行,同时它又以概率exp(-Δf/Tk)来接收劣质解,因此算法可以跳出局部极值点.只要初始温度足够高,退火过程足够慢,算法就能收敛到全局最优解.
2 模拟退火与遗传算法的结合
　　遗传算法(GA)是美国学者J.H.Holland根据生物进化论的思想提出的一种全局随机优化算法,它通过选择复制和遗传因子的作用,使优化群体不断进化,最终收敛于最优状态.标准遗传算法的实现步骤为:(1) 设置种群规模、个体编码方案、交叉概率、变异概率等控制参数；(2) 利用3种遗传算子,对当前代的个体作繁殖,产生新个体；(3) 淘汰父代中适应度较低的个体,并将适应度高的新个体与父代中保留下来的个体组合为新种群；(4) 若达到计算精度或超过预设遗传进化次数,则结束计算,否则返回步骤(2).
　　遗传算法的主要特点是:(1) 针对次数的染色体(编码)进行操作,不与参数本身直接相关,不需要依赖梯度信息；(2) 只利用适应度函数作为评优准则,无需其他专业领域的知识；(3) 使用随机规则,而不是确定规则进行搜索.基于这些特点,遗传算法特别适合于处理传统搜索方法所不能解决的复杂问题和非线性问题.
　　然而，人们在实际应用中也发现传统的遗传算法容易产生过早收敛的现象，即在进化群体中少数个体的适应函数值远大于其他个体,因此，它们参与选择复制操作的概率很大,受交叉、变异操作的影响很小,于是，经过少数几次迭代后,这些个体就占据了整个群体,进化过程提前收敛.改进遗传算法的困难在于：一方面，为了保证遗传算法能够全局收敛,必须使群体中有足够多的不同的个体,即保护群体的多样性；而另一方面,为了加快算法的收敛速度,又必须使群体中的个体尽快向最优解方向靠拢,而这样做将不可避免地降低种群的多样性,增加种群过早收敛的可能.
　　目前，已有一些研究试图将模拟退火与遗传算法结合起来,如吴志远［1］提出对所选交叉个体均实施交叉操作,并且把交叉和变异后的子代同父代竞争；王雪梅［3］提出用改进的按适应度比例选择再生方式作为新生子代的生存策略；Lin F.T.［5］提出利用遗传算法来改变模拟模拟退火的性能,他将整个算法分为两部分,首先通过遗传算法来进化生成一个群体,然后利用模拟退火进一步调整优化解.
3 多种群并行遗传思想简述
　　多种群并行遗传［2］是近年来所提出的改进遗传算法性能的较好的一种方法.其基本思想是用多个子种群代替原单一种群,每个子种群按不同的进化策略、遗传算子并行进化(例如，每个子种群具有不同的交叉概率Pc、变异概率Pm、退火冷却系数等),用多个子种群代替原始种群在可行解空间进行搜索.不同子种群各自独立进化,每进化S次(S为子种群独立进化次数)就把当前总最优个体分配到所有子种群中去,以促进各个子种群的进化.这样处理可以选取和保留每个子种群的优秀个体,在保持优秀个体进化的稳定性的同时,加快进化速度,避免单种群进化过程中出现的过早收敛现象.
　　图1所示为3个子种群并行进化的例子.子种群1的Pc,Pm两值较大,称为探测子种群,用于在总的进化过程中不断提供新的超平面,克服过早收敛；子种群2的Pc,Pm两值较小,称为开发子种群,用于在局部范围(某一超平面)内寻找优秀个体,并将其保持下来；子种群3的Pc,Pm两值处于中间,称为探测开发子种群,兼具上述两个子种群的功能.每进化一代,3个子种群先传播当前总最优个体,然后再各自进化.如此往复,直至找到最优解.

Fig.1　Schematics of multigroup parallel evolution
图1　多种群并行进化示意图
4 基于退火机制的多种群并行遗传算法
　　本文将模拟退火和多种群进化并行遗传这两种思想有机地结合起来,提出基于退火机制的多种群并行遗传算法.算法按以下过程进行：
　　(1) 初始化控制参数：子种群的个数M,每个子种群的个体数2N+1,独立进化次数S,各子种群的交叉概率Pic,变异概率Pim,温度冷却系数Ci,退火初始温度Ti,其中i=1～M;
　　(2) 随机产生M个初始种群,设定进化代数Loop1=0；
　　(3) 设定计数变量Loop2=0；
　　(4) 对每一个子种群i(i=1～M)实施如下操作,以产生一个新子种群,直至产生出M个新子种群.
　　① 评价子种群中每个个体的适应函数值f(xj),j=1,2,...,2N+1；
　　② 从第i个种群中随机选取个体xj,xk,按交叉概率Pic进行交叉操作,产生两个新个体x＇j，x＇k,计算适应函数值f（x＇j）和f（x＇k）,若 min｛1，exp-(f(x＇j）-f（xj））／Ti）｝＞random,则接收x＇j为新个体,若min｛1,exp(－（f(x＇k）-f（xk））／Ti）｝＞random,则接收x＇k为新个体.其中random为［0,1］区间上的随机数；
　　③ 对交叉后的个体按变异概率Pim进行变异操作,按②中的方法决定是否接收新个体.若接受,则令新个体为新子种群的个体,否则,令旧个体为新子种群的个体.对步骤②、③重复N次；
　　(5) Loop1←Loop1+1.若Loop2＜S,则Loop2←Loop2+1,转步骤(4),否则转步骤(6),传播总最优个体；
　　(6) 找出当前M个子种群中各自最优的个体,并从中再选出当前总最优个体,将其传播到所有M个子种群中去；
　　(7) 若当前总最优个体满足收敛条件,则进化过程成功结束,返回全局最优解；
　　(8) 若Loop1小于预定最大进化次数MAXLOOP,则修改各子种群的退火温度,即令Ti←CiTi(i=1～M),转步骤(3);
　　(9) 若Loop1＞MAXLOOP,算法仍未找到符合要求的解,则算法以失效结束.
从以上步骤可以看出,在多种群的并行进化过程中,子种群每独立进化S次就要进行传播操作,以共享总最优个体,所以本文算法是一个同步并行算法.因为每个子种群都相应地有不同的种群个体、不同的控制参数和退火冷却系数,所以算法实施时应采用多指令流多数据流(MIMD)计算机结构.MIMD结构由多个处理器构成,每个处理器中的局部数据按各自指令独立执行,在各个处理器中运行的进程之间通过传递消息的方式进行同步(此处即为一个子种群进化S次后便进入等待状态,直到所有的子种群都完成了S次进化)，然后各个处理器通过公共总线或共享存储器使用一个全局共享变量进行通信(即把当前总最优个体作为全局共享变量传播到所有处理器中去).
5 仿真研究
　　为评价本文提出的退火并行遗传算法的性能,考虑如下两个函数最大值求解问题：
(1)
f1（x）＝-xsin（10πx）＋1，x∈［-1，1］,
(2)
f2（x）＝1-x2，x∈［-1，1］.
函数f1(x)是一个多峰值函数,在［－1,1］区间内有11个极大值点,全局极大值为1.950 533,它主要用于评价算法的全局收敛性；函数f2(x)是一个二次函数,尽管它在［－1,1］区间内只有1个极大值点,极大值为1,但由于该函数在这个极大值附近的取值变化缓慢,因此可用它来评价算法的后期搜索性能.算法的控制参数如下：种群规模101,个体的染色体编码为［x1 x2 x3 x4 x5 x6］,每个基因xi(i=1,2,...,6)的取值为0～9,对应个体的值为.适应度即为函数值(这里求解的是最大值问题,需将本文第4节所描述的最小值求解算法稍加改变),交叉方式为单点交叉,变异方式为余10变异(即随机对个体x的某一位基因xi加上0到9之间的随机数,然后对10取余,余数就作为基因xi的变异结果).算法的中止条件是，当种群当前最优个体的适应度与全局最优值之差小于1e-6时,算法成功结束并返回该最优个体,否则种群不断进化，直至进化次数loop大于预设的最大允许进化次数MAXLOOP,算法以失效结束.为评价算法的运行性能,本文取算法连续运行100次所需进化次数的平均值作为衡量指标.表1比较了采用传统模拟退火遗传算法(即子种群数为1时的情况)和采用多种群并行退火遗传算法对函数f1(x)和f2(x)进行求解的8组平均进化次数.
Table 1　The evolution epochs of multigroup parallel genetic algorithm and classic annealing genetic algorithm
表1　多种群并行退火遗传算法与传统模拟退火遗传算法进化次数对照表

Function①Algorithm②Evolution epochs③
　Classic④34.2630.3434.9530.9628.9736.3134.9633.90
f1(x)2 subgroups⑤17.6215.0114.2915.9514.6013.9414.9315.14
　3 subgroups11.3611.1610.9411.9511.0012.1110.6311.36
　4 subgroups9.519.658.659.429.538.879.499.26
　Classic13.9912.7315.4912.0811.7912.6412.1611.05
f2(x)2 subgroups5.975.695.134.885.055.514.994.79
　3 subgroups3.243.072.592.873.343.303.103.58
　4 subgroups2.202.232.552.302.381.972.462.08

①函数,②算法,③进化次数,④传统算法,⑤子种群.
　　由表1可以看出,对于评价全局收敛性的函数f1(x)和评价后期收敛速度的函数f2(x),本文的算法均比传统退火遗传算法有较大的改进.随着子种群数目的增加,算法平均运行次数呈下降趋势,且下降幅度越来越小.将进化次数与运算量折衷考虑,子种群的数目取3比较合适,这时，基于退火机制的多种群并行遗传算法将比传统的退火遗传算法速度平均加快3～5倍左右.通过实验还发现,应用本文算法能避免传统算法可能出现的不收敛现象.因此,本文的算法不但能有效地克服过早收敛的现象,而且还能加快遗传进化速度,增强全局寻优能力.
6 结　语
　　利用模拟退火思想改进遗传算法的性能是通过Boltzmann机制来接收子代,这样做有利于优良个体的保留.随着进化过程的进行,温度逐渐下降,接收劣质解的概率逐渐减小,即利用模拟退火算法的爬山性能提高整个算法的收敛速度.
　　利用多种群并行遗传思想改进遗传算法性能是通过不同子种群各自独立的进化,把每次进化找到的当前最优解分配到各个子种群中去,以促进其他子种群的进化,这样做可以选取和保留每个子种群的优秀个体,在保持优秀个体进化的稳定性的同时,加快进化速度,避免单种群进化过程中出现的过早收敛现象.
本文研究得到国家自然科学基金(No.69776037)和教育部博士点基金(No.98069828) 资助.作者吴浩扬,1976年生,博士,主要研究领域为神经网络，智 能传感器.常炳国,1965年 生,博士研究生,主要研究领域为数据融合，智能传感器.朱长纯,1936年 生,教授,博士生导师,主要研究领域为真空微电子，光电器件.刘君华,女 ，1938年生,教授,博士生导师,主要研究领域为自动化测量，多传感器信息融合.
本文通讯联系人:吴浩扬,北京 100084,清华大学生物系生物芯片中心
作者单位：吴浩扬(西安交通大学电子与信息工程学院微电子工程系　西安　710049)
常炳国(西安交通大学电气工程学院自动化系　西安　710049)
朱长纯(西安交通大学电子与信息工程学院微电子工程系　西安　710049)
刘君华(西安交通大学电气工程学院自动化系　西安　710049)
参考文献
1，Wu Zhi-yuan,Shao Hui-he,Wu Xin-yu.Genetic annealing evolutionary algorithm.Journal of Shanghai Jiaotong University,1997,31(12):69～71
(吴志远,邵惠鹤,吴新余.遗传退火进化算法.上海交通大学学报,1997,31(12):69～71)
2，Zhou Yuan-hui,Lu Yu-chang,Shi Chun-yi.Adaptive and parallel genetic algorithm based on solving premature convergence.Journal of Tsinghua University,1998,38(3):93～95
(周远晖,陆玉昌,石纯一.基于克服过早收敛的自适应并行遗传算法.清华大学学报,1998,38(3):93～95)
3，Wang Xue-mei,Wang Yi-he.The combination of simulated annealing and genetic algorithms.Chinese Journal of Computers,1997,20(4):381～384
(王雪梅,王义和.模拟退火算法与遗传算法的结合.计算机学报,1997,20(4):381～384)
4，Kang Li-shan.Non-Numerical Parallel Algorithms ( Ⅰ)――Simulation Annealing Algorithms.Beijing: Science Press,1997.22～55
(康立山.非数值并行算法(第1册)――模拟退火算法.北京：科学出版社,1997.22～55)
5，Lin F T,Kao C Y,Hsu C C.Applying the genetic approach to simulated annealing in solving some NP-hard.IEEE Transactions on SMC,1993,23(6):1752～1767
本文1999-01-12收到原稿,1999-04-06收到修改稿
