您好,欢迎访问三七文档
应用遗传算法求解十滴水游戏————智能优化算法课程报告黄青虬2014年12月31日1十滴水游戏简介如图一所示,十滴水游戏是在一个6×6的棋盘上,通过填补水滴来引爆原有的水滴,直到棋盘上所有水滴消失。棋盘上每个格子可以放0、1、2、3、4滴水,当格子上有4滴水时,再往上面滴一滴水,则该水滴会爆,即格子上的水滴变为0,同时向四周各溅出一滴水,溅出的水如果遇到其他水滴就会并入,如果并入后水滴数又大于4了,则会有新一轮的引爆。点击格子则在其上面滴一滴水。水滴是有限制的,如图一,右上角会有一个水缸显示当前你还可以用的水滴数。每引爆三滴水可以让水缸增加一滴水。图1:十滴水游戏从游戏规则可以看出,十滴水游戏的状态空间是非常巨大的(36k),对于解的步数比较长的的局面(比如每个点上的水滴数均为1的局面),想通过搜索求解几乎是不可能的。所以要通过智能优化算法来求解近似最优解。以下分析用遗传算法求解每个点上的水滴数均为1的局面。12遗传算法概念在十滴水游戏中的具体实例染色体:一个点,代表在该格子上舔一滴水。个体:一个长度为h的染色体(点)数组,代表添水序列,即一个解。种群:一个规模为n的个体数组。适应度:fit(s)={364+∑6i=1∑6j=1 drop[i][j],if无法清空364+(50 l)210,if清空(1)其中l表示个体清空局面所需要的染色体数。选择:根据个体的适应度,算出该个体被选出的概率,然后在种群中选出个体进行交配个体i被选出的概率为:Ps(i)=fit(i)∑nk=1fit(k)从这个公式可以看出,适应度越大的被选出的概率越大,所以可以实现优胜劣汰。交叉:根据概率Pc,两个个体交换部分染色体。变异:根据概率Pm,该个体变异一个染色体。最大迭代代数:循环迭代次数M。3参数选取算法中可以调整的参数有以下几个:个体的染色体长度h,种群规模n,交叉概率Pc,变异概率Pm,最大迭代代数M经过试验,发现50步以上基本就可以解决任何一个局面,所以选取h=50。发现迭代次数在150以上基本就收敛了,所以选取M=200。种群规模n,交叉概率Pc,变异概率Pm通过线性扫描实验选取最佳值,实验结果如下:图2:Pc扫描结果从Pc的扫描结果可以看出,对于此问题,Pc取0.4左右比较合适。这与一般的遗传算法的经验值是接近的。实验中选取Pc=0:4。2图3:Pm扫描结果从Pm的扫描结果可以看出,对于此问题,Pm取0.4左右比较合适。这个值与一般的遗传算法经验值(0.1左右)相比要大。这可能是由这个问题的特殊性所决定的。首先,这个问题并不是随机生成一个个体都是问题的解,这个与典型的遗传算法所解决的问题是不太一样的。其次,这个游戏点击的灵活度非常高,即随便乱点也可能会出现比较好的结果,以上两点就决定了针对这个问题,需要变异的概率比较高,即Pm比较大。实验中选取Pm=0:4。图4:Population扫描结果从Population的扫描结果可以看出,对于这个问题,种群数量越大效果越好,这个也是符合遗传算法的假设的,但是由于种群数量的增大会同时增大计算复杂度。所以实际问题中需要一个折中。针对这个问题,实验中选取Population=400。注:实验中的fitness是指种群中所有个体的平均性能,并进行了归一化处理。下同。4实验结果4.120次随机实验统计结果平均fitness:0:0367,即40:4214步。方差:5:866510 53图5:20次随机实验结果最佳fitness:0:0488,即38:9546步。最差fitness:0:0186,即43:1809步。4.2典型的性能曲线图6:性能变化曲线4.3近似最优解通过实验,给出如下一个38步的近似最优解:(1,1),(2,2),(2,3),(4,2),(4,4),(3,0),(4,2),(2,4),(3,2),(5,2),(3,1),(4,2),(2,2),(3,4),(3,1),(0,3),(3,3),(2,3),(2,4),(4,3),(1,1),(2,5),(4,2),(0,3),(3,0),(5,5),(0,2),(3,4),(1,3),(3,3),(2,3),(5,1),(2,2),(2,0),(2,3),(4,1),(3,2),(2,1)45遗传算法在组合优化中的特点具有与问题领域无关切快速随机的搜索能力。搜索从群体出发,具有潜在的并行性,可以进行多个个体的同时比较。比较鲁棒。使用概率机制进行迭代,具有随机性,比较灵活。具有可扩展性,容易与其他算法结合。6实验体会本次的十滴水游戏求解实际上是人工智能课上的一个作业,不过在人工智能课上老师要求的是用搜索和机器学习两种方法去求解。联想到这门课的内容,于是想到了遗传算法。一开始打算用遗传算法来解决的时候主要的困难在于建模。即如何把遗传算法的各个概念实例化为十滴水游戏中。经过对遗传算法的仔细理解和对游戏规则的挖掘,最终成功建立了模型。接下来遇到的一个困难就是参数的选取,由于遗传算法中许多参数的选取并没有非常直接的证明,都是要根据经验和实际问题具体设定。所以实验中只好用线性扫描的办法,求解出较优的参数。最终结果也验证这些参数的效果还是不错的。经过这次具体的实践,我体会到了,其实智能优化算法由于都比较成熟了,所以本身并不是很难,难的主要在于两点:第一个是模型的建立,即如何把一个实际问题模型化为一个可以用智能优化算法解决的问题;第二个是参数的选取,由于许多智能优化算法都是有很多可以调的参数的,而这些参数的调整主要是靠经验和对实际问题的分析,所以参数的选取也是一个比较难的问题,需要多实践也许才能更好的掌握调整参数的技巧。7课程体会通过这门课了解了很多种智能优化算法,也体会到了他们的强大之处。确实智能优化算法在解决一些复杂问题时有着不可替代的地位和别的算法所不能比拟的好处。同时也通过作业深入认识了其中一种算法–遗传算法,学会了如何建立算法所需的模型,如何运用算法去解决实际问题。总之,通过这门课学到的许多东西都让我觉得受益匪浅。5
本文标题:智能优化算法报告
链接地址:https://www.777doc.com/doc-7224229 .html