机场航空管制模拟实验报告汇总.doc
《机场航空管制模拟实验报告汇总.doc》由会员分享,可在线阅读,更多相关《机场航空管制模拟实验报告汇总.doc(28页珍藏版)》请在三一办公上搜索。
1、机场航空管制模拟实验报告实验题目假设机场有一条跑道,每架飞机需花费一定时间着陆,花费一定时间起飞,飞机的起降满足一定的概率。一般来讲,机场存在两个队列,一个等待着陆的飞机队列和一个等待起飞的飞机队列,同样等待时间下,等待着陆的飞机比准备起飞的飞机具有更高的优先级。试编写程序模拟这个机场的运行。要求使用队列或优先队列实现;要求可以变换起飞和着陆频率来模拟一天中的飞行高峰期和空闲期;要求可以改变着陆和起飞时间以模拟不同的效果。1. 实验内容分析1.1实验目的实验模拟了机场的航空管制,通过程序,来模拟管理飞机的起飞与着陆。它要求我们考虑起飞与着陆的优先级不同,以及根据飞机起飞/着陆时间,起飞/着陆频
2、率模拟机场一天的运营情况。并计算出跑道的繁忙程度、着陆飞机的总的等待时间和平均等待时间、起飞飞机的总的等待时间和平均等待时间, 计算每架飞机花费在一个队列中的平均时间。1.2内容分析系统主要模拟了机场一天的运营。所以,需要一个计时器(以分钟计时)来计算机场的运营时间。同时,为了管理飞机的起飞与着陆,需要两个队列来存放着陆和起飞的飞机。设计用户输入的数据为:机场开始、结束运营时间;高峰期开始、结束时间;空闲期开始、结束时间;着陆飞机最长等待时间;高峰期、空闲期以及一般时期每小时起飞、着陆的飞机数,飞机起飞、着陆需要的时间。考虑到机场的高峰期,与空闲期,设计了Workslot类,设定不同时期的飞机
3、起飞、着陆率。设计Timer类,其主要方法是实现计时功能和返回当前工作时间。Plane类主要功能是记录飞机开始等待时间,开始工作时间以及起飞、着陆所需时间。飞机起飞/着陆都需要花费一定的时间,并不是马上就完成的。所以在起飞/着陆服务函数中,不仅要调用spend(),还需要判断takeoff/landing是否结束。当t.now-startworktimeworkTime时,说明飞机还在准备着陆/起飞,占用了跑道。当t.now-startworktime=workTime时,表示飞机着陆/起飞成功。调用pop方法,从队列中删除一架等待服务的飞机,并获取当前时间,减去飞机接受服务的时间,得到该飞机
4、的等待服务时间。我们就可以计算出所有飞机的等待服务时间。等待起飞/着陆队列总长度,等待服务总时间,以及服务起飞/着陆的飞机总数,我们就可以得出起飞/着陆飞机的平均等待时间,平均等待队列长度。同时根据当天的的工作时间,跑道的忙碌时间,可以计算得到跑道的繁忙程度。1.3程序基本流程图 1 实验基本流程1.4基本数据结构,类设计1.4.1类 Airport输入:变量名注释Timer t; 计时器Struct Busy b; 跑道是否忙碌int takeoffTime; 飞机起飞所需时间int landingTime; 飞机着陆所需时间int startworkTime; 机场当天开始运营时间int
5、endworkTime;机场当天结束运营时间Class Workslot highslot; 高峰时间段Class Workslot lowslot; 空闲时间段Class Workslot otherslot; 一般时间段deque takeoffq; 等待起飞飞机队列deque landingq; 等待着陆飞机队列int workTime; 跑道忙碌时间int TwaitTime; 总起飞等待时间int LwaitTime; 总着陆等待时间int takeoffwaitTime; 所有起飞飞机总等待时间int landingwaitTime; 所有着陆飞机总等待时间int maxlandi
6、ngwaitTime;最大着陆等待时间int intakeoffNum; 进入起飞队列飞机数int inlandingNum; 进入着陆队列飞机数int takeoffNum; 已经起飞飞机数int landingNum; 已经着陆飞机数int t_rate;用来保存起飞速率int l_rate;用来保存着陆速率输出变量名备注t.now当前时间int takeoffNum当前已起飞飞机数量int landingNum当前已着陆飞机数量int intakeoffNum当前已入起飞队列飞机数int inlandingNum当前已入着陆队列飞机数deque takeoffq起飞队列,元素类型为飞机类
7、型deque landingq着陆队列,元素类型为飞机类型double(workTime/(endworkTime-startworkTime)跑道的繁忙程度(用机场总工作时间与跑道忙碌时间之比来衡量)double landingwaitTime着陆飞机总的等待时间double (landingwaitTime/landingNum)着陆飞机平均等待时间double (LwaitTime/landingNum)着陆飞机在队列中的平均等待时间double takeoffwaitTime起飞飞机总的等待时间double (takeoffwaitTime/takeoffNum)起飞飞机平均等待时间d
8、ouble (TwaitTime/takeoffNum)起飞飞机在队列中的平均等待时间int IntakeoffNum takeoffNum运营结束时,起飞队列中剩余飞机数量成员方法名备注void run()运行仿真void setTimer()设定计时器函数void setTakeoffTime(int t1)设定起飞所需时间函数void setLandingTime(int t2)设定着陆所需时间函数void setMaxlandingwaitTime(int mlwd)设定着陆飞机最大等待时间void setStartworkTime(string s)设定机场开始工作时间函数void
9、setEndworkTime(string s)设定机场结束工作时间函数void setHighslot(Workslot h)设定高峰期机场属性void setLowslot(Workslot l)设定空闲期机场属性void setOtherslot(Workslot o)设定一般时段机场属性1.4.2类Plane成员:方法名备注int startwaitTime开始等待时间int startworkTime开始起飞/着陆时间int workTime起飞/着陆时间1.4.3类Timer成员:方法名备注int now计时器当前时间void spend()计时累加函数1.4.4类Workslot
10、成员:变量名备注int startTime该时间段开始时间int endTime该时间段结束时间int takeoffRate起飞频率(每小时起飞数)int landingRate着陆频率(每小时着陆数)1.4.5结构 Busy成员:变量名备注bool is_takeoff跑道中是否为起飞飞机bool busy跑道是否忙碌1.5基本函数功能1.5.1 类SimulationsetTimer():设定计时器函数setTakeoffTime(int t1):设定起飞所需时间函数setLandingTime(int t2):设定着陆所需时间函数setMaxlandingwaitTime(int ml
11、wd):设定着陆飞机最大等待时间setStartworkTime(string s):设定机场开始工作时间函数setEndworkTime(string s):设定机场结束工作时间函数setHighslot(Workslot h):设定高峰期机场属性setLowslot(Workslot l):设定空闲期机场属性setOtherslot(Workslot o):设定一般时段机场属性run():模拟飞机场运营。display():该函数主要用于计算一些值,并输出在屏幕上。跑道的繁忙程度=workTime/(endworkTime-startworkTime)着陆飞机平均等待时间=landingw
12、aitTime/landingNum着陆飞机在队列中的平均等待时间=LwaitTime/landingNum起飞飞机总的等待时间=takeoffwaitTime起飞飞机平均等待时间=takeoffwaitTime/takeoffNum起飞飞机在队列中的平均等待时间=TwaitTime/takeoffNum起飞队列中剩余未起飞飞机数量=intakeoffNum-takeoffNum再使用输出语句输出这些值。1.5.2 类PlanePlane()用于初始化飞机的startwaitTime,startworkTime,workTime。Plane(int a,int b,int c)同上。1.5.3
13、 类TimerTimer()初始化当前时间。Timer(int n)同上。void spend()计时累加函数。2. 实验验证分析2.1输入的形式和输入值的范围变量名类型范围输入示例机场开始工作时间string0:0024:002:00机场结束工作时间string0:0024:0012:00高峰期开始时间string0:0024:002:00高峰期结束时间string0:0024:005:00空闲期开始时间string0:0024:006:00空闲期结束时间string0:0024:0010:00着陆飞机最长等待时间Int020高峰期飞机起飞率Int030高峰期飞机着陆率Int029空闲期飞机
14、起飞率Int0高峰期飞机起飞率12空闲期飞机着陆率Int0高峰期飞机着陆率13一般情况飞机起飞率Int空闲期飞机起飞率高峰期飞机起飞率20一般情况飞机着陆率Int空闲期飞机着陆率高峰期飞机着陆率23起飞所需时间Int1103着陆所需时间Int11022.2输出的形式控制台下运行,结果输出形式:时间: XX: XX X号起飞飞机进入起飞队列时间: XX: XX X号起飞飞机开始起飞; 等待时间: XXmin本日机场运营情况:跑道的繁忙程度: XX着陆飞机总的等待时间: XXh着陆飞机平均等待时间: XXmin着陆飞机在着陆队列中的平均等待时间: XXmin起飞飞机总的等待时间: XXh起飞飞机平
15、均等待时间: XXmin起飞飞机在起飞队列中的平均等待时间: XXmin起飞队列中剩余未起飞飞机数量: XX2.3程序所能达到的功能程序实现了如下的功能:u 设置机场的工作时间u 模拟机场的运营u 模拟机场的高峰期和空闲期u 计算出机场当天起飞/着陆的飞机数目u 计算出等待队列(起飞/着陆)的平均长度 u 计算队列的平均等待时间u 简单表示跑道的繁忙程度2.4测试数据第一组数据第二组数据第三组数据机场开始工作时间9:008:000:00机场结束工作时间12:0017:0024:00高峰期开始时间9:0015:009:00高峰期结束时间10:0017:0015:00空闲期开始时间11:308:0
16、03:00空闲期结束时间12:0011:008:00着陆飞机最长等待时间202015高峰期飞机起飞率423636高峰期飞机着陆率403335空闲期飞机起飞率121010空闲期飞机着陆率10912一般情况飞机起飞率202020一般情况飞机着陆率221722起飞所需时间333着陆所需时间333第一组数据第二组数据第三组数据跑道的繁忙程度 0.7555560.750.750694着陆飞机总的等待时间12.3333h15.8167h66.0333h着陆飞机平均等待时间17min8min11min着陆飞机在队列中的平均等待时间3min3min3min起飞飞机总的等待时间5.68333h18.4333h1
17、39.25h起飞飞机平均等待时间85min44min321min起飞飞机在队列中的平均等待时间44min21min55min起飞队列中剩余未起飞飞机数量61架148架531架3. 调试分析3.1遇到的问题及解决方法3.1.1问题一问题:在模拟结果中只有起飞飞机或着陆飞机。解决方案:算法出现问题,重新写主程序。3.1.1问题二问题:机场的忙碌情况大于1。解决方案:检查后发现,跑道功能工作时间的实现有问题,将代码进行改进。3.1.1问题三问题:产生随机数太过规则。解决方案:发现是产生随机数的函数位置有问题,进行调整。3.2技术难点分析3.2.1难点一一架飞机完成起飞/着陆花费一般超过一分钟,那么随
18、着时间的累积,该如何来判断对当前飞机的服务结束了呢。解决办法是给Plane类添加开始工作时间的参数,这样是要判断当前时间与开始工作时间的差值是否已到达起飞/着陆所耗时,即可判断起飞/着陆是否完成。3.2.2难点二单单用bool busy数据记录跑道是否忙碌会出现:当跑道忙碌时,不能判断跑道上运行的是起飞飞机还是着陆飞机这种情况。因此,我构造了Busy结构,里面不仅包括对跑道是否忙碌的的记录(bool busy)还包括对跑道上运行的是否为起飞飞机的记录(is_takeoff)。这样就可以判断跑道上忙碌时运行的是哪种飞机了。3.2.3难点三由于未采用优先队列,故起飞和着陆队列是分别独立的,那么如何
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机场 航空 管制 模拟 实验 报告 汇总

链接地址:https://www.31ppt.com/p-4034608.html