电脑鼠走迷宫死区排除算法

合集下载

死路排除算法_渗透法_待翻译_华已改

死路排除算法_渗透法_待翻译_华已改

电脑鼠走迷宫大赛探索过程算法优化研究——死路排除算法——死区域算法0摘要电脑鼠走迷宫大赛是由国际电工和电子工程学会(IEEE)举办的人工智能领域的一项国际性赛事,集机械、电子、控制、光学、程序设计和人工智能等多方面科技知识于一体[1],具有很高的知名度。

迷宫算法的优劣直接影响比赛的最终成绩。

本文从经典迷宫算法入手,先后提出了能排除单行当列死路的“死路排除算法”和能够排除任意形状死区域的“渗透法”,然后通过测试验证两种改进算法的优越性。

改进算法的核心思想是通过已经获得的迷宫信息排除不包含最短路径信息的死区域。

同时,文中创造性的将“渗透思想”用于迷宫算法当中,很好的实现了死区域的判定与排除。

与经典算法相比,改进算法在时间、空间方面都有良好的优化效果。

1背景简介电脑鼠走迷宫大赛是国际电工和电子工程学会(IEEE)每年都会举办的一项国际性赛事,于1972年由美国机械杂志发起。

比赛中的电脑鼠是一个小型的由微处理器控制的机器人车辆,在复杂迷宫中具有译码和导航功能。

该比赛自推出以来,受到了世界各国师生的青睐。

2007年和2008年,上海市计算机学会率先在中国主办了两次IEEE标准电脑鼠走迷宫邀请赛(长三角地区),有三十多所院校参加,反响强烈。

2009年比赛范围扩展到全国,共有9个赛区的52所高校参赛[2]。

1.1电脑鼠走迷宫大赛规则[3]电脑鼠的基本功能是从起点开始走到终点,这个过程称为一次“运行”,所花费的时间称为“运行时间”;电脑鼠从第一次激活到每次运行开始所花费的时间称为“迷宫时间”;电脑鼠在比赛时手动辅助的动作称为“碰触”。

竞赛使用这3个参数,从速度、求解迷宫的效率和电脑鼠的可靠性三个方面来进行评判。

电脑鼠的得分是通过计算每次运行的“排障时间”来衡量的,即将迷宫时间的1/30加一次运行时间;如果未被碰触过,则再减去10s(奖励时间),这样得到的就是排障时间。

电脑鼠在迷宫中停留或运行的总时间不可超过15min,在限时内允许运行多次。

C语言老鼠走迷宫(单路径)算法详细讲解

C语言老鼠走迷宫(单路径)算法详细讲解

C语⾔⽼⿏⾛迷宫(单路径)算法详细讲解最近在学习C语⾔的⼀些经典算法,其中遇到了⼀点困难,导致卡进度了。

琢磨了很久,在绘制流程图时,突然灵感⼤开理解了,⽼⿏⾛迷宫算法的奇妙。

所以写了这个,⼀来是⽅便以后右和我类似的同学⾃学时,遇到这个问题可以找到解决的⽅法,⼆来是为了记录⼀下⾃⼰的思路,以免以后记不住。

俗话说得好,好记性不如烂笔头。

那么废话不多说,进⼊正题。

关于C语⾔⽼⿏⾛迷宫算法,⽹上有很多案例,CSDN上⾯也有很多。

⼤家都是能找到的。

基本上的思路都是利⽤数组模拟迷宫,利⽤函数的递归算法来实现的。

以下为⽼⿏⾛迷宫(单路径)的代码:1# include <stdio.h>2# include <Stdlib.h>3int vis(int, int);45int maze[7][7] = {{2, 2, 2, 2, 2, 2, 2},//绘制⼀个7x7的迷宫6 {2, 0, 0, 0, 0, 0, 2},7 {2, 0, 2, 0, 2, 0, 2},8 {2, 0, 0, 2, 0, 2, 2},9 {2, 2, 0, 2, 0, 2, 2},10 {2, 0, 0, 0, 0, 0, 2},11 {2, 2, 2, 2, 2, 2, 2}};12int startI = 1, startJ = 1;//定义起点13int endI = 5, endJ = 5;//定义终点14int success = 0;//定义终点变量1516int main (){17 int i, j;18 //显⽰迷宫19 printf("显⽰迷宫: \n");20 for(i = 0; i < 7; i++){21 for(j = 0; j < 7; j++){22 if(maze[i][j] == 2)//当数组内元素为2时就是墙23 printf("■ ");24 else printf("□ ");//否则就说明其余是路25 }26 printf("\n");27 }2829 if(vis(startI, startJ) == 0)//调⽤⾛迷宫函数vis,寻找从起点到终点的路径,若⽆法到达此处输出30 printf("\n没有找到出⼝ \n");31 else {32 //输出解密后的路径3334 printf("\n迷宫路径为:\n");35 for(i = 0; i < 7; i++){36 for(j = 0; j < 7; j++){37 if(maze[i][j] == 2)//同上,2代表墙38 printf("■ ");39 else if(maze[i][j] == 1)//在29⾏处调⽤vis函数后,就已经将迷宫的路径解答出来了. 1代表所⾛的路径及迷宫正确⾛法40 printf(" ");41 else printf("□ ");//否则就是不正确的路42 }43 printf("\n");44 }45 }4647 return 0;48}4950int vis(int i, int j){//迷宫解密函数51 maze[i][j] = 1;//将当前位置定义为152 if(i == endI && j == endJ) success = 1;//若到达终点,令终点为153 if(success != 1 && maze[i][j+1] == 0) vis(i, j+1);//向右探索路径,可以就执⾏,不⾏就执⾏下⼀条语句54 if(success != 1 && maze[i+1][j] == 0) vis(i+1, j);//向下探寻路径,可以就执⾏,不⾏就执⾏下⼀条语句55 if(success != 1 && maze[i][j-1] == 0) vis(i, j-1);//向左探索路径,可以就执⾏,不⾏就执⾏下⼀条语句56 if(success != 1) maze[i][j] = 0;//判断是否到达终点,没有就将路径清零57 return success;58}备注之类的我都写好了。

电脑鼠走迷宫竞赛ppt教材

电脑鼠走迷宫竞赛ppt教材
• 光电接收管
– IRM8601S
• PSD器件
– GP2D12
• CCD • 超声波
电脑鼠的简介
电脑鼠 |基于LM3S615微控制器
• 电机
– 步进电机 – 直流电机
• 减速 • 速度反馈
电脑鼠的简介
电脑鼠 |基于LM3S615微控制器
电脑鼠的简介
电脑鼠迷宫竞赛的计分规则说明
• 迷宫用于检验电脑鼠的设计 电脑鼠 |基于LM3S615微控制器
c”文件里修改系统定时器中断和定时器0中断的入口地址 ,如图所示:
• 2 能正确判断环境的能力 MicroMouse615迷宫智能老鼠
——基于Cortex-M3
ARM cortex-M3内核
• 3 记忆路径的能力 电脑鼠 |基于LM3S615微控制器
电脑鼠的基本功能是从起点开始走到终点,这个过程称为一次“运行”,所花费的时间称为“运行时间”。
用途提示: 1、在开发过程中,或迷宫竞赛开始前用于显示
红外线传感器的灵敏度,以方便进行调试。
2、在验证自己迷宫算法的时候,用数码管显示 自己所处的迷宫坐标和采集的墙壁信息。
3、键盘可以设置为单步验证各个功能模块,并 在数码管上进行显示,比如步进电机的转速,方向 等等。
4、……
电脑鼠 |基于LM3S615微控制器
MicroMouse615迷宫电脑鼠
——基于Cortex-M3
1234567
电脑鼠 电脑鼠 电脑鼠 电脑鼠 简介 走迷宫竞赛 走迷宫演示 走迷宫算法
走迷宫 电脑鼠 电脑鼠 标准套件 调试例程 传感器校正
电脑鼠 |基于LM3S615微控制器
电脑鼠的简介
• 电脑鼠是一种具有人工智能的轮式机器人

老鼠走迷宫的算法分析

老鼠走迷宫的算法分析

一种电脑鼠走迷宫的算法电脑鼠走迷宫的算法1探测策略电脑鼠走迷宫可以采用全迷宫探索策略,即将迷宫的所有单元均搜索一次,从中找出最佳的行走路径。

这种策略需要有足够的时间或探测次数,但在IEEE竞赛规则中每场竞赛只有15分钟的时间,因此是不可能的。

另一种方法是部分迷宫探索策略,即在有限的时间或探测次数下,只探测迷宫的一部分,从中找出次最佳的路径,显然只能采用这种策略。

电脑鼠在一巷道内行走,如果最后无路可走,则该巷为死巷。

电脑鼠在任一单元内,可能的行走方向最多只有三个(前、左、右),如果有二个或二个以上的可能行走方向,称为交叉,遇有交叉时,由于有多个可以行走的方向,在行走方向的选择上,可有下面的几种选择法则:•右手法则:遇有交叉时,以右边为优先的前进方向,然后是直线方向、左边方向。

•左手法则:遇有交叉时,以左边为优先的前进方向,然后是直线方向、右边方向。

•中左法则:遇有交叉时,以直线为优先的前进方向,然后是左边方向、右边方向。

与此类似的还有中右法则。

•乱数法则:遇有交叉时,取随机值作为前进方向。

•向心法则:由于终点在迷宫的中心,遇有交叉时,以向迷宫中心的方向为优先的前进方向。

2标记为了记忆迷宫的详细信息,需要对迷宫单元的位置进行线路标记。

全迷宫共有16×16个单元组成,可采用二维坐标方式标记,即用每个单元的XY坐标表示,如起点可标记为(0,0),终点为(7,7)。

此外,还需要对迷宫单元的可行进方向进行标记,可采用绝对方位或相对方位二种方式。

绝对方位:这是一种与电脑鼠行进方向无关的标记方式,以一个四位的二进制数,分别表示“东”﹑“西”﹑“南”和“北”四个方向。

以1表示允许行进(无墙壁),0表示不允许行进(有墙壁)。

相对方位:这是一种与电脑鼠行进方向有关的标记方式,以一个三位的二进制数即可实现标记,分别表示“前”“左”“右”,以1表示允许(无墙壁),0表示不允许(有墙壁)。

3阻断在电脑鼠试跑过程中或在最后冲刺时,需要对部分路径进行“阻断”,即在发现某条路径是死路(只有入口而无出口)时,在该路径的入口处(一般是交叉点)设置标记,即将入口的线路标记由1改为0。

电脑鼠走迷宫竞赛情况介绍

电脑鼠走迷宫竞赛情况介绍
➢ 真正的首场电脑鼠迷宫竞赛于1979年由IEEE
在纽约举行;
陕西科技大学电气与信息工程学院
电脑鼠走迷宫竞赛概述—起源
✓ 1991年以来,国际电工和电子工程学会 (IEEE)每年都要举办一次国际性的电脑鼠 走迷宫竞赛,自举办以来参加国踊跃,为此 许多大学还开设了“电脑鼠原理和制作”选 修课程。每年都有世界级的比赛。
△ 电脑鼠必须自成独立系统,不能使用可燃物为能 源;
△ 电脑鼠的长和宽限定在25cm×25cm。每次运行中 电脑鼠几何尺寸的变化不能超过25cm×25cm。对 电脑鼠的高度没有限制;
△ 电脑鼠穿越迷宫时不能在其身后留下任何东西; △ 电脑鼠不能跳越、攀爬、钻挖和损毁迷宫隔墙; △ 不能对电脑鼠进行遥控操作。
陕西科技大学电气与信息工程学院
电脑鼠走迷宫竞赛规则—比赛规则
竞赛中电脑鼠在迷宫中的总时间不可超过15分 钟,在该限时内,电脑鼠可以运行任意次。
电脑鼠到达迷宫中心的目的地后,可以使用手 动放回起点,或让电脑鼠自动回到起点,前者 被视为碰触,因此在以后的运行中,将失去减 10秒的奖励。
电脑鼠在启动过程中,操作员不可再选择策略。 一旦竞赛迷宫布局揭晓,操作员不能将任何有
陕西科技大学电气与信息工程学院
电脑鼠走迷宫竞赛概述—特点
电脑鼠是一个小型的由微处理器控制的机器 人车辆,在复杂迷宫中具有译码和导航的功 能,具有精确的定位能力,快速的行走能力 和优秀的避障能力等特点。
电脑鼠结合了机械、电机、电子、控制、光 学、程序设计和人工智能等多方面的科技知 识。
电脑鼠走迷宫竞赛具有一定难度,是一项富 有挑战性和趣味性的比赛。
迷宫隔墙的侧面为白色,顶部为红色。迷宫的 地面为木质,使用油漆漆成黑色。隔墙侧面和 顶部的涂料能够反射红外线,地板的涂料则能 够吸收红外线。

北京赛区补充规则细则

北京赛区补充规则细则

北京赛区2009全国“电脑鼠走迷宫”竞赛规则补充说明1.计时方法电脑鼠在规定的十五分钟内可运行任意次。

每一次的成绩都由迷宫时间、运行时间和碰触奖惩三部分组成,取多次运行中最短排障时间作为最终成绩。

根据《IEEE电脑鼠走迷宫竞赛规则》中对于迷宫时间的定义“从电脑鼠的第一次激活到每次运行开始,这段期间所花费的时间称为迷宫时间”,具体计时方法如下:例1:信息记录在《比赛计时表例1》并自动计算假设电脑鼠第一次启动后(计时员统一起表)经过100秒到达迷宫终点(计时员掐表记录第一个时间点),那么第一次运行时间Y1=100秒,运行过程中没有发生碰触,奖励10秒。

由于是第一次运行没有迷宫时间即M1=0,因此第一次排障时间是:P1=100 – 10 = 90(秒)电脑鼠离开终点后又花费了140秒时间用于搜索迷宫信息并回到起点自动180度回转(计时员掐表记录第二个时间点),后根据找出的最短路径以最快速度冲刺到终点(计时员掐表记录第三个时间点),耗时20秒,那么第二次运行时间Y2=20秒,迷宫时间是之前的运行时间100秒加上后续搜索迷宫的140秒,即M2=240秒。

没有发生碰触,那么第二次排障时间是:P2=240/30 + 20 – 10 = 18(秒)这只电脑鼠经过25秒回到起点,此时操作员将电脑鼠拿起除去车轮上的灰尘或是进行其他操作耗费30秒,记为第一次碰触。

再次放回迷宫(计时员掐表记录第四个时间点),后以最快速度从起点冲向终点(计时员掐表记录第五个时间点),此次耗费时间19秒,那么第三次的运行时间Y3=19秒,而此次的迷宫时间包括之前的所有时间,包括第二次的迷宫时间240秒,第二次的运行时间20秒,回到起点的25秒和除尘等操作耗去的30秒,此次的迷宫时间M3=315秒,碰触一次,没有奖惩,那么第三次运行成绩为:P3=315/30 + 19= 29.5(秒)如果此时向裁判请求结束比赛那么取三次最好成绩18秒作为最终成绩。

机器鼠走迷宫的优化路径算法及实践

机器鼠走迷宫的优化路径算法及实践

我们总是希望机器 鼠在经过几次试探后能够 找出
最 短的路径 。
粗虚线示意将死胡同堵死。 22 完成“ . 左顺 墙” 右顺墙 ” 和“ 机 器 人可 以通过 “ 顺墙 ” “ 左 和 右顺墙 ” 的办法 找
到两 条路 径 ,显然 这两 条路 径长度 是不 同的 。图 l
2 算法 设计 . 无论是树 型迷 宫还 是 网孔 型迷 宫 ,要找到 一条
维普资讯
芜湖职业技术学院学报 20 0 7年第 9卷第 2期
机 器 鼠走 迷 宫 的优 化路 径 算 法 及 实践
邓延 安
( 芜湖职业技术学院电气系,安徽 芜湖,2 10来自) 401 0 . .
迷宫问题 是计算机数据结构和计 算方法经常
涉及 的 问题 , 目前 最 常 见 的方 法有 广 探 法 和 深探
宫,后 一类称 为 网孔 形迷 宫 ,显 然 网孔 型迷 宫要 复 杂得 多 。图 l 就是 一个树 形迷 宫 。
1 . 宫 问题 2迷
图 1树 型迷 宫示例
本文采用坐标描述迷宫的位置,如果向右 ( 或
左 )越过虚 线 ,则 X加 l( 或减 1, 向上 ( ) 或下 )
越过虚线 , y l 或减 1。 则 加 ( ) 为简化问题的分析, 假设机器人只能走直线。
息 (bt 6i )和方 向信息 (bt。这 里 ,规 定方 向位 2i )
为:‘0 :上 ;‘ l :右;‘ l:下 ;‘ 0 :左 。 ‘” 0 ‘” 0 ‘” l ‘” l
3 . 5程序流程 图 图 2是“ ( 左 或右)顺墙算法流程图,图 3 是
路 径优 化流程 图。 4 .结束 语 对 于不 太 复杂 的树型 迷 宫,如 一个 1x 6迷 6 1 宫 ,PC1F 7 I 6 8 7单片机 可 以胜 任 。但对 于复杂 的迷 宫,由于存储空间要求较大 ,需外接 EP O 2R M。如

电脑鼠走迷宫比赛规则

电脑鼠走迷宫比赛规则

電腦鼠走迷宮比賽規則一、電腦鼠的規定1.電腦鼠必須以紅外線光感測器偵測迷宮路徑行走;不得以機械式的感測裝置(包含導輪)碰觸迷宮路徑的牆板行走。

2.電腦鼠必須為自立型,不得以無線電波遙控。

3.電腦鼠不得躍過、攀登、損傷或破壞迷宮壁面。

二、迷宮的規定1.電腦鼠迷宮,如[圖一]所示,單位方塊壁面的側面為白色,頂部為紅色,平面為黑色。

2.電腦鼠迷宮以一定大小的正方形單位方塊構成,整個迷宮的外圍也是正方形。

所有的迷宮方塊至少有一個方向被壁面擋住。

某些迷宮的路徑寬度為兩個迷宮方塊的寬度,如黃色部分所示。

3.電腦鼠迷宮的單位方塊為18cmX18cm,整個迷宮由16X16個迷宮方塊組成,面積為288cmX288cm。

電腦鼠迷宮的外圍全部相連接起來,壁面的高度為5cm,厚度為1.2cm。

4.迷宮是以一般的精度製作,有可能產生某種程度上的尺寸誤差(約1mm)。

三、比賽規則1.參加隊伍於比賽前由各隊選手(或選手代表)抽籤決定出賽次序。

每隊限一個操控手下場比賽。

2.比賽開始前,所有參賽的電腦鼠均須以大會提供的塑膠袋封起來,貼上裁判簽名的封條。

輪到下場比賽的隊伍,操控手須在裁判示意下打開塑膠袋,操控電腦鼠下場比賽。

當裁判發出哨聲後,操控手即可啟動電腦鼠。

3.電腦鼠由迷宮的一角出發,以達到終點(在迷宮的中心)時間短者為第一名,餘依次類推。

4.電腦鼠最多可擁有6分鐘,比賽期間最多可行進6次,以這段時間內最快到達迷宮終點的時間為比賽成績。

如在比賽時間內無法達到終點者,以比賽時間到時,電腦鼠距離終點的距離為比賽成績,此項距離越短者成績越高。

5.電腦鼠在比賽中碰觸迷宮牆壁達到3次或一次碰觸超過3秒卡住者即須退場,其成績依未到達終點者之方法計算,以退場時之位置為行走距離的量測點。

6.操控手不得在迷宮路徑公開之後,把迷宮的路徑資料輸入電腦鼠,即比賽中不得從事程式的置入(loading)及ROM的更換。

7.比賽場所的照明、溫度、濕度…等,均為普通的環境程度,操控手不得要求調節照明程度。

电脑鼠走迷宫

电脑鼠走迷宫

电脑⿏⾛迷宫电脑⿏⾛迷宫算法改进及仿真测试(部分)2.3.5 迷宫算法改进迷宫最优路径是指从迷宫的⼊⼝到达迷宫出⼝的最短通路。

传统求解迷宫路径问题的算法⼤多采⽤⼴度优先搜索(BFS)或深度优先搜索(DFS)。

由于需要全迷宫搜索,随着迷宫规模的增⼤和复杂性的增加,上述两种算法的空间和时间复杂性将呈指数增加。

针对以上问题,本论⽂对传统算法进⾏优化改进讨论,核⼼思想是利⽤已经探索得知的迷宫信息排除不包含最短路径信息的迷宫格,不予探索。

1、单⾏、单列死点的死胡同排除算法该算法核⼼内容是进⾏数据补全,减少电脑⿏进⼊“死胡同”的次数。

其实迷宫单元的信息并不是只有访问过才能够得到,通过推断的⽅法也是可以得到的。

利⽤某个单元四周的⽅格的信息,就可以推断出此单元的信息,⽽并不需要每⼀个单元都进⾏访问。

如果⼀个迷宫单元三个⽅向有挡板,并且当该迷宫格不是终点时,那么电脑⿏进⼊该迷宫格后必然返回,这对于寻找最短路径信息⽆⽤,此时将该迷宫格第四个⽅向⼀同标记,亦即将迷宫格封闭,不让电脑⿏进⼊该迷宫格,以达到缩短探索时间的⽬的。

如图2.10中圆圈区域,当其四周搜索过时,电脑⿏不应对此区域进⾏访问。

图2.10 死胡同实例根据电脑⿏迷宫特性,迷宫四周的挡板是肯定存在的,可先进⾏预先处理。

⽽且终点四个单元的周围的⼋块挡板有且仅有⼀个是不存在的。

当电脑⿏到达终点,在明确哪个挡板不存在的同时,⽆论其它挡板是否进⾏探测过,都可将它视为挡板存在。

2、多⾏、多列死点的死区域排除算法传统搜索算法中电脑⿏从当前单元移动到下⼀单元的依据是有⽆挡板的存在及是否访问过,⽽未考虑从下⼀单元是否可以在不经过当前单元的情况下到达终点。

形象的说,此种搜索只着眼于当前电脑⿏的移动,⽽不考虑实际效果。

当电脑⿏不能从下⼀单元在不经过当前单元到达终点时,电脑⿏的运⾏就做了“⽆⽤功”,这对于迷宫搜索的执⾏效率产⽣很⼤的副作⽤。

如图2.11所⽰,⽅形区域内即是这种情况,也就是死区域。

电脑鼠走迷宫实验报告附程序

电脑鼠走迷宫实验报告附程序

东南大学第二届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为转弯)。

基于向心法则的电脑鼠走迷宫算法设计与优化

基于向心法则的电脑鼠走迷宫算法设计与优化

l 引 言
迷 宫电脑 鼠的概念最早 由 IE p c u 杂志在 E E S et m r
传统 算法最 基本 的是深度搜 索和广度 搜索【, 统算 7传 】 法存在搜 索效率 不高的 问题, 很多情况下 都有可能 在 会遍历 整个迷 宫才 能找到解, 以许多人在传 统算法 所 的基础 上,进 一步改善 这些算法,经过 改进后 的算法 有 Fo d i 算法【、 i s a 【等, l l o Fl 8 D i t ’’ 这些算法在搜索效 1 k r s】
21 0 2年 第 2 卷 第 9期 1
ht:w . s .r. t / wwc - ogc v/ -a n
计 算 机 系 统 应 用
基于 向心法则的 电脑 鼠走迷宫算法设计与优化①
贺 少波,孙克
( 南 大 学 物 理 与 电 子学 院,长 沙 4 0 8 ) 中 10 3 Nhomakorabea摘
要:电脑 鼠是一个集 自主迷宫搜索 、搜索完后最短路冲刺 、传感与控制于一体 的 自主移动机器 人系统. 具体
7 O年 代提 出,就是使用嵌入式微控制器 、传 感器 和机 电运 动部件 构成 的一种 智能行走 装置,可 以在” 宫” 迷
中 自动记 忆和选 择路径 , 找 出 口,最终达 到所 设的 寻
目的地川.目前 电脑 鼠走迷 宫 比赛在许 多 国家都很 受
关注,迷宫 电脑 鼠在我国起 步较晚, 到 2 0 直 0 7年才在
wef u dt a e ta eh d i e ye c e tm a es a c l o ih o n h tt c n r l t o sav r f in z e r h ag rt m he m i
Ke y wor s mir - u e ma es a c a t n mo smo ier b t c n l t o d : c o mo s ; z e rh; u o o u b l o o ; e  ̄a h d me

竞赛规则

竞赛规则

2015年“启诚杯”天津市大学生电脑鼠走迷宫竞赛比赛规则一、竞赛规则1.电脑鼠的基本功能是从起点开始走到终点,这个过程称为一次“运行”,所花费的时间称为“运行时间”。

从终点回到起点所花费的时间不计算在运行时间内。

从电脑鼠的第一次激活到每次运行开始,这段期间所花费的时间称为“迷宫时间”。

如果电脑鼠在比赛时需要手动辅助,这个动作称为“碰触”。

竞赛使用这三个参数,从速度﹑求解迷宫的效率和电脑鼠的可靠性三个方面来进行评分。

2.电脑鼠的得分是通过计算每次运行的“排障时间”来衡量的,排障时间越短越好。

排障时间是这样计算的:将迷宫时间乘以1/30,再加上运行时间,如果这次运行结束以后电脑鼠没有被碰触过,那么还要再减去10秒的奖励时间,这样得到的就是排障时间。

每个电脑鼠允许运行多次,取其中最短的排障时间即作为参赛的计分成绩。

3.竞赛中电脑鼠在迷宫中的总时间不可超过10分钟,在该限时内,电脑鼠可以运行任意次。

4.电脑鼠到达迷宫中心的目的地后,可以使用手动放回起点,或让电脑鼠自动回到起点,前者被视为碰触,因此在以后的运行中,将失去减10秒的奖励。

5.从电脑鼠离开起点到进入终点的这段时间为运行时间。

迷宫时间是从电脑鼠第一次激活开始计算的,电脑鼠第一次激活后不需要马上就开始运动,但必须在迷宫起点处整装待命。

6.穿越迷宫的时间由竞赛工作人员人工测量或由装在起点和终点处的红外线传感器自动测量。

使用红外传感器时,起点红外传感器应放置在起点单元和下一个单元之间的边界上;终点传感器应放置在终点单元的入口处。

传感器沿水平方向发射红外线,高出地面约1cm。

7.电脑鼠在启动过程中,操作员不可再选择策略。

8.一旦竞赛迷宫的布局揭晓,操作员不能将任何有关迷宫布局的信息再传输给电脑鼠。

9.迷宫所在房间的亮度、温度和湿度与周围环境相同。

改变亮度的要求是否被接受须由竞赛组织者决定。

10.如果电脑鼠出现故障,操作员可以在裁判的许可下放弃该次运行,并放回到起点重新开始。

电老鼠走迷宫算法

电老鼠走迷宫算法

摘要 摘 要 一种电脑鼠走迷宫的算法■ 上海商学院 张新谊─────────────────────────────────────────────────────────────────电脑鼠(Micromouse )实际上是一个由微处理器控制的,集感知、判断、行走功能于一体,能够自动寻找最佳路径到达目的地的小型机器人。

国际电工和电子工程学会(IEEE )每年都要举办一次国际性的电脑鼠走迷宫竞赛。

本文介绍一种能满足IEEE 学会颁布规则的电脑鼠走迷宫算法。

───────────────────────────────────────────────────────────────── 关键词 运行时间 迷宫时间 碰触 排障时间─────────────────────────────────────────────────────────────────电脑鼠的英文名称为Micromouse ,实际上是一个由微处理器控制的,集感知、判断、行走功能于一体,能够自动寻找最佳路径到达目的地的小型机器人。

它可以在“迷宫”中自动感知并记忆迷宫地图,通过一定的算法,寻找一条最佳路径,以最快的速度到达目的地。

1997年,在美国举办了第一届电脑鼠竞赛,随后,电脑鼠竞赛传入欧洲,首届欧洲电脑鼠竞赛于1980年在伦敦举办,之后英国的电脑鼠比赛便由电子工程协会(IEE )主办。

1980年11月日本电脑鼠协会(JMA )在东京举办了第一届竞赛,此后,日本每年都要举办一届电脑鼠竞赛。

我国台湾也于1986年10月举办了首届电脑鼠比赛。

现在国际电工和电子工程学会(IEEE )每年都要举办一次国际性的电脑鼠走迷宫竞赛,各国选手报名踊跃,主要是大学生,为此部分大学还开设了“电脑鼠原理和制作”选修课程。

由于电脑鼠要由参赛选手自己设计制作,不仅要求选手具有嵌入式系统应用﹑传感器﹑控制技术等多方面的知识、经验和实践能力,还要求具有编写寻找最佳路径算法的能力。

IEEE电脑鼠迷宫路径选择及死区决策

IEEE电脑鼠迷宫路径选择及死区决策

IEEE电脑鼠路径选择及死区决策一、引言(一)IEEE电脑鼠走迷宫竞赛背景嵌入式系统融合了微电子、计算机软\硬件、通信和电子工程等多种技术,广泛应用于航空、航天、仪器仪表、工业控制和3C(Computer、Communication、Consumer)等领域,是科技集成创新的主要手段。

为了培养科技创性意识和动手能力,全国各地在近几年纷纷举办“电脑鼠走迷宫“邀请赛。

电脑鼠英文名叫做MicroMouse,是使用嵌入式微控制器、传感器和机电运动部件构成的一种智能行走装置(微型机器人)。

电脑鼠要在指定的迷宫中比赛,在迷宫中探索以找出通往终点的路径,并随时掌握自身的位置信息,准确获取墙壁信息并做记录,最终依靠记忆找出走出迷宫的最佳路径,以最短的时间解开迷宫,赢得比赛。

国际电工和电子工程学会(IEEE)每年都要举办一次国际性的电脑鼠走迷宫竞赛,自举办以来参加国踊跃,为此许多大学还开设了“电脑鼠原理和制作”选修课程。

2007 年和2008 年,上海市计算机学会率先在国内主办了两次IEEE 标准电脑鼠走迷宫邀请赛(长三角地区),有三十多所院校参加。

2009 年广州致远电子有限公司赞助了全国“IEEE 标准电脑鼠走迷宫”邀请赛,共邀请全国9 个赛区的52所高校参赛,反响强烈。

图1 所示为电脑鼠图2 所示为比赛迷宫本文主要以MicroMouse615为平台,介绍电脑鼠参赛的实现,对有些方面的基本算法提出改进,并在此基础上加上了一些自己的算法思想,比如说:用数学模型的方法提出了用改进后的数字PID算法对行进中的电脑鼠进行状态调整,进入死区的电脑鼠的人工智能决策,参赛时迷宫搜索的易于实现的算法以及植入操作系统的思想。

(二)竞赛平台简介MicroMouse615平台包含了微控制器、电机、红外线传感器、控制平台。

其中最重要的微控制器是LM3S615微控制器,如下图3为LM3S615的系统结构图。

其中内核用的是ARM Cortex-M3,外围还有存储器、系统时钟、定时器、输入输出端口、数模转换器等等。

电脑鼠机器人迷宫竞赛规则

电脑鼠机器人迷宫竞赛规则

第四届青少年机器人活动暨亚洲机器人锦标赛中国区选拔赛电脑鼠机器人迷宫竞赛规则竞赛要求使用东莞市博思电子数码科技有限公司的电脑鼠机器人器材。

如下图所示:(一)场地尺寸及环境要求1.迷宫场地由8×8个边长为180.00×180.00mm 的正方形单元组成(见图1)。

电脑鼠机器人迷宫竞赛是一种利用嵌入式微控制器、传感器和机电运动部件构成的一种智能的小型机器人比赛,它要求机器人在指定的迷宫中自动探索并找出通往终点的路径,赛中机器人需随时掌握自身的位置信息,准确获取墙壁信息并做记录,最终依靠记忆找出最佳路径并以最短的时间走出迷宫,赢得比赛。

一、简述二、规则2.图2示例场地图3.四周的隔墙将整个迷宫封闭,迷宫隔墙的侧面为白色,顶部为红色。

迷宫的地面为木质,用于隔开每个单元格的围板称为墙壁,迷宫场地的墙壁高50.00mm,厚12.00mm,因此两堵隔墙所构成的通道其实际宽度为168.00mm(示例场地图见图2)使用油漆漆成黑色。

迷宫地面上印有墙壁的定位线,作组装场地时定位墙壁的标记,隔墙侧面和顶部的涂料需能反射红外线,地板的涂料需能吸收红外线。

4.迷宫的起始单元必须有三面隔墙,余下一个出口。

例如,若没有隔墙的出口端为“北”向时,那么迷宫的外墙就构成“东”、“南”、“西”方位的隔墙。

5.6.迷宫场地中,将每个正方形单元的四角每两边相交的位置的点我们定义为“格点”。

除了停泊区域中心的格点外,其余每个格点至少要延伸出一面隔墙或与一面隔墙相接触。

由格点延伸出去的墙壁的组合方式多种多样,以迷宫左下角的一个格点为例,如下图中黑色部分为格点,示例场地图见图2A、从格点处延伸出一块墙壁后,与该节点有关的墙壁的几种布置位置如下:B、从格点处延伸出两块墙壁后,与该节点有关的墙壁的几种布置位置如下:符合本规则的迷宫场地设计方案数量众多,但迷宫的格数始终是8×8格,四边的围墙不变,变化的是围墙内部的各个墙壁,比赛时具体使用场地,由比赛现场公布。

电脑鼠走迷宫

电脑鼠走迷宫
“营运”,花费的时间称“营运时间”。
从终点回到起点所花费的时间不计算在营 运时间内。从第一次到每次营运开始,所 花费的时间称为“迷宫时间”。
在比赛时需要手动辅助,这个动作称为 “碰触”碰一次加10秒。
竞赛使用三个参数,即营运时间、迷宫时 间和碰触,并从速度、求解迷宫的效率和 计算机鼠可靠性三个方面来评分。
路径,最快的速度到达,称为「冲刺」。
日本计算机鼠菁英 赛
计算机鼠如何走迷宫
1. 先搜寻整个迷宫的路径 2. 方法:资料结构裡的Depth-First
Search 來搜寻路径并以右手法则來侦测 路径并记錄所经过的路径。
最短路径
最短路径2
在分析出最快的路径后,记錄到终点所经 过的所有路径的值丢到所设计的算法处理, 得到这个迷宫从起点到终点的最快路径。
不Hale Waihona Puke 样的电脑鼠!!计算机鼠竞赛的历史
欧洲:1980年在伦敦首办,之后英国的计算 机鼠比赛便由IEE主办。
日本:1980年11月JMA在东京举办了第一届竞 赛。现在,每年都举办计算机鼠竞赛。
台湾:1986年10月举办首届计算机鼠比赛。 IEEE:每年的竞赛,选手以大学生为主。 部分大学还开设「计算机鼠原理和制作」
不同的传感器
好玩之处?
计算机鼠要由参赛选手自己设计制作。 需具有嵌入式系统应用、传感器、控制技
术等多方面的知识、经验和实践能力。 具有编写寻找最佳路径算法的能力。 迷宫路径设置是随机的。 可培养和提升学生的创新
精神、实践能力和逻辑思考
计算机鼠走迷宫规则1
计算机鼠的规定: 1. 须以光传感器侦测
得分公式
一计算机鼠在迷宫中营运时间为4分钟 (240秒)没有碰触过,迷宫时间使用20秒, 这次营运的排障时间就是︰ 20秒+(240秒×1/30)- 10秒 = 18秒。

IEEE标准电脑鼠走迷宫竞赛规则

IEEE标准电脑鼠走迷宫竞赛规则

附录IEEE电脑鼠走迷宫竞赛规则1.目的电脑鼠走迷宫竞赛的目的是制作一个微型机器人,它能在最短的时间内穿越迷宫到达终点。

参赛的机器人称为“电脑鼠”,将电脑鼠放入迷宫并启动操作的人称为“操作员”。

2.迷宫的规范(1)迷宫由16×16个﹑18cm×18cm大小的正方形单元所组成。

(2)迷宫的隔墙高5cm,厚1.2cm,因此两个隔墙所构成的通道的实际距离为16.8cm。

隔墙将整个迷宫封闭。

(3)迷宫隔墙的侧面为白色,顶部为红色。

迷宫的地面为木质,使用油漆漆成黑色。

隔墙侧面和顶部的涂料能够反射红外线,地板的涂料则能够吸收红外线。

(4)迷宫的起始单元可选设在迷宫四个角落之中的任何一个。

起始单元必须三面有隔墙,只留一个出口。

例如,如果没有隔墙的出口端为“北”时,那么迷宫的外墙就构成位于“西”和“南”的隔墙。

电脑鼠竞赛的终点设在迷宫中央,由四个的正方形单元构成。

(5)在每个单元的四角可以插上一个小立柱,其截面为正方形。

立柱长1.2cm,宽1.2cm,高5cm。

小立柱所处的位置称为“格点”。

除了终点区域的格点外,每个格点至少要与一面隔墙相接触。

(6)迷宫制作的尺寸精度误差应不大于5%,或小于2cm。

迷宫地板的接缝不能大于0.5mm,接合点的坡度变化不超过4度。

隔墙和之间的空隙不大于1mm。

3.电脑鼠的规范(1)电脑鼠必须自成独立系统,不能使用可燃物为能源。

(2)电脑鼠的长和宽限定在25cm×25cm。

每次运行中电脑鼠几何尺寸的变化不能超过25cm×25cm。

对电脑鼠的高度没有限制。

(3)电脑鼠穿越迷宫时不能在其身后留下任何东西。

(4)电脑鼠不能跳越、攀爬、钻挖和损毁迷宫隔墙。

4.竞赛规则(1)电脑鼠的基本功能是从起点开始走到终点,这个过程称为一次“运行”,所花费的时间称为“运行时间”。

从终点回到起点所花费的时间不计算在运行时间内。

从电脑鼠的第一次激活到每次运行开始,这段期间所花费的时间称为“迷宫时间”。

迷宫问题的C,C算法实现讲解

迷宫问题的C,C算法实现讲解

基于栈的c语言迷宫问题与实现一.问题描述多年以来,迷宫问题一直是令人感兴趣的题目。

实验心理学家训练老鼠在迷宫中寻找食物。

许多神秘主义小说家也曾经把英国乡村花园迷宫作为谋杀现场。

于是,老鼠过迷宫问题就此产生,这是一个很有趣的计算机问题,主要利用“栈”是老鼠通过尝试的办法从入II穿过迷宫走到出口。

迷宫只有两个门,一个叫做入口,另一个叫做出口。

把一只老鼠从一个无顶盖的人盒子的入11处赶进迷宫。

迷宫中设置很多隔壁,对前进方向形成了多处障碍,在迷宫的唯一出11处放置了一块奶酪,吸引老鼠在迷宫中寻找通路以到达出II。

求解迷宫问题,即找出从入II到出口的路径。

一个迷宫可用上图所示方阵[ni,n]表示,0表示能通过,1表示不能通过。

现假设耗子从左上角[1,1]进入迷宫,编写算法,寻求一条从右下角[m,n]出去的路径。

下图是一个迷宫的示意图:二.算法基本思想迷宫求解问题是栈的一个典型应用。

基本算法思想是:在某个点上,按照一定的顺序(在本程序中顺序为上、右、下、左)对周围的墙、路进行判断(在本程序中分别用1、0〉代替,若周围某个位置为0,则移动到该点上,再进行卞一次判断;若周围的位置都为1 (即没有通路),则一步步原路返回并判断有无其他通路,然后再次进行相同的判断,直到走到终点为止,或者确认没有任何通路后终止程序。

要实现上述算法,需要用到栈的思想。

栈里面压的是走过的路径,若遇到死路,则将该位置(在栈的顶层)弹出,再进行下一次判断;若遇到通路,则将该位置压栈并进行卞一次判断。

如此反复循坏,直到程序结束。

此时,若迷宫有通路,则栈中存储的是迷宫通路坐标的倒序排列,再把所有坐标顺序打印后,即可得到正确的迷宫通路。

三.程序具体部分的说明1.迷宫的生成根据题目的要求,迷宫的人小是自定义输入的。

所以在程序中用malloc申请动态二维数组。

数组中的元素为随机生成的0、lo数组周闱一圈的元素全部定义为1,以表示边界。

2.栈的C语言实现为了实现栈的功能,即清空、压栈、弹出、返回栈顶元素,在程序中编写了相应的函数。

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

电脑鼠走迷宫大赛探索过程算法优化研究——死路排除算法——死区域算法1摘要电脑鼠走迷宫大赛是由国际电工和电子工程学会(IEEE)举办的人工智能领域的一项国际性赛事,集机械、电子、控制、光学、程序设计和人工智能等多方面科技知识于一体[1],具有很高的知名度。

迷宫算法的优劣直接影响比赛的最终成绩。

本文从经典迷宫算法入手,先后提出了能排除单行当列死路的“死路排除算法”和能够排除任意形状死区域的“渗透法”,然后通过测试验证两种改进算法的优越性。

改进算法的核心思想是通过已经获得的迷宫信息排除不包含最短路径信息的死区域。

同时,文中创造性的将“渗透思想”用于迷宫算法当中,很好的实现了死区域的判定与排除。

与经典算法相比,改进算法在时间、空间方面都有良好的优化效果。

2背景简介电脑鼠走迷宫大赛是国际电工和电子工程学会(IEEE)每年都会举办的一项国际性赛事,于1972年由美国机械杂志发起。

比赛中的电脑鼠是一个小型的由微处理器控制的机器人车辆,在复杂迷宫中具有译码和导航功能。

该比赛自推出以来,受到了世界各国师生的青睐。

2007年和2008年,上海市计算机学会率先在中国主办了两次IEEE标准电脑鼠走迷宫邀请赛(长三角地区),有三十多所院校参加,反响强烈。

2009年比赛范围扩展到全国,共有9个赛区的52所高校参赛[2]。

2.1电脑鼠走迷宫大赛规则[3]电脑鼠的基本功能是从起点开始走到终点,这个过程称为一次“运行”,所花费的时间称为“运行时间”;电脑鼠从第一次激活到每次运行开始所花费的时间称为“迷宫时间”;电脑鼠在比赛时手动辅助的动作称为“碰触”。

竞赛使用这3个参数,从速度、求解迷宫的效率和电脑鼠的可靠性三个方面来进行评判。

电脑鼠的得分是通过计算每次运行的“排障时间”来衡量的,即将迷宫时间的1/30加一次运行时间;如果未被碰触过,则再减去10s(奖励时间),这样得到的就是排障时间。

电脑鼠在迷宫中停留或运行的总时间不可超过15min,在限时内允许运行多次。

如果进入迷宫是为了进行探测和记忆,则这次运行就称为“试跑”;如果进入迷宫是根据先前的记忆和经验,按照智能算法确定最佳路径,并以最快的速度到达目的地,则这次运行就称为“冲刺”。

2.2迷宫、电脑鼠规格迷宫由256个方块组成,每个方块18 平方厘米,排成16行×16列。

迷宫的隔板沿方块的四周布设,形成迷宫通道。

如图1为迷宫照片。

图2为电脑鼠样例照片,该电脑鼠采用ARM7处理器——LM3S615作为主控芯片。

五组可测距的红外线传感器按照某固定频率对迷宫格周围障碍进行采样,获取迷宫隔板信息。

图1 迷宫照片图2 电脑鼠样例照片2.3已有算法迷宫最优路径是指从迷宫的入口到达迷宫出口的最短通路。

经典求解迷宫路径问题的算法大多采用广度优先搜索(BFS)或深度优先搜索(DFS)[4]。

由于需要全迷宫搜索,随着迷宫规模的增大和复杂性的增加,上述两种算法的空间和时间复杂性将呈指数增加。

针对以上问题,本文对经典算法优化改进,核心思想是利用已经探索得知的迷宫信息排除不包含最短路径信息的迷宫格,不予探索。

文章首先实现了能够排除单行、单列死路的死点路排除算法;随后实现了能够排除多行、多列死点的死区域算法。

本文第2部分给出两种算法分别的设计思想和设计流程,第3部分通过实际测试验证了上述算法并对结果进行分析。

文章的结论在第4部分呈现。

3算法介绍3.1死点算法3.1.1基本思想该算法首先将迷宫等分成16×16的迷宫格,见图6。

并将迷宫隔板两面分别进行标记,以示区别。

可以对迷宫格进行虚拟隔板标记,这种标记在实际效果上等同于隔板,只是无法用传感器探测到而已;如果一个迷宫格三个方向有隔板(或者是标记),并且当该迷宫格不是终点时,那么电脑鼠进入该迷宫格后必然返回,这对于寻找最短路径信息无用;算法将该迷宫格第四个方向一同标记,亦即将迷宫格封闭,不让电脑鼠进入该迷宫格,以达到缩短探索时间的目的。

3.1.2流程图图3 图解示例为了进一步说明死点算法在实际探索过程中的工作过程,如图4做如下解释:图4 死点算法实际效果图解图中红色虚线是预标记的虚拟隔板,绿色虚线为封闭死点时标记的虚拟隔板,在初始化中将迷宫边界内壁预标记:1、电脑鼠运动到P格时,会将迷宫格1的上方标记,而其左方已在出发时标记,这样迷宫格1三个方向被标记,满足封闭条件,则将其右方也标记上,即将迷宫格1封闭,同时可将迷宫格2的左方标记上;2、电脑鼠继续沿图示虚线运动,迷宫格2同样三方被标记,将其封闭,如此循环可得迷宫格3、4、5、6、7将相继封闭,并将迷宫格8下方被标记;3、电脑鼠运动到迷宫格8时,右方传感器没有检测到障碍,但由于右方被标记,因此向左转。

减少了探索迷宫格1、2、3、4、5、6、7的时间。

3.2死区算法——渗透法3.2.1基本思想A、新思路的探索上述死点算法实现了利用已有信息排除单行、单列死点的功能,但无法排除多行、多列的死区域,而且在算法实现上隔板标记的循环语句较为繁琐,将会影响电脑鼠的信息处理速度和运动的稳定性。

死区域排除也是通过已有信息将不包含最短路径信息的区域进行封闭,然而单纯依靠单格的连续封闭的方法从空间和时间上都较难实现,下面我们引入一种新的思想来解决这个问题。

B、渗透法当一个区域只有一个出口与外面相连并且终点不在此区域内时,这个区域被称作死区域。

渗透法排除死区域继承了死点算法的隔板标记的思想,在沿途对已获隔板信息进行分析和标记,并希望实现唯一出口处被标记一个虚拟隔板。

渗透法的核心是判别死区域,要说明其原理我们从“渗透”一词说起,“渗透”在化学上的解释是低浓度溶液中的水或其他溶液通过半透性膜进入较高浓度溶液中的现象,而我们对死区域的判定也正是应用这种思想;做个比喻,设想单出口区域即死区域的出口处有一个“半透膜”,而整个迷宫内假设都充满了“高浓度的溶液”,电脑鼠从起点出发,每当遇到路口时,将“低浓度溶液”中的“水分”渗入路口相连的方向,水分渗入“高浓度溶液”后,则变为“低浓度溶液”,进而在逐步深入,如果“水分”不能最终扩散渗入终点,则说明此路口所连区域是个死区域,可以将路口标记上虚拟的隔板,进而排除该死区域。

需要注意的是:进行封闭的区域是未探索区域,即仍为“高浓度的溶液”区域,以防将电脑鼠封死在已走的区间内。

C、渗透算法的实现除了已经提到的隔板标记的算法,还需要实现溶液的渗透和扩散,在初始化中我们将未探索的迷宫格全部赋值为0,当“水分”渗入后该区域值变为0xff,这样来实现“低、高浓度溶液”模型的建立。

“溶液的扩散”就是把与值为0xff的迷宫格之间无虚拟隔板相隔的相邻迷宫格同样赋值为0xff,再不断的这样赋值下去,直到整个区域内都赋了值0xff而无法继续扩散时结束。

这样就实现了渗透的算法。

3.2.2流程图初始化:迷宫边界被标记,所有迷宫格赋值ff,其他初始化右手法则探索迷宫,记录并按规则标记虚拟迷宫信息存于MapBlock[][]中,循环判断区域虚拟标记信息,若满足迷宫区域封闭条件则封闭判断是否满足加强右手法则中向右转、向前直行、向左转的条件:当前格对应方向右方、前方、左方既无传感器探测到的隔墙板信息,又无被标记的隔墙板信息Y回到已经记录的上一节点处,沿另外方向探索迷宫,判断已记录节点数N是否归0NN表明迷宫已探索完毕,回到起点准备冲刺Y冲刺完毕后回到起点,结束运行电脑鼠当前迷宫格P,某方向N无隔墙板迷宫格P的N方向迷宫格为Q未探索,将Q赋值ff,并不断无回流的扩散判断终点是否被赋值ffN对迷宫格Q相应方向进行预封闭,判断电脑鼠是否处于预封闭区域将预封闭迷宫格封闭N是否所有未探相邻迷宫格均已判断结束YYYN迷宫区域封闭子程序图53.2.3图解实例下面结合图6我们对渗透法做进一步解释:图6 渗透法实际效果图解图中未赋值迷宫格默认赋值为0,蓝色宽箭头表示“ff ”渗透的方向,红色虚线是预标记的虚拟隔板,绿色虚线为死区出口处标记的虚拟隔板:1、 初始化使迷宫边界均被标记虚拟隔板,电脑鼠从起点沿长虚线箭头方向运行,走过的迷宫格自动赋值为ff ,运动到图5-1中被圈的迷宫格时,先后进行上方右方的渗透,无红色虚拟隔板则不受阻碍,渗透后迷宫如图5-2所示,其中两蓝色箭头示意了终点被赋值ff 的一种渗透路径;2、 由于终点最终被渗透扩散后赋值ff ,则判定两个方向目前均不是死区的出口,不进行封闭,继续向前探索;3、 电脑鼠运动到图5-3中被圈位置时,下方区域A 的边界均已被预标记上虚拟隔板,此时判断出下方迷宫格的值为0,则将ff 渗入;4、 如图5-4, “ff ”在区域A 内不断扩散直至充满整个区域,由于整个区域只有一个出口且不能回流,ff 不能流出延伸到终点,所以可判定该区域是死区域;即将当前电脑鼠所在迷宫格的下方标记虚拟隔板; 5、 电脑选择左转,将减少探索整个区域A 的时间。

4 实测数据分析为验证上述两种算法的效率,本文针对以下3个不同的迷宫,对上述算法和经典算法进行了3组性能测试,从所用时间和搜索空间两方面进行比较,测试结果如表1所示。

迷宫1 迷宫2 迷宫3经典算法死路排除算法 死区域算法时间(秒)迷宫1 66 44 39 迷宫276 58 47 迷宫3 7851 42 平均值 73.3333333351 42.66666667 空间(探索区域/全迷宫×100%)迷宫1100% 64.06% 57.80% 迷宫2100% 81.25% 67.19% 迷宫3100% 73.43% 59.38% 平均值100% 72.91% 61.46%表1以上3个迷宫为人工随机摆放,但已经存在相当的普遍性。

从表1中可以看出: a) 探索时间上:经典算法>死路排除算法>死区域算法;死路排除算法、死区域算法所需时间仅为经典算法的69%和58%;b) 探索空间上:经典算法>死路排除算法>死区域算法;死路排除算法、死区域算法所探索的空间仅为经典算法的73%和61%; c) 死路排除算法、死区域算法在时间、空间上比经典算法都有相当的优化,优化程度前者在30%左右,后者在40%左右,效果非常理想。

为直观反映空间优化的效果,我们用迷宫3的三种算法做如下比较,其中蓝色为死路排除算法未探索区域,黄色为死区域算法未探索区域,显然优化效果明显。

5结论本文从已有经典迷宫算法引出对迷宫算法的优化,先是提出了排除单死路的“死路排除算法”,后来又进一步提出了排除死区域的“渗透法”。

“渗透法”的提出从一种更直观形象的角度对死区域进行了描述,降低了死区域判断时间、空间上的复杂度,减少了迷宫格信息预处理的计算量,最终完美的实现了死区域的排除。

改进算法的核心思想在于通过已经获得的迷宫信息排除死区域,只要迷宫存在死区域,就一定会在时间、空间上有所优化。

相关文档
最新文档