结对项目实训——电梯调度
关于电梯调度设计的初步想法
——杨波 崔海营
试想一下,我们正在构建一座高大的办公楼,它有电梯的大约配置如下:大厦有21层,四部电梯,很多乘客乘坐这些电梯,乘客的数据为:平均数量为70公斤,最重的人120公斤,最轻的人有45公斤。其他的电梯数据可以自主设置。该大楼21层分为0,1,2......20.地板0为地下停车场,1楼为大堂水平,大多数人都由这两层进入/走出大堂。
电梯名称 停靠层数 乘客限制 重量限制
1 所有楼层 10 800 kg
2 所有楼层 10 800 kg
3 所有楼层 20 1600 kg
4 所有楼层 20 2000 kg
根据我们平常搭电梯的经验,电梯在关门后运转到达各楼层的时间是很短的,而搭电梯的整个过程主要耗时在电梯开关门,乘客上下电梯和乘客等电梯时间段,这3部分。而开关门时间和人员上下电梯时间基本维持在15秒左右,所以好的电梯调度程序应该经量减少乘客的等待时间。我们的想法就是,在各层乘客按下电梯口按钮后,系统才会让合适电梯响应,并且系统给出乘客最佳的搭乘建议,并且在电梯口显示电梯的运行状态(包括运行方向和位置)。我们设想的算法中,认为电梯在运行时,除了在楼层顶端,0层和1层有回返以外,不允许有回返,因为回返的话会减速到零然后再加速的过程,耗费时间多成本多。最后,整个调度系统中,对一些特殊情况会做出特殊处理,下文详述。
假设:
1) 乘客当前所在的楼层层数X;
2) 电梯当前所在的楼层层数T;
3) 电梯通过两个楼层的运行时间是一致的(认为电梯由零加速穿越一个楼层和由正常速度减速到零穿越一个楼层的时间与正常速度穿越楼层一致。据实际体验,电梯由零加速穿过一层楼时间约为9s,而电梯匀速穿过约为6秒),令运行时间为t;
4) 电梯开关门所需时间t1;
5) 乘客走出电梯所需时间t2;
6) 乘客的等待时间t0;
7) 电梯向上运行或乘客需求方向向上用“↑”表示;
8) 电梯向下运行或乘客需求方向向下用“↓”表示;
我们认为无论何种算法,若电梯在非边缘楼层不回返,乘客在电梯内的时间是不变的,而开关门时间也有相应的固定设置。所以乘客搭电梯的时间主要是其等待电梯的时间。接下来给出乘客的等待时间函数。根据电梯的运行状态和乘客的需求状态可以得出八种情况,如下表所示:
乘客需求状态 | 电梯运行状态 | |||
X↑ | ↓(T>X) | ↓(T<X) | ↑(T>X) | ↑(T<X) |
X↓ | ↓(T>X) | ↓(T<X) | ↑(T>X) | ↑(T<X) |
根据以上的八种状态可以得出相对应的乘客等待时间:
(1).当 X↑ 时,
a. ↓(T>X),乘客等待时间t0=(T+X)*t;
b. ↓(T<X),乘客等待时间t0=(T+X)*t;
c. ↑(T>X),乘客等待时间t0=(40-T+X )*t;
d. ↑(T<X),乘客等待时间t0=(X-T )*t;
(2)当 X↓ 时,
a. ↓(T>X),乘客等待时间t0=(T-X)*t;
b. ↓(T<X),乘客等待时间t0=(40+T-X)*t;
c. ↑(T>X),乘客等待时间t0=(40-T-X )*t;
d. ↑(T<X),乘客等待时间t0=(40-X-T )*t;
程序设计中所用到的类有电梯类,乘客类;在电梯类中构造相关的调度响应函数,在乘客类中包含需求函数。然后根据乘客所提供的需求信息,再经由调度响应函数,提供给乘客等待时间最少的电梯选择。其中还要考虑一些特殊的因素:
1).由大楼外部环境导致的危险因素的应急处理,此时控制系统将会提示发生的危险因素,并将电梯停在最近楼层处;
2).当电梯人数超载或重量超载时,系统会给出提示,并且电梯停止运行,直至符合标准要求;
3).如果用户不按照系统提示,那么将会遵从用户的需求;
4).当电梯的标准承载数以及载重最大值达到临界时,电梯将不会做出响应直到临界情况改变时;
经由以上介绍,则一共有电梯内操作界面,电梯外乘客需求界面,总控室电梯情况(包括电梯状态,乘客人数)显示和应急处理按钮。
附录:时间日志如下:
人员 | 时刻 | ||||||
杨波 | 2014.3.8 9:00-10:30 | 10;30-11:14 | 13:30-14:43 | 16:20-16:50 | |||
崔海营 | 2014.3.8 9:00-10:30 | 11:14-12:10 | 12:45-1:30 | 15:59-16:20 |
关于“电梯调度的实施”,请大家参看崔海营的博客:海鹰二号 ,谢谢!