一种电脑鼠走迷宫算法的设计与实现
- 格式:pdf
- 大小:483.80 KB
- 文档页数:4
一种电脑鼠走迷宫算法作者:周杰来源:《电脑知识与技术》2018年第03期摘要:该文通过对电脑鼠走迷宫算法的研究,提出了一种电脑鼠走迷宫算法,该算法引用了斜线K和Z用以更新期望坐标,并将迷宫分割为多个部分,以斜线K上的点为起点坐标,下一条斜线K上的点为期望终点坐标,找到起点坐标和终点坐标的最优解,以局部最优,引出全局最优找到最佳路径,并与传统走迷宫算法进行比较,提高了迷宫搜索效率。
关键词:迷宫;斜线;局部最优;最佳路径中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)03-0053-031 概述电脑鼠是一种机电一体化装置,是由单片机、传感器、机电运动部件组成的一种能在迷宫行走的小型机器人可以通过预先设定的算法,探索迷宫,可以找到一条从预设的起点到终点的最佳路径,运行环境是由一个16X16正方形单元格所组成的迷宫,其中单元格的大小为18cmX18cm,文献[1][2]给出了电脑鼠走迷宫的相关规则,每一个单元格有相应的挡板组成,电脑鼠的目的是在最短的时间内找到出口,在整个电脑鼠中最重要的是硬件的可靠性和算法的优劣,在当今单片机迅速发展的时代,硬件稳定性上已经趋于稳定,本文主要研究和设计搜索迷宫算法,并提出了一种电脑鼠搜索迷宫的算法。
2 迷宫环境建模电脑鼠不具有思维能力,它只能按照我们设定的算法运行,因此需要模拟现场运行环境[6][7].构建一个16X16的迷宫,迷宫的水平方向为Y轴,垂直方向为X轴,第一个坐标为(1,1),那么依次下去最上角的坐标为(16,16)。
迷宫构建图,如图1 所示,迷宫内的挡板信息未知。
假设起点为(1,1)终点为(16,16),现在规定,X方向为地理北,Y方向为地理南,如图2所示。
对于当前坐标,和下一步目标,两个坐标的差值比如(X1,Y1)-(X2,Y2)。
(1,0)表示电脑鼠向北前进一步。
其中差值(0,1)表示向东前进一步,(-1,0)表示向南前进一步,(0,-1)表示向西前进一步。
HUNAN CITY UNIVERSITY 数据结构课程设计报告设计题目:老鼠走迷宫专业:计算机科学与技术学生姓名:邓宇班级学号: 0906401-23指导教师:杨格兰、胡奇光2011 年 6 月 18 日一、设计时间2011年6月20日——24日二、设计地点湖南城市学院第一实验楼计算机系机房509三、设计目的1.培养实际工作所需要的动手能力,进一步熟悉基本概念;2.熟练掌握对实际问题的抽象技能,了解程序基本的流程;3.培养查阅资料,独立思考问题的能力。
四、设计人邓宇五、指导老师杨格兰、胡奇光六、设计课题老鼠走迷宫开发环境:Visual Studio 2010 Ultimate UML Activity DiagramVisual C # 2008 Express EditionsAdobe Photoshop CS4七、基本思路及关键问题的解决方法技术要求:程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。
游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。
要求:1、老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;解决方案:老鼠图片形象可以用Photoshop来制作,通过键盘按键事件发送消息到对象(老鼠),实现老鼠的移动。
2、迷宫的墙足够结实,老鼠不能穿墙而过;解决方案:在老鼠每一步的移动中检测是否撞墙,若是则停止走动。
由于地图是图片,要检测就需要取出墙壁那点的颜色(显然不是白色),然后作比较来作碰撞检测。
3、若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败;解决方案:加载定时器,设定60秒钟,若在规定的时间,及时间变成0时,弹出对话框提示用户游戏失败。
4、添加编辑迷宫功能,可修改当前迷宫。
解决方案:备用一张地图图片资源,可以用于更换地图。
八、算法及流程图Visio流程图:因为这是面向对象而非面向工程的程序设计,事件和判断都具有同时性和并发性。
UML建模图如下:九、调试过程中出现的问题及解决方法本次课程设计出现最严重的问题是通过键盘来如何控制对象(老鼠)的移动,刚开始做时试用了多种方法但是没有效果。
一、实习问题:电子老鼠闯迷宫二、问题描述:有一只电子老鼠被困在如下图所示的迷宫中。
这是一个7*7单元的正方形迷宫,黑色部分表示建筑物,白色部分是路。
电子老鼠可以在路上向上、下、左、右行走,每一步走一个格子。
现给定一个起点start和一个终点finish,求出电子老鼠最少要几步从起点走到终点。
三、问题分析:该问题可用分支限界法来解决。
迷宫问题的解空间是一个图。
解此问题的队列式分支限界法从start开始将它作为第一个扩展结点。
与该扩展结点相邻并且可达的方格成为可行结点被加入到活结点队列中,并且将这些方格标记为1,即从起始方格start到这些方格的距离为1。
接着,算法从活结点队列中取出队首结点作为下一个扩展结点,并将与当前扩展结点相邻且未标记过的方格标记为2,并存入活结点队列。
这个过程一直继续到算发搜索到目标方格finish或活结点队列为空时为止。
在实现算法时,首先定义一个表示迷宫上方格位置的类Position,它的两个私用成员row 和col分别表示方格所在的行和列。
在迷宫的任何一个方格处,电子老鼠可沿右、下、左、上4个方向进行。
沿这4个方向的移动分别记为移动哦0,1,2,3。
在表中,offset[i].row和在实现上述算法时,用二维数组grid表示所给的方格阵列。
初始时,grid[i][j]=0,表示该方格允许走;而grid[i][j]=1表示该方格被封锁,不允许走。
为了便于处理方格边界的情况,算法在所给方格阵列四周设置一道“围墙”,即增设标记为“1”的附加方格。
算法开始时测试初始方格与目标方格是否相同。
如果这两个方格相同,则不必计算,直接放回起始位置标记为2。
由于数字0和1用于表示方格的开放或封锁状态,所以在表示距离时不用这两个数字,因而将距离的值都加2。
实际距离应为标记距离减2。
算法从起始位置start开始,标记所有标记距离为3的方格并存入活结点队列,然后依次标记所有标记距离为4,5…..的方格,直至到达目标方格finish或活结点队列为空时为止。
东南大学第二届IEEE标准电脑鼠走迷宫竞赛电脑鼠原理及其应用机电动力试验平台第二届IEEE标准电脑鼠走迷宫竞赛论文东南大学第二届IEEE标准电脑鼠走迷宫竞赛电脑鼠原理及其应用机电动力试验平台目录一.软件程序框图 (3)二.参赛软件研发过程 (4)三.软硬件调试过程 (4)四.各组员分工 (4)五.体会心得 (5)附录 (6)参考书目 (9)软件程序框图东南大学第二届IEEE标准电脑鼠走迷宫竞赛电脑鼠原理及其应用机电动力试验平台参赛软件研发过程在void main()函数中,采用压栈的方式进行电脑鼠搜索,数组uint8 GmcCrossway[MAZETYPE*MAZETYPE]用于暂存未走过支路坐标。
数组uint8 GucMapBlock[MAZETYPE][MAZETYPE]记录每个点的地图信息,初始化为0x00。
函数void mouseGoahead(int8 cNBlock)、void mazeSearch(void)、void mouseTurnleft(void)、东南大学第二届IEEE标准电脑鼠走迷宫竞赛电脑鼠原理及其应用机电动力试验平台void mouseTurnright(void)、void mouseTurnback(void)和void objectGoTo(int8 cXdst, int8 cYdst)控制电脑鼠的运动状态。
void mapStepEdit(int8 cX, int8 cY)为制作等高图函数,它把记录等高值的数组uint8 GucMapStep[MAZETYPE][MAZETYPE](初始化为0xff)赋值。
当电脑鼠搜索时无方向可走时就按照这个等高图的信息退回上个点,冲刺时也是一样的道理。
另外,为了缩短转弯时间,并且保证电脑鼠的稳定性,采取转弯时整步,直走时半步。
我们在Mouse_Drive.c文件中,加入全局变量int8 maincheck,初始化为0(其中0为不转弯,1为转弯)。
摘要 摘 要 一种电脑鼠走迷宫的算法■ 上海商学院 张新谊─────────────────────────────────────────────────────────────────电脑鼠(Micromouse )实际上是一个由微处理器控制的,集感知、判断、行走功能于一体,能够自动寻找最佳路径到达目的地的小型机器人。
国际电工和电子工程学会(IEEE )每年都要举办一次国际性的电脑鼠走迷宫竞赛。
本文介绍一种能满足IEEE 学会颁布规则的电脑鼠走迷宫算法。
───────────────────────────────────────────────────────────────── 关键词 运行时间 迷宫时间 碰触 排障时间─────────────────────────────────────────────────────────────────电脑鼠的英文名称为Micromouse ,实际上是一个由微处理器控制的,集感知、判断、行走功能于一体,能够自动寻找最佳路径到达目的地的小型机器人。
它可以在“迷宫”中自动感知并记忆迷宫地图,通过一定的算法,寻找一条最佳路径,以最快的速度到达目的地。
1997年,在美国举办了第一届电脑鼠竞赛,随后,电脑鼠竞赛传入欧洲,首届欧洲电脑鼠竞赛于1980年在伦敦举办,之后英国的电脑鼠比赛便由电子工程协会(IEE )主办。
1980年11月日本电脑鼠协会(JMA )在东京举办了第一届竞赛,此后,日本每年都要举办一届电脑鼠竞赛。
我国台湾也于1986年10月举办了首届电脑鼠比赛。
现在国际电工和电子工程学会(IEEE )每年都要举办一次国际性的电脑鼠走迷宫竞赛,各国选手报名踊跃,主要是大学生,为此部分大学还开设了“电脑鼠原理和制作”选修课程。
由于电脑鼠要由参赛选手自己设计制作,不仅要求选手具有嵌入式系统应用﹑传感器﹑控制技术等多方面的知识、经验和实践能力,还要求具有编写寻找最佳路径算法的能力。