求解24数码问题的改进遗传退火算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

求解24数码问题的改进遗传退火算法
杨卫波;王万良
【摘要】Hybrid genetic simulated annealing algorithm is proposed for 24 puzzle problem which has a huge solution search space.According to characteristics of the problem, the algorithm designs individual encoding methods, efficient fitness evaluation function and genetic operators.It introduces Boltzm upgrade mechanism into traditional genetic algorithm to overcome premature convergence problem and local minima. Computational results show that the algorithm can quickly find optimal solution. The proposed algorithm can also be applied to other combinatorial optimization problems.%针对具有巨大搜索解空间的24数码问题,提出了一种基于改进遗传模拟退火算法的求解方法.依据问题特征,设计了个体编码方法、高效的适应度评价函数和遗传操作算子,通过在遗传算法中引入模拟退火的Boltzmann更新机制,克服了传统遗传算法易于过旱收敛和易于"卡住"陷入局部极小的问题.仿真实验结果表明,提出的算法能够快速搜索到问题的解,算法对其他组合优化问题也具有应用价值.
【期刊名称】《计算机工程与应用》
【年(卷),期】2011(047)015
【总页数】3页(P9-11)
【关键词】数码问题;遗传算法;模拟退火算法;Manhattan距离
【作者】杨卫波;王万良
【作者单位】温州大学,物理与电子信息工程学院,浙江,温州,325035;浙江工业大学,信息工程学院,杭州,310023;浙江工业大学,信息工程学院,杭州,310023
【正文语种】中文
【中图分类】TP301.6
数码问题(Puzzle problem)是一个典型的组合优化问题,对于一个15数码问题,从初始排列出发经过一系列合法的移动,所能到达的排列数有
16!/2≈1.05×1013种。

由于其巨大的解搜索空间,在人工智能研究中,数码问题常被用来测试一些搜索算法的性能。

对于24数码问题,目前最好的启发式搜索算法找到最优解(最少移动步数)通常也至少需要2.25小时[1]。

常见的求解数码问题的方法可以分为精确方法和进化算法,对于规模小的如八数码问题最常用的算法是A*算法[2-3],基于贪心和分治思想进行实时求解[4]等算法,这些算法通过设计灵活的启发式函数,求解速度较快能取得较好的效果,但其过于依赖问题的特征使得算法受限于求解问题的规模而导致求解时间让人无法接受。

进化算法尽管不一定能得到准确解,但一般可以得到比较有效解,而且时间复杂度比较低,在求解这种具有巨大搜索解空间的问题中得到了广泛使用。

目前使用的进化算法基本上都是遗传算法,求解规模主要针对3×3和4×4数码[5],一般利用遗传算法进行多次运
行求解后可得到结果,但易于陷入局部最优。

遗传算法[6](GA)和模拟退火算法(SA)[7]是近年来兴起的一种性能较好的寻
优方法,其中GA模拟自然进化中优胜劣汰,适者生存的原理来进行自学习和寻优,可以解决大空间、非线性等复杂的寻优问题。

传统的GA有两个严重的缺点,即容易过早收敛,以及在进化后期搜索效率低。

SA在搜索过程中,能随机地接受某些劣解理论上可以收敛到全局最优解,但条件是足够高的温度,足够慢的降温速度以及每个温度下充分Metropolis抽样等,这样将导致搜索过程冗长。

鉴于GA和SA各自的特点,本文将二者有机结合起来,提出一种基于遗传退火算法(GSA)来求解数码问题的方法,依据数码空格移动的特点设计了染色体的编
码方法、使用Manhattan距离作为评价函数,并针对其运行中易于陷入局部最优的情况用SA的Boltzmann更新机制加以改进。

仿真实验表明,算法在求解效率
和解的质量方面都达到了令人满意的效果。

n2-1数码问题是一个著名的NP完全问题,起源于一种单人玩的游戏。

该问题可
以表述为:在一个N×N的方阵中放入N×N-1个数码和一个空的单元格,按照每次只能将空格和与空格相邻的数码交换的原则,需要找到一个数码移动序列能使初始的无序数码(初始状态)转变为某种设定的特定排列(目标状态),并在得到正确移动序列的情况下,尽可能使移动的步数最少,图1所示为一个24数码问题。

对于数码问题,可以把数码的移动等效成空格的移动。

在图1的初始排列情况下,数码3左移等同于空格右移。

对于每一个排列,它可能的一次数码移动最多只有
四种,即空格左移、空格右移、空格上移、空格下移和最少有两种(当空格位于方阵的四个角上时),所以问题就转换成如何从初始排列开始,使空格经过最小的移动次数最后使排列变成目标排列。

数码如何移动是最先需要考虑的问题。

一种方法是考虑选择将某个编号的数码移动到空格,如图1中唯一可行的移动数码编号是3和7;另一种方法是不考虑移动
方块的编号,只考虑其移动的方向:上、下、左、右,如方向“上”指的就是将空格上面的方块移动到空格处。

虽然前一种方法更容易想到,但方阵在每种状态下都会有多个可选的移动数码编号(如上面提到的3和7)可选择,不利于染色体编码。

本文选择第二种方法,这种编码方法利于个体编码,且个体交叉和变异算子设计更加简单。

每个染色体必须把空格的每一次移动编入其中,空格的移动方向仅限4个方向:上、下、左、右,编码应该就是代表这4个方向信息的一个字符串,用数字0、1、
2、3表示这4个方向,如图2所示。

染色体可编码为固定长度的由这4个数字组成的数字串,对于本文所讨论的24数码问题,经过多次实际测试发现,固定编码长度在区间[150,200]内时能取得较好的效果。

需要指出的是染色体的某些基因
位可能是不起作用的,若选择此方向,空格将产生非法移动,此时该基因位不起作用,空格将选择下一个基因位(下一个方向)走。

有些方法[5]采用的估计函数是取一格局与目的格局相比,统计其位置不符的数码
数目,这种估计函数并没有充分利用所能获得的信息,它没有考虑数码所需移动的距离。

本文采用的是基于Manhattan距离[8]的适应度函数。

按照染色体上的方向数字,从初始排列开始每进行一次空格移动,就变成一个新的排列,设经过第s次移动后所形成的排列为Ps,方阵状态为s。

定义xi(s)和yi(s)
分别表示编号为i的数码在方阵状态为s时的x,y坐标,xˉi(s)和yˉi(s)分别表示i 数码在方阵状态为目标状态时的x,y坐标,那么Manhattan距离可用h(s)来表示:
将染色体长度CHROMO_LENGTH设为固定值,有可能发生搜索到染色体中间的某个基因时找到了优化结果,但随着搜索的继续后面的移动步骤可能会使结果变差,为避免这种情况及保证移动步数尽可能最少,设计如下染色体结构体:
式中,除了用整数向量表示的基因和用双精度数表示的适应度值外,还增加了一个整数分量iLen,用来记录个体达到相应的适应值时移动的步数。

对两个个体好坏
的评价标准是适应度大的个体好;若适应度相同,则移动步数小的个体好。

考虑到问题的Manhattan距离越小个体越好,个体的移动步数越小越好,问题得到解决时Manhattan距离达到最小值0,由此定义s态时个体适应度评价函数为:则该个体的适应值为 max{f1,f2,f3,…,fn},其中n为染色体的长度。

对于24数码问题来说,当其Manhattan距离小于10时已经非常接近目标状态,图3所示的Manhattan距离为4。

单独使用GA求解时,算法单一不变的群体更
新方式难以兼顾在不同阶段对多样性和收敛性的不同要求,大部分情况下会发生陷入局部最优状态,如图3所示(编号为14、9和编号为17,16的数码很难跳出
此状态)。

这样情况发生后,即使加大染色体长度和运行时间,算法也基本上跳不出此局部最优状态。

在GA中,既要维护种群的多样性,又要使得GA向最优解的方向快速收敛,单一不变的群体更新方式难以兼顾GA在不同阶段对多样性和收敛性的不同要求[9-10]。

因此,本文在传统的GA生存策略中引入SA的Boltzmann更新机制:设新产生
的适应性为 f,变动的阈值为 f',当 f>f'时,接受新个体;否则以一定的概率接受新个体P=exp((f-f')/T),T是控制参数,相当于热力学中的温度。

在算法初期个体间差异大,高温下的SA操作有利于状态的全局大范围转移;在算法后期变异和低温下的SA操作有利于状态的局部小范围趋向性移动,维护种群的多样性,从而解决24数码问题易于“卡住”陷入局部极小的问题。

遗传算法主要是通过遗传操作对群体中具有某种结构形式的个体施加结构重组处理,其中杂交和变异操作是遗传算法中最重要的部分,算法的结果受到杂交和变异的影响最大,本文采用如下算子进行处理。

杂交算子:采用多点交叉算子,沿着父代染色体长度,逐位逐位地按照杂交率来随机地交换基因。

变异算子:沿着父代染色体长度,逐位逐位地按照变异率,将每一位用随机产生的{0,1,2,3}中的数字替换。

选择算子:为避免丢失上一代产生的最佳个体,同时使用精英选择策略(elitist model)和赌轮选择法,从n个中间群体中选择适应度最优的1/20个体复制到下一代中,其余的个体按照为选取概率被复制到下一代。

以GA为主流程,把SA群体更新的Boltzmann准则融入其中,求解24数码问
题算法的流程如下:
步骤1初始化控制参数:T←T0,进化代数初始化k←0,设置交叉、变异概率,随机方法初始化群;
步骤2按式(3)计算群中各个个体的适应度;
步骤3从群中选择n对个体,作为父本,对每一对父本,执行如下操作:
(1)由父本 P1,P2使用交叉、变异算子生成子代 C1,C2,计算C1,C2的适应度;
(2)若 fci>fpi,i=1,2,则用 Ci替换 Pi;否则以Boltzmann准则接受子代;步骤4终止条件判断。

若不满足终止条件,则k=k+1,降温Tk←Tk+1,转步骤2;否则输出当前最优解,算法结束。

其中,Tk为进化代数为k时的退火温度,它满足温度下降公式:
算法的中止条件是:Manhattan距离h(s)=0或当迭代次数k达到预先设定好的迭代次数。

采用普通PC机,微处理器为Pentium41.6 GHz,内存1.00 GB,用VC++2008编写程序进行实验来验证算法的有效性,算法参数设定如下:种群规模80,
Pm=0.02,Pc=0.7,精英选择数4,退火初始温度T0=1000,终止迭代次数3000。

图4为求解24数码问题的程序界面。

值得注意的是,不是任何一个初始排列都能按规则移成目标排列,本文实验中的初始排列选用文献[2]中的方法,将目标排列中的空格按照规则连续移动5000000次(每次移动的方向是随机选择的)产生的,显然这样产生的排列作为初始排列是能够移成目标排列的。

文献[5]给出了求解数码问题效果比较好的GA算法,因此与之进行比较,考查本文算法的性能。

实验过程是:对24数码问题做两组实验,分别采用文献[5]中的GA算法和本文提出的GSA算法,每组实验产生一个初始排列,每产生一个初始排列,做25次实验,记录最短、最长和平均时间。

实验数据如表1,从表1可看
出对于24数码问题,本文算法平均近5分钟可求得问题的解;采用Manhattan
距离的评价函数充分反映问题的特征,能更加有效地求得问题的解。

图5为采用文献[5]给出的GA和本文改进后的GSA的收敛曲线对比图,为便于比较,图中用问题的Manhattan距离h(s)+1作为纵坐标。

从图中可以看出,GSA
在求解速度上,较GA有相当大的提高,在1200代左右基本能收敛到问题的解,发挥了SA局部搜索能力和GA全局搜索能力,优势互补,搜索效率更高。

24数码问题是具有巨大搜索解空间的一个组合优化问题,通过引入SA的Boltzmann更新机制对GA进行改进来求解该问题,解决了染色体编码、评估函
数的设计、GA操作的设计以及过早收敛等问题,实验表明针对问题设计的算法简单有效,收敛速度快,为研究求解其他组合优化问题给出了一条新的途径。

[1]王万良.人工智能及其应用[M].北京:高等教育出版社,2008.
[2]卜奎昊,宋杰,李国斌.基于A*算法的八数码问题的优化实现[J].计算机与现代化,2008(1):29-33.
[3]Parberry I.A real-time algorithm for the(n2-1)puzzles[J].Information Processing Letters,1995,56(1):23-28.
[4]乔宏敬.求解八数码问题的几种搜索算法比较[J].福建电脑,2007(8):50-51.
[5]王斌,李元香.基于遗传算法的数码问题求解[J].计算机工程,2003,29(10):45-47.
[6]玄光男,程润伟.遗传算法与工程优化[M].于歆杰,周根贵,译.北京:清华大学出版社,2004:83-86.
[7]朱颢东,钟勇.一种改进的模拟退火算法[J].计算机技术与发展,2009,19(6):32-35.
[8]郑宗汉,郑晓明.算法设计与分析[M].北京:清华大学出版社,2006.
[9]王凌,郑大钟.一种GASA混合优化策略[J].控制理论与应用,2001,18(4):
552-554.
[10]王雪梅,王义和.模拟退火算法与遗传算法的结合[J].计算机学报,1997,20(4):381-384.
【相关文献】
[1]王万良.人工智能及其应用[M].北京:高等教育出版社,2008.
[2]卜奎昊,宋杰,李国斌.基于A*算法的八数码问题的优化实现[J].计算机与现代化,2008(1):29-33.
[3]Parberry I.A real-time algorithm for the(n2-1)puzzles[J].Information Processing Letters,1995,56(1):23-28.
[4]乔宏敬.求解八数码问题的几种搜索算法比较[J].福建电脑,2007(8):50-51.
[5]王斌,李元香.基于遗传算法的数码问题求解[J].计算机工程,2003,29(10):45-47.
[6]玄光男,程润伟.遗传算法与工程优化[M].于歆杰,周根贵,译.北京:清华大学出版社,2004:83-86.
[7]朱颢东,钟勇.一种改进的模拟退火算法[J].计算机技术与发展,2009,19(6):32-35.
[8]郑宗汉,郑晓明.算法设计与分析[M].北京:清华大学出版社,2006.
[9]王凌,郑大钟.一种GASA混合优化策略[J].控制理论与应用,2001,18(4):552-554.
[10]王雪梅,王义和.模拟退火算法与遗传算法的结合[J].计算机学报,1997,20(4):381-384. YANG Weibo,WANG Wanliang.Improved genetic simulated annealing algorithm for 24 puzzle puter Engineering and Applications,2011,47(15):9-11. Abstract:Hybrid genetic simulated annealing algorithm is proposed for 24 puzzle problem which has a huge solution search space.According to characteristics of the problem,the algorithm designs individual encoding methods,efficient fitness evaluation function and genetic operators.It introduces Boltzmann upgrade mechanism into traditional genetic algorithm to overcome premature convergence problem and local putational results show that the algorithm can quickly find optimal solution.The proposed algorithm can also be applied to other combinatorial optimization problems.。

相关文档
最新文档