设计一个电梯模拟系统。
这是一个离散的模拟程序,由随机事件驱动,以模拟时钟决定乘客或电梯的动作发生的时刻和顺序,系统在某个模拟瞬间处理有待完成的各种事情,然后把模拟时钟推进到某个动作预定要发生的下一时刻。
要求:(1)模拟某校九层教学楼的电梯系统。
该楼有一个自动电梯,能在每层停留,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来到该层候命。
电梯一共有八个状态,即正在开门(Opening)、已开门(Opened)、正在关门(Closing)、已关门(Closed)、等待(Waiting)、移动(Moving)、加速(Accelerate)、减速(Decelerate)。
(2)乘客可随机地进出于任何层。
对每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。
最后一个人放弃能不能取消按键?(3)模拟时钟从0开始,时间单位为0.1秒。
人和电梯的各种动作均要消耗一定的时间单位(简记为t),比如:有人进出时,电梯每隔40t测试一次,若无人进出,则关门;
关门和开门各需要20t;
每个人进出电梯均需要25t;
电梯加速需要15t;
下行时要不要加速?上升时,每一层需要51t,减速需要14t;
每一层和减速?下降时,每一层需要61t,减速需要23t;
如果电梯在某层静止时间超过300t,则驶回1层候命。
驶回本垒层间接到消息?(4)电梯调度规则如下:①就近原则:电梯的主要调度策略是首先响应沿当前行进方向上最近端的请求直到满足最远端请求。
若该方向上无请求时,就改变移动方向;
②在就近原则无法满足的情况下,首先满足更高层的请求;
③电梯的最大承载人数为13人,电梯人数达到13人后,在有人出电梯之前,不接受进入电梯的请求;
④乘客上下电梯时先出后进。
进电梯时乘客是按发出乘坐请求的顺序依次进入,每次只能进入一人且每个人花费的时间都为25t;
⑤电梯在关门期间(电梯离开之前)所在层提出请求的乘客同样允许进入。
(5)按时序显示系统状态的变化过程,即发生的全部人和电梯的动作序列。
扩展要求:实现电梯模拟的可视化界面。
用动画显示电梯的升降,人进出电梯。
设计有下列对象:电梯、人、电梯控制板及其上各种按钮、模拟时钟等。
2025/5/8 10:04:09 17.04MB 数据结构 电梯模拟
1
C语言实现电梯模拟,不过其中用到了少量的C++语法(引用参数和变量声明)。
设计一个电梯模拟系统。
这是一个离散的模拟程序,因为电梯系统是乘客和电梯等“活动体”构成的集合,虽然它们彼此交互作用,但它们的行为是基本独立的。
在离散的模拟中,以模拟时钟决定每个活动体的动作发生的时刻和顺序,系统在某个模拟瞬间处理有待完成的各种事情,然后把模拟时钟推进到某个动作预定要发生的下一个时刻。
2025/4/14 0:30:22 32.63MB 数据结构 电梯模拟 C语言
1
用java写的5层电梯模拟实验,包括开关门
2025/1/16 17:48:01 6KB java 电梯 5层
1
数据结构课设、带报告、电梯、两部
2024/8/9 0:34:28 26.78MB 数据结构 课设
1
花了半个月写的一个电梯模拟器支持功能:设定电梯速度,设定楼层范围,设定访客所在楼层,设定要到达的楼层,实时状态显示,电梯轮巡自检,DEBUG模式,自动清除缓存,设定循环间隔蛮好玩的一个小程序..用JFrame写的,代码复杂度不高
2024/6/28 9:38:43 26KB java 源码
1
1. 楼层由上至下依次编号为9,8,7,6,5,4,3,2,1,0。
每层都有向上和向下两个按钮,对应20个变量callup[0...9]和calldown[0...9]。
电梯内10个目标层按钮对应变量out[0...9]。
有人按下某个按钮时,相应的变量就增1,一旦要求满足后,该变量就减1。
当有多人的需求相同时,相应的处理时间就增长,用于模拟真实的情况。
2. 电梯处于三种状态之一:UP(上行),DOWN(下行)和Idle(等候)。
如果电梯处于Idle状态且不在1层超过20个时间单位时,则驶回1层。
当电梯处于Idle状态时,一旦收到前往另一层的命令,就转入UP或DOWN状态,执行相应的操作。
3. 其它重要的变量有:floor----当前电梯外乘客所在楼层;
calling----当前电梯外按下按钮的乘客所在的楼层;
up_or_down----电梯外某层按钮的状态(向上箭头或向下箭头);
waittime----电梯空闲时的等待时间;
total----电梯内的总人数(上限为15人);
电梯的数据结构:state----电梯的状态(UP,DOWN,IDLE)current-----电梯目前所处楼层imovingto----电梯的目标楼层队列成员的数据结构:floor―――所在楼层up_down―――目标方向(向上或向下)structqueue*next―――指向下一个成员4. 【进入排队】先在等候队列中查找,若有信息相同(所在楼层相同,目标方向一致)的成员,则对队列无任何操作。
若没有,则在队列末尾插入该人。
5. 【进入电梯】电梯根据人数停留一定时间单位,每进入一个人,从队列中删除该人,callup[ele.current]或者calldown[ele.current]减一,total加一。
6. 【走出电梯】电梯根据人数停留一定时间单位,每出去一个人out[ele.current]减一.7. 【电梯的活动】E1.[在一楼停候]若有人按下一个按钮,则调用相关函数(比如入队,置楼层标志位为1等)处理当前事件.E2.[改变状态]如果电梯处于Up(或Down)状态,但该方向的楼层却无人等待,则要看反方向楼层是否有人等待,而决定置State为Down(或Up)还是Idle。
E3.[让人出入]如果电梯不空且out[ele.current]!=0时,则电梯等候在该楼层出电梯的人离开。
接着检验在该楼层是否有等候前往同一方向去的乘客,若有则等候他们进入电梯。
总原则是先下后上。
E4.[在某楼层(非1楼)停候]若电梯到达目标楼层后,队列为空,则电梯在该楼层停候一定时间,在停候期间若有新的呼叫,则立即转入处理程序处理,否则返回一楼停候。
8. 电梯在上升或下降过程中需要不停地对当前方向上的最终楼层作调整。
比如当前向上,最终楼层为6楼,而有乘客在8楼按了按钮,则最终楼层调整为8楼。
相反方向同理。
2024/4/2 8:05:07 59KB 电梯模拟 用C语言写的
1
该电梯模拟系统设计了良好的界面,以及自主设计了电梯调度算法,保证电梯能搞在负载均衡的前提下实现乘客的快速响应,其实现采用了栈、队列等基本数据结构,在VS2017编译器,win10平台上开发,整个电梯的数据结构类型设计以及电梯调度算法对想要实现类似离散的模拟系统有指导意义。
2024/1/26 13:52:46 257KB elevator
1
看到好多的学校要什么电梯模拟的程序,本人也试着写了个,功能算是完全模拟咱学校图书馆的电梯,O(∩_∩)O~
2023/9/26 9:30:51 927KB 电梯控制,模拟,MFC
1
电梯模拟问题,模拟某校九层教学楼的电梯系统。
该楼有一个自动电梯,能在每层停留。
九个楼层由下至上依次称为地下层、第一层、第二层、……第八层,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来到该层候命。
乘客可随机地进出于任何层。
对每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。
模拟时钟从0开始,时间单位为0.1秒。
人和电梯的各种动作均要消耗一定的时间单位(简记为t),比如:有人进出时,电梯每隔40t测试一次,若无人进出,则关门;
关门和开门各需要20t;
每个人进出电梯均需要25t;
如果电梯在某层静止时间超过300t,则驶回1层侯命。
2023/9/16 10:28:27 754KB 电梯模拟 课程设计
1
共 13 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡