为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 人工智能导论试验报告:吃豆人游戏

人工智能导论试验报告:吃豆人游戏

2018-07-18 6页 doc 497KB 43阅读

用户头像

is_179289

暂无简介

举报
人工智能导论试验报告:吃豆人游戏必精於考人学冷呼«HARBININSTHUTEDFTECHNOLOGY人工智能导论实验报告学院:计算机科学与技术学院专业:计算机科学与技术2016.12.20目录TOC\o"1-5"\h\z人工智能导论实验报告1HYPERLINK\l"bookmark8"\o"CurrentDocument"一、简介(对该实验背景,方法以及目的的理解)2.实验背景2.实验方法3HYPERLINK\l"bookmark11"\o"CurrentDocument",实验目的3方法(对每个问题的分析及解决问题的方法)3HYPERL...
人工智能导论试验报告:吃豆人游戏
必精於考人学冷呼«HARBININSTHUTEDFTECHNOLOGY人工智能导论实验学院:计算机科学与技术学院专业:计算机科学与技术2016.12.20目录TOC\o"1-5"\h\z人工智能导论实验报告1HYPERLINK\l"bookmark8"\o"CurrentDocument"一、简介(对该实验背景,方法以及目的的理解)2.实验背景2.实验方法3HYPERLINK\l"bookmark11"\o"CurrentDocument",实验目的3方法(对每个问题的及解决问题的方法)3HYPERLINK\l"bookmark33"\o"CurrentDocument"Q1:DepthFirstSearch3陶箱成/考R摩HARB同IN5THUTEDFTECHNOLOGYTOC\o"1-5"\h\zQ2:BreadthFirstSearch4HYPERLINK\l"bookmark39"\o"CurrentDocument"Q3:UniformCostSearch5HYPERLINK\l"bookmark18"\o"CurrentDocument"Q4:A*Search6HYPERLINK\l"bookmark20"\o"CurrentDocument"Q5:CornersProblem:Representation6HYPERLINK\l"bookmark22"\o"CurrentDocument"Q6:CornersProblem:Heuristic6HYPERLINK\l"bookmark24"\o"CurrentDocument"Q7:EatingAllTheDots:Heuristic7HYPERLINK\l"bookmark26"\o"CurrentDocument"Q8:SuboptimalSearch7实验结果(解决每个问题的结果)7Q1:DepthFirstSearch7Q2:BreadthFirstSearch9Q3:UniformCostSearch10Q4:A*Search12HYPERLINK\l"bookmark49"\o"CurrentDocument"Q5:CornersProblem:Representation13HYPERLINK\l"bookmark55"\o"CurrentDocument"Q6:CornersProblem:Heuristic14HYPERLINK\l"bookmark59"\o"CurrentDocument"Q7:EatingAllTheDots:Heuristic14HYPERLINK\l"bookmark63"\o"CurrentDocument"Q8:SuboptimalSearch15HYPERLINK\l"bookmark67"\o"CurrentDocument"自动评分15HYPERLINK\l"bookmark69"\o"CurrentDocument"总结及讨论(对该实验的总结以及任何该实验的启发)15一、简介(对该实验背景,方法以及目的的理解)实验背景1)自人工智能概念被提出,人工智能的发展就受到了很大的关注,取得了长足的发展,成为一门广泛的交叉和前沿科学。到目前,弱人工智能取得了长足的发展,而强人工智能则暂时处于瓶颈。2)吃豆人Pacman居住在亮蓝色的世界里,在这个世界有弯曲的走廊和美味佳肴。游戏的目的就是控制游戏的主角小精灵吃掉藏在迷宫内所有的豆子,并且不能被幽灵抓到。高效地浏览世界将是吃豆人掌握世界的第一步。3)通过本学期的学习我们已经初步掌握了人工智能的基本知识,在实验中则应用这些知识使用人工智能操纵吃豆人游戏。1)在本实验中,Pacman智能体将找到通过迷宫世界的路径既包括到达一个指定的位置,也包括高效地搜集食物。我们编辑文件search.py和searchAgents.py,编写一系列吃豆人程序,包括到达指定位置以及有效的吃豆,并将其应用到Pacman场景,完成对相关人工智能功能的完善。2)在本实验中,我们对下面8个问题进行研究,针对每个问题提出解决方法,逐步完成吃豆人游戏:Q1:DepthFirstSearchQ2:BreadthFirstSearchQ3:UniformCostSearchQ4:A*SearchQ5:CornersProblem:RepresentationQ6:CornersProblem:HeuristicQ7:EatingAllTheDots:HeuristicQ8:SuboptimalSearch3.实验目的1)完成实验报告中的问题,编写一系列吃豆人程序,包括到达指定位置以及有效的吃豆;2)通过分析吃豆人游戏巩固课堂上所学内容;3)复习python语言的使用。二、方法(对每个问题的分析及解决问题的方法)Q1:DepthFirstSearch应用深度优先算法找到一个特定的位置的豆,我们通过depthFirstSearch函数实现深度优先搜索的功能。深度优先遍历的方法是,从图中某顶点v出发:1)访问顶点v;2)依次从v的未被访问的邻接点出发,对图进行深度优先遍历;直至图中和v有路径相通的顶点都被访问;次陶箱闯了次R摩YWHARBININ5T盯UTEOFTECHNOLOGY3)若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。深度优先搜索的顺序如下图所示:深度优先搜索在depthFirstSearch中,由于搜索过程中火重复访问到部分节点,所以需要对于每个节点设置标记,以指示该节点是否被访问过。先将每个后继节点压入搜索栈中,然后以深度优先的顺序进行搜索,判定是否符合目标状态,并将符合结果的节点放入结果集。Q2:BreadthFirstSearch应用宽度优先算法找到一个特定的位置的豆,我们通过breadthFirstSearch函数实现深度优先搜索的功能。广度优先搜索算法的思想是:从图中某顶点v出发,在访问了丫之后依次访问v的各个未曾访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,并使得“先被访问的顶点的邻接点先于后被访问的顶点的邻接点被访问,直至图中所有已被访问的顶点的邻接点都被访问到。如果此时图中尚有顶点未被访问,则需要另选一个未曾被访问过的顶点作为新的起始点,重复上述过程,直至图中所有顶点都被访问到为止。如下图:在breadthFirstSearch中,大体的搜索思路与深度优先算法一致,只是搜索的次序发生了变化。在这里注意,在深度优先搜索和广度优先搜索方法中,我们使用的图搜索算法是一样的,但是涉及到具体的数据结构却是不同的。在深度优先搜索算法中,我们使用栈进行操作,在深度优先搜索算法中,我们使用队列进行操作,如下图所示。这两种数据结构的不同之处就在于其中元素的输出次序,在深度优先搜索中需要按照压栈顺序的逆序进行搜索,咋子广度优先搜索中需要按照入队顺序的顺序进行搜索。147defdepthFirstSearch(probt.errT):148#深度优先搜索149searchstack=util.Stack()1S5▼defbreadThFirstSearch(probtern):186#广曳优先搜索187"***YOURCODEHERE***"188189searchQueue=util.Queue()Q3:UniformCostSearch很多情况下,路径中的代价是可以改变的,在这个问题中,我们完成代价一致搜索方法。代价一致搜索,其实就是一个贪心搜索,取代扩展深度最浅的节点,代价一致搜索扩展的是人工智能实验报告路径消耗最低的节点n。如果所有单步耗散都相等的话,这种算法就和广度优先搜索算法是一样的。不过,这样在扩展到一个具有能返回到同一状态的零耗散行动的节点时就会陷入无限循环。在uniformCostSearch函数中,我们计算每条路径的总代价,将总代价作为优先级进行搜索,待搜索序列存储于队列中。对于每个节点,使用代价函数getCostOfActions计算其所产生的代价,并依次作为搜索的优先级进行搜索。同样的,对于每个节点添加是否被访问的标记。Q4:A*SearchA*算法是一种静态路网中求解最短路最有效的直接搜索方法,也是许多其他问题的常用启发式算法,对代价一致搜索算法进行了改进,加入了一个估计代价h。公式示为:f(n)=g(n)+h(n),其中f(n)是从初始状态经由状态n到目标状态的代价估计,g(n)是在状态空间中从初始状态到状态n的实际代价,h(n)是从状态n到目标状态的最佳路径的估计代价(对于路径搜索问题,状态就是图中的节点,代价就是距离)。在本实验中,我们使用曼哈顿距离作为启发函数。在aStarSearch函数中,我们首先搜索具有最低组合成本和启发式的节点。类似于问题三,我们计算每个节点的代价,并以此为依据搜索产生结果集,在搜索的过程中,还需要标记节点是否已经被访问过。Q5:CornersProblem:Representation找到所有的角落,在角落迷宫的四个角上面有四个豆,通过这个函数找到一条访问所有四个角落的最短的路径。在CornersProblem类中,我们使用_init__函数存储墙壁的位置,吃豆人的起点和角落位置,定义新的函数getStartState用于获得节点起始状态,isGoalState函数判断当前节点是否为目标节点,getSuccessors函数返回后继状态,所需的操作以及代价,getCostOfActions函数计算动作序列所需的代价。查找后继节点时,在四个方向一次遍历,使用directionToVector移动位置,如果没有墙,则把下一个的状态,动作,花费的步数加入下一节点Q6:CornersProblem:Heuristic构建合适的启发函数,完成问题5中的角落搜索问题。在问题五使用的CornersProblem类中定义cornersHeuristic函数,为角落问题构造启发函数。在cornersHeuristic函数中使用了GetNextNodes函数获取下一^个节点,isGoal函数判断是否为目标。Q7:EatingAllTheDots:Heuristic用尽可能少的步数吃掉所有的豆子。这个问题利用之前A*算法可以很容易找到解,此种方法在这里不再详述。下面在FoodSearchProblem类中定义函数foodHeuristic,构建合适的启发函数完成豆子搜索(启发式)问题。Q8:SuboptimalSearch次最优搜索,定义一个优先吃最近的豆子的函数,以此来提高搜索速度。补充AnyFoodSearchProblem目标测试函数,并在ClosestDotSearchAgent当中添加findPathToClosestDot函数,用于寻找最近的豆子。三、实验结果(解决每个问题的结果)Q1:DepthFirstSearchpythonpacman.py-ltinyMaze-pSearchAgent年:\.人丁智能导[今\室脸\石三打『11_门0触\用江匚卜>r.y-.hnnpaCTTisn.py-1t.iryVaTP一口Agpnt.r^Rfir.?h\g=!T-it.'|iirjngfi]'-ir+.innripp+.-iFiTR-fS;R3Tc-:l-iITuearch.\ssnt-lusinstvpe?ODitionSearc?iPrcblenPath:o'jndwith二口二alccstofIDinC.Csecondsearchnodeseipandei:20Pacmnemsrs&svicTorious!Score:53CAverageScore:500.0Scores:500,0^inRate:1/1(LIC)Record:Winpythonpacman.py-lmediumMaze-pSearchAgentF:工智仑、实验:二口:irch_C口日口\u0二rth^F■了thempicnan.py-1ncdiumllasc-pEcarckA^cnt[SearcrA5ent]usir.gZLn:tiondepthFirs-SearchL.^p?iri-kA^pr.+Jn^:r.gpmMpm十y?aPns:产.「nW口an-tPrri卜1口口pathfcuiidwithtctaicDstof130ir.3.Cseconds^e£rchnodesexpar.dsd:Lo2Pacir^neniers5g^iR¥thcinpacnian.py-1bigMaze-z.5-pSudTchAgent[^eazchAgent]usingfunctiondepthFiioiSearcli[[SeaTchAgent]usingprobLeintypePosit!onSearchPrableniPathfoLindwithtjtalz:ostof210in0-(JsecondsSearchnodesexpanded:569PacmanemergesviutDrious!Ec:ore:J00^veragcScore:3j3,Jdecree:E:〕3・JWinRate:1/1(laOD)Record:Win集€SJ3BPacmanQ2:BreadthFirstSearchpythonpacman.py-lmediumMaze-pSearchAgent-afn=bfsE:search_:2Dd&\search>pythonpacman.py-1mediiinflla工白-p^earcViAgent-afn=bfg[SearchAgent]usingfunctionbfeIESearchAgent]usingproblemtypePositionSearchProbleinPathfoundwithtotalcostof68in。.口secondsSearchnodesespanded:269Pacroanemergesvictoriaus!Jcdtb:442TOC\o"1-5"\h\zAverageScnre:442.0Scores:442.0WinRate:L/l(LOO)Kecard:WinSCORE:-30pythonpacman.py-lbigMaze-pSearchAgent-afn=bfs-z.5W:%、I智能导论"实喔Pear匚h_C口壶、SEarch>pythonpacirian_py_1bigMaze"pSearchAgent-a£n=bfs-z.5LSeai'chAgentJusingfunctiijnbfsTSaarchAgBntJusingprablamtypePositionSaarchProbibeiPathfoundwithtotalcostui210in0.0secondcSearchnode:=:expanded:620PacmarLVLctDriQi-is!Score:300AvaragBScora:300.0pcires:300.D忻-H三作:1卜(I..ifKecord:WinQ3:UniformCostSearchpythonpacman.py-lmediumMaze-pSearchAgent-afn=ucsE:'-i/'\ZLWSt^Tt&V'r;^^,\search_CLide'iSBarch>pythanpacman.py-1medii-inJlaze-pSe:archAgent-afn=u3sFSearchAgent]usingfunctionlie[SearchAgent]usingproblemtypePositLonSearchProbLeiuPathfoundwithtotalcastaf68in0.1secondsSearchnodesexpanded:269Pacmanemergesvictorious!Score:442AverageScore:442-Dcores:442.0NinRate:1/1(1.Hl)Record:Ninpythonpacman.py-lmediumDottedMaze-pStayEastSearchAgentE;\search_Code\search>pytliotipacmarLpy-1ffiedimnDottedlaaa-pStayEastSearcliAgentWarning:thisdoesnotlooklikearegularsearchmazePathfoundtfithtotalcostof1in0-0secondsEearchnndeL:EZE-anded:186Pacmanemerge5ui匚七口厂!_口心!Scare:646AverageScora;646.0Scofes:646.(IknRate;1/1(1.00.)Tricord:MinSCORE:72pythonpacman.py-lmediumScaryMaze-pStayWestSearchAgent解冬必看Q考R婚冷*:气HARB剧IN5TI7UTEDFTECHNOLOGYE:)人工智能导论-验\sem匚匚11_(2口|:1日15ehi•匚h〉pythcinpacraan.py-1irediumScaryNais-pStayMestSearchAg.entPathfoundwithtotalcostof6E715479864in0.0secondsEearc?.nodesexpanded:103PacrarLemer§ec:victorious!Score:418TOC\o"1-5"\h\zeraseScore:418.0Scares:4IB.IlajiRate;1/1(1.DO)Kscord:IlinSCORE3wBrananQ4:A*Searchpythonpacman.py-lbigMaze-z.5-pSearchAgent-afn=astar,heuristic=manhattanHeuristic;:「人工冒能导实独乌earEbGaythnnpaeneri.py-1bigflaze-z-5-pSearchAgent-a^=83111?,heuristic^rTarljittat:peurijEt-ic[jBarchAEem]usingfunction,astarandheurislicmanhattat^HBuristic|[Eear'ztiAgen.t]usln^.prct'lcmtypePositi'□nuEarchPrab1eniPathioimdwithInta!costaf210in0.4secandsSearchnodesgip:dnded:549racmanerrergesvictorioijs!Score:300TOC\o"1-5"\h\zftvETageScare:300.0pcnre2!!300.0MinRate:171(1.JX)Record:VinC5.IMPJCW-XJfiQ5:CornersProblem:Representationpythonpacman.py-ltinyCorners-pSearchAgent-afn=bfs,prob=CornersProblempythonpacman.py-lmediumCorners-pSearchAgent-afn=bfs,prob=CornersProblemE:l^^\se3rch_Code\searcli>pythQnpacnen.py-1nedrunComers-pSearchAgent-afn=bfs:1prob=CornersProbiem[£mar匚hAEect]usingfunctionbis[Searchf'.Eent]UEinsprctlemtypeComersPrablemFathfuundwithtotalcostof10&in।.1secondsSearchnodeEezpsLnded:1966Paemanenerg.esvictorious!Score:434Average女otb:43i0Scorgs:434,0ffinRate:1/1(1.Ld)Rje电dt出tinyijC518BPacmanQ6:CornersProblem:Heuristicpythonpacman.py-lmediumCorners-pAStarCornersAgent-z0.5g::1Al.工智能导论\实验白虹口dGj'searchApFthcinpacnsn.py-1mediunCorijars-pAStarCDTijecrsAgant-z0.5Fathfoundyrithtotalcostaf106in0.3seenndsMarchnodec白ipandsd:692F'acinaneniErgesvictarinus!Score:434^veragEEcore:434.0Scores:434a0finRate:1/1(1.00)Kecurd:Vin播CSJfcPacmanSCORE:-17Q7:EatingAllTheDots:Heuristicpythonpacman.py-ltrickySearch-pAStarFoodSearchAgentE:\searctccade\search>pythnnpacman.py-1trLckySearch-pAStarFoadSearchAgentPathfoundwithtotalcnstof6Hin64-5secondspearchnodesexpanded:4137Pacmaneirergesvictorious!Scare:570TOC\o"1-5"\h\zeragaScore:57D.0Scores:570.0VinRate:L/l(L00)Kernrd:Vin7^CS18SPacmanSCORE:31Q8:SuboptimalSearchpythonpacman.py-lbigSearch-pClosestDotSearchAgent-z.5idJ一替比二论;二世,EBarizhj"Dde\search?pythDnp/匚:man.py~1bigSearch-pC1osestDotSearchAgent-z.5[SearchAgentlusingfunctiondepth?irstSearch[SearcliAsent]usingprcblsmtypePositionSaaxchProb1eiriPath.foundwithcost350.PacmaneirergesvJctoriorjs!Score:2360AverageScore;2360.0ScareE:2360.0VinRate;1/1(LC0:Recjrd;Vin7屈Plscman—SCORE:279自动评分Finishedat13:42:45ProvisionalgradesQuestionql:2/2Questionq2:3/3Questionq3:3/3Questionq4:3/3Questionq5:3/3Questionq6:3/3Questionq7:5/4Questionq8:3/3Total:26/25四、总结及讨论(对该实验的总结以及任何该实验的启发)1.在这个实验中,我们对深度优先搜索、广度优先搜索、代价一致搜索和A*算法四种搜嗡窗闻7次a学冷HARBINiNSTtrUTEDFTECHNOLOGY索方法进行了python代码实现,对这四种方法有了进一步的了解。与深度优先搜索和广度优先上搜索方法相比,代价一致搜索方法的效率更高,在代价一致上搜索方法失效时,等同于广度优先搜索。A*算法是最有效的直接搜索算法,使用公式进行预处理,这样能够省略大量不必要的搜索路径,提高了效率。.在启发式搜索中,估价函数非常重要,准确的估价函数能够增大搜索函数的效率并且具有相当高的准确性。由此,在启发式搜索中对位置的估价是十分重要的。采用了不同的估价可以有不同的效果。.在本次实验中使用了大量python语言中的类,对之前的python知识有了很大的扩展。
/
本文档为【人工智能导论试验报告:吃豆人游戏】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索