12.3 电梯调度算法
(进阶项目)
需求:
需求参数:
办公楼一共有4部电梯,每部电梯如果没有请求信号,电梯可以设置停靠在任意楼层。
每部电梯最大可以运送10名乘客。
电梯总共分为20层。电梯停靠某一层无人使用时,电梯门默认关闭。
每个电梯在每一层有上下两个按钮,向电梯发出请求需要上行和下行,1层只有上行按钮,顶楼20层只有下行按钮。
电梯内部有开门,关门,以及20个楼层按钮。
电梯到达某一楼层,电梯门打开/关闭各花费时间0.5秒。
人员进/出电梯,每人各花费时间0.5秒。
电梯运行时,启动加速/减速停止各花费时间0.5秒,上升或下降每一层花费时间1秒。
一个人从1层到达2层的过程为(电梯在1层,关门状态):
1层开门0.5s,进电梯0.5s,1层关门0.5s,启动加速0.5s,上升1层1s,减速0.5s,开门0.5s,人出来0.5s
电梯使用中有若干场景,包括:
随机人数同一时间出现在随机楼层,去往随机楼层。
随机人数随机时间出现在随机楼层,去往随机楼层。
大部人员都在1层,要去随机楼层。
大部人员随机在1层以外,要去1层。
电梯情景文件举例:
每一行为一个用户,用户数不定。格式为:
用户编号,用户出现时间点(从0秒开始),所在楼层,目的楼层
1,0,2,4
2,0,8,5
任务1:
编写程序实现电梯算法中的各类。
包括:建筑,电梯,楼层,人员,并实现各类的方法。
任务2:
编写程序实现模拟电梯运行的模型。
包括:一个人员发出请求(按电梯),电梯运行,运送人员到指定楼层;
计算出人员使用电梯情况,包括等待时间,到达目的时间等。
任务3:
编写程序实现模拟电梯在给定场景中的运行。
能够读取场景文件,获取人员在楼层分布情况,目的地;
将人员加入到各自楼层的等待队列中;
能够模拟出电梯运行情况,包括:运行,开关电梯等;
能够输出从0秒开始的时间线,每个人员上下电梯的动作和时间点;
计算并输出每个人员使用电梯情况,包括:出现时间,等待时间,到达目的时间等;
计算并输出每个电梯运行的情况:包括运送的人员,运行时间,上下楼层的汇总等。
任务4:
调整电梯运行的参数,加入:
电梯空闲时停留在哪一层。
4部电梯是否联动,即取消每个电梯的上下行按钮,由建筑在每一层提供统一的上下行按钮。
可以让某一部电梯负责某一段楼层,或根据运行情况实时调整。
根据以上参数的调整,确定何种参数组合能够实现:全部人员到达目的地所需时间最少。