面向对象之多线程(可捎带电梯调度)
1. 题目重述
本题完成的任务为多部多线程可捎带调度电梯的模拟,电梯系统具有的功能为:上下行、开关门、新增一部可以使用的电梯,电梯系统在某一层开关门时间内可以上下乘客。电梯系统可以采用任一的调度策略,只要保证在一定时间内将所有乘客送至目的地即可。
本题采用的是目的选层电梯,在电梯的每层入口,都有一个输入装置,让每个乘客输入自己的目的楼层,所以一个电梯请求除了人员id,还有这个人的出发楼层和目的楼层。
电梯类型分为A型、B型、C型,在新增电梯时指定类型。初始有3部电梯,编号分别为A、B、C,新增电梯编号为X1、X2、……、Xn。三类电梯的开关门时间都分别为0.2s。
三类电梯的可停靠楼层、上升或下降一层时间、最大载客量
A型:-3, -2, -1, 1, 15~20 0.4s 6人
B型:-2, -1, 1, 2, 4~15 0.5s 7人
C型: 1, 3, 5, 7, 9, 11, 13, 15 0.6s 8人
样例输入
[1.0]X1-ADD-ELEVATOR-A
[2.0]1-FROM--3-TO-2
样例输出
[2.4060]ARRIVE--1-X1
[2.8070]ARRIVE--2-X1
[3.2070]ARRIVE--3-X1
[3.2080]OPEN--3-X1
[3.2080]IN-1--3-X1
[3.6080]CLOSE--3-X1
[4.0090]ARRIVE--2-X1
[4.4100]ARRIVE--1-X1
[4.8100]ARRIVE-1-X1
[4.8100]OPEN-1-X1
[4.8100]OPEN-1-B
[4.8110]OUT-1-1-X1
[4.8110]IN-1-1-B
[5.2120]CLOSE-1-B
[5.2120]CLOSE-1-X1
[5.7120]ARRIVE-2-B
[5.7120]OPEN-2-B
[5.7130]OUT-1-2-B
[6.1130]CLOSE-2-B
2. 电梯调度策略
2.1 ALS调度策略
ALS电梯的请求分为主请求和被捎带请求
主请求选择规则:
如果电梯中没有乘客,将请求队列中到达时间最早的请求作为主请求
如果电梯中有乘客,将其中到达时间最早的乘客请求作为主请求
被捎带请求选择规则:
电梯的主请求存在,即主请求到该请求进入电梯时尚未完成
该请求到达请求队列的时间小于等于电梯到达该请求出发楼层关门的截止时间
电梯的运行方向和该请求的目标方向一致。即电梯主请求的目标楼层和被捎带请求的目标楼
层,两者在当前楼层的同一侧。<