下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、猫抓老鼠仿真的一种实现方法【摘要】本文阐述了一种在固定范围内遵照一定规则的猫抓老鼠的仿真实现方法。仿真程序采用c+语言编制,在vc+软件上运行。本文中的仿真模型,按模型的特性划分,是属于离散事件系统仿真;按仿真时钟与实际时钟的比例关系分类上划分,是属于欠实时仿真;按仿真的系统的结构和实现手段上划分,是属于物理仿真。0 问题猫抓老鼠。有1个10*10的方格阵,在一些格中会有一些障碍物。猫和老鼠从方格阵内任意位置开始,每单位时间只能走一格,且必须走一格。如果在某一刻两者在同一格中,我们称“猫抓到老鼠”(注意,猫和老鼠交换位置,不算被抓)。猫和老鼠的移动方式相同:平时沿直线走,下一步如果会走到障碍物
2、上去或者出界,就用1个单位时间做一个左或右转90度。一开始他们都面向北方。仿真实现猫抓老鼠的过程,同时保证老鼠尽可能地不被猫抓到。1 系统定义1.1 仿真的边界是在一个10*10方格阵。1.2 仿真的约束条件是猫和老鼠在规定的时间里按照一定的规则行走:(1)、猫和老鼠每单位间只能走一格,且必须走一格;(2)、猫和老鼠的移动方式相同:平时沿直线走,下一步果会走到障碍物上去或者出界,就用1个单位时间做一个左或右转90度;(3)、老鼠尽可能不被猫抓到。1.3 仿真的的目的是,展现猫抓老鼠的过程。2 数学建模猫抓老鼠的仿真系统,是离散系统仿真。该系统的组成如下:2.1 实体:(1)、永久实体:10*1
3、0方格阵,以及里面的障碍物信息;(2)、临时实体:猫和老鼠的坐标信息,以及方格阵中空格的坐标信息。2.2 事件:(1)时间是共同的主事件。因为,时间协调了实体之间的同步活动。在某种程度上,也实现了各实体间的信息的传递。(2)猫和老鼠的行进是事件。因为,猫和老鼠的行进改变了系统的状态。2.3 活动:(1)实体所做的事件。在该模型中,是猫和老鼠的行进;(2)、对实体施加的事件。在该设计中,当猫或老鼠进入一种死循环状态时,需要一个系统检测函数,改变猫或老鼠原有的行进方向。2.4 进程:猫抓老鼠的整个动态过程。3 仿真建模3.1 参数设计:(1)、10*10的方格阵用一个10*10矩阵存储。方格阵中的
4、不同内容在矩阵中用不同的常数表示。比如,0表示空格,1表示障碍物等等。(2)、猫和老鼠,分别用一个猫类cat和鼠类rat实现。在两个类中,具有共同的成员变量有:各自的坐标信息,上一时刻的行进方向,以及自仿真开始所走过的路径。3.2 数据结构设计:鼠int ratx,raty;/坐标int rat_dir/上一时刻的方向node rat_stack; /记录所走过的坐标的栈ratroute();/下一时刻的方向选择 仿真程序采用了c+语言。所以,具体的参数设计采用了c+类的设计方法。方格阵int table1010;time cat_count1010;time rat_count1010;in
5、itlize();/方格阵初始化checkcircle();/死锁检测draw();/方格阵绘图猫int catx,caty;/坐标int cat_dir;/上一时刻的方向node cat_stack; /记录所走过的坐标的栈catroute();/下一时刻的方向选择其中,time和node是自定义数据类型。它们的具体定义如下:typedef struct timeint x;/走过的次数int timerecord10;/走过的时间记录time;/ cat_count1010、rat_count1010不仅记录了猫或老鼠经过某一点的次数,同时也记录了它们每次经过这一点的时间。typedef
6、struct nodeint x;/走过的横坐标int y;/走过的纵坐标int dir;/方向node; /用此数据类型定义的数组cat_stack其实是一个栈。3.3 处理函数设计:3.3.1 方格阵的处理函数(1)、方格阵的初始化函数initlize()。方格阵的初始化可以采用静态初始化或动态初始化两种方式。静态初始化方式是直接对矩阵进行赋初值。这可以采用直接人工赋值,或调用随机函数赋初值。动态初始化,是指当方格阵各单元的信息已经静态初始化之后,还可以对里面的障碍物、猫和老鼠的坐标进行更改,以满足仿真所要求的状态。该设计,就是采用了,动态初始化的方式。(2)、死锁检测函数checkcir
7、cle(),在该仿真系统中属于系统级的函数。它的功能是防止猫或老鼠在方格阵中不停地绕圈,而使仿真失去意义。函数的实现原理是,由于该仿真系统有一个共同的主事件时间。所以,如果猫或老鼠走过某一点的次数过多时,并且最后几次走过的时间间隔是相等的。那么,该检测函数就判定猫或老鼠正在不停地绕圈。处理方案是,如果能改变猫或老鼠的方向,即不是它们此刻不是夹在一个死胡同中,则左转或右转90。否则,强制cat_dir调转180。该模型的数据结构中,方格阵对象定义了cat_count1010和rat_count1010两个矩阵成员变量。它们的作用就是记录猫和老鼠在方格阵中经过每一点的次数,并记录下每次走过的时间。
8、(3)、方格阵绘图函数。在该仿真程序的设计中,采用visualc+实现draw()函数的作图功能。基本原理是,每隔一秒就根据存储方格阵信息的矩阵table1010来重绘桌面上的窗口。这样可以达到一种类似于动画的动态显示效果。具体的流程图:checkcircle()的流程图是:/此处仅仅是列出对猫的检测函数,老鼠的大致类似。cat_countij大于5次i=cat_tempx; j= cat_tempy;cat_dir左转或右转90参数:cat_tempx,cat_tempy,cat_direndyescat_dir是否改变解释:猫是否从tableij走过5次yesnonocat_dir调转18
9、03.3.2 猫的处理函数猫的成员函数只有一个catroute()。该函数的功能是,每过一秒就为猫选取下一步要走的方向。这是在为猫做一个决策。在该模型的设计中,假设猫可以看到以自己的坐标为中心,上下左右各扩展n个方格的(n+1)*(n+1)范围内的所有信息。那么,猫就可以对这(n+1)*(n+1)小的方格阵进行遍历,然后做出判断,具体决定下一步该如何走。如果从这(n+1)*(n+1)方格阵中发现了老鼠,就采用一种最短路径走法来改变方向。反之,则仍然按照题目的规定来走。首先,这个(n+1)*(n+1)的小方格要从对象方格阵中提取成员变量table1010来获取。其次,在从table1010中提取
10、(n+1)*(n+1)小方格阵时,要防止数组边界越界。再者,须设置一个变量find_rat,当在(n+1)*(n+1)小方格阵中遍历到了鼠的存在时,就将find_rat这一旗帜变量赋值为正。反之,赋值为反。该仿真模型中,最短路径走法采用了广度优先遍历算法。本设计之所以选取广度优先遍历算法是基于一下两点:一、猫是在搜索老鼠,所以这可以用一个搜索类算法来实现;二、猫应该是要找到一个最短的路径去靠近老鼠。而广度优先遍历便是满足上述两个条件的比较适合的算法。广度优先算法的特点是:在搜索的过程中,广度搜索算法对于节点的搜索,是沿着层次扩展的。如果要遍历第n+1层的节点,必须先遍历完第n层的节点。那么,对
11、于同一层的节点来说,它们对于问题求解的价值是相同的。所以这种算法一定能保证找到最短的路径。广度优先遍历算法,有一个要求是问题具有层次性,而该模型中的层次并不是十分的明显。具体在本程序中,可以这么来描述层次:猫或老鼠每次都只能走4个方向上、下、左、右中的一个。假设这4个方向都是可走的,则这四个方向对于问题求解的价值是相同的。再扩展下去,上一层的4个方向,每一个方向又可扩展出4个方向。再在这16个方向(可能有重复)上进行扩展。这样层次便体现出来了。如果在(n+1)*(n+1)小方格阵中没有发现老鼠,就应按照题目的规定来走:猫和老鼠的移动方式相同,平时沿直线走,下一步果会走到障碍物上去或者出界,就用1个单位时间做一个左或右转90度。具体的catroute()函数流程图:ifrat()/寻找老鼠find_rat=1最短路径走法一般的走法进入程序endnoyes3.3.3 鼠的处理函数鼠的处理函数ratroute()同猫的处理函数大致相同。故在这里可参考猫的处理函数。程序装载在仿真的过程中,一开始,经过小组集体讨论,确定了基本的数据结构,以及3个对象的具体接口设计。从而将界面设计和具体的算法设计分开了。在这里,程序装载过程,其实就是进行界面程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 昆明医学院护理学院二零一零年三月杨芬
- 慢性充血性心力衰竭抑郁焦虑的识别与治疗陈炜
- 广告沙龙网络恶搞与营销4关于“网络恶搞”的心理分析
- 物理上册第五章第三节直线运动课件苏科版
- 现实评论类材料作文介绍
- 房产营销中心暖场活动策划案
- 有机检验题的解法课件
- 教育行业实验室废液处理2026年模拟试卷及答案
- 2025上半年教师资格证《保教知识》真题及答案
- 公路应急抢险保通方案
- 2026年湘教版初中八年级数学上册(全册)知识点总结
- 《智慧广场-合理安排时间》教案(2课时)-2026-2027学年青岛版(新教材)小学数学六年级上册
- 课件-试点地区的增值税纳税申报表填报实务(一)
- 本科《伤寒论》太阳病篇(一)教学设计-六经辨证体系与太阳病纲领
- 《水质-9种酯类化合物的测定 吹扫捕集-气相色谱-质谱法》
- 中国文化、社会、经济、政治(专项词汇)英语
- 第六单元《多边形的面积》教材解读课件新课标人教数学五年级上册
- 第十二章 缺血-再灌注损伤课件
- 11BS4排水工程华北标图集
- 小学三年级语文上册课外阅读叶圣陶芳儿的梦
- 泰国政治概况
评论
0/150
提交评论