« 一个简单的 A star 寻路算法实现 | 返回首页

电梯的交互和调度

今天在网上和人闲扯,说到电梯的交互设计或许是有问题的。一般在楼宇的电梯区,会设置上下两个按钮,让乘客表达自己是要上行还是下行。如果在电梯区显示电梯当前所在楼层的话,就会有人理解为:上是指让电梯轿厢向上运行,下是指让其向下。一旦这样理解,就会输入错误的指令。

几乎每个有过在高层办公室上班经历的程序员都参与过电梯调度算法的讨论。看来,在饭点挤电梯是程序员们的共同记忆。(另一个永恒话题是怎样提高厕所的使用效率)我也不例外,20 多年里,我曾经反反复复和人讨论过这个问题。现在再也不用挤电梯了,似乎可以把过去考虑过的方案记录一下。

先说说现实存在过的方案:

大多数方案都是为了提高电梯的运营效率。要么为了节能,要么为了更快的满足乘客需求,要么为了提高高峰时的吞吐量。

大部分高层建筑都把多部电梯按楼层分区。有些电梯只服务低层,有些服务高层。如果楼层更多时可能还会分出更多区间。对于超高层建筑,也有把顶楼超高区单独分割出来,需要转电梯的。

这个设计显然是因为对于高层建筑,电梯的需求按楼层分布是金字塔型的。乘客永远都需要从地面进入,越往上,乘客越少,而路程越长。乘客的目的地却是接近均匀分布的,如果让乘客随机进入任意轿厢,最终电梯会在更多楼层停留开门,将乘客预先分组就显得很有必要。

另外,为了解决繁忙时段的吞吐量问题,电梯也可能按单双层分组。这样可以把一部分运力转嫁到楼梯上,减少每部电梯的停留时间。类似的方案还有针对乘客类型设置专用电梯,比如让饭点运输食物的乘客走专用梯,而减少乘客使用电梯的需求量;让领导们使用专门电梯,提高他们的幸福指数以获得重要工作上的效能增益,等等。

也有一些办公楼会让乘客预先输入自己的目的地,而不是简单的选择上行还是下行。这样,系统理论上可以统筹安排。我也使用过这样的系统,效果嘛,一言难尽。只能说理想很丰满,现实很骨感。电梯公司想乘着软件系统升级多赚点钱无可厚非,但复杂系统就是这样:很难把它实现得正确。


回到文章开头的话题,我的观点是,与其做一个交互更复杂的系统妄想提高效率,还不如进一步简化它。

其实,电梯的外部控制按钮或许并不需要上下两个?只要一个召唤按钮就够了。

首先,这样的交互设计是没有歧义的:我需要使用电梯,就召唤它过来。

其次,用上下行来对乘客预分类过于粗糙,实际中对效率的提升非常有限。

如果建筑只有一部电梯,看起来对乘客分类的意义最少:反正乘客都必须乘坐这唯一一部电梯去目的地的,即使电梯目前运行方向相反,提前进轿厢的区别也仅仅是在里面等待还是在外面等待。

有同学说,不对啊,假设电梯目前从 1 楼向上运行到 10 楼顶楼,5 楼的人想下去,按了召唤按钮,电梯就可能在上行过程中做无谓的停留。如果电梯按钮分开上下,需求就明确了,电梯只会上去后下行时才会停下来。

我的观点是,其实电梯在上行时停下来,乘客就可以进去了。这样电梯之后下来时就不用再次在 5 楼停下来。无论是电梯运行时间,还是乘客抵达 1 楼的时间,差别都微乎其微。

而且就我的实际经历:在饭点想乘电梯下楼的话,往往是只要电梯开门了就进去,哪管它上行还是下行。你不进去等下就进不去了。稍低楼层的人更多的是反向坐电梯,不然就可能要等到餐厅快打烊了才吃得上饭:因为你不反向乘电梯的话,电梯下行的第一站永远是最高层,比你楼层高的乘客会优先使用。电梯的设计运力难以满足高峰期的需求。

在这种使用场景下,略低楼层的乘客往往上下两个按钮都会按下,在电梯上行时就先进入轿厢,而当电梯折返下行路过同一楼层时,电梯再次开门,外面却已经没有乘客了。效率反而降低了。如果电梯只设一个召唤按钮,这个问题就可以回避掉。

ps. 真要在高峰期保证公平的话,电梯需要设置成:单趟只停一个楼层,然后循环这个目的地。例如,一部高层电梯可以依次循环停 30, 29, 28, .... ,每一趟只在目的地停一次。这个运行模式可以在电梯不满载时自动取消,或是按高峰时间段固定开启。可惜我工作过的办公楼还没有见过电梯系统能设置成这种公平模式的。

这种单按钮召唤的设计,只要算法合理也并不比上下两按钮的低效。上下两按钮只是预先把乘客分开上行组和下行组,避免只有一组乘客时电梯反向停留(例如在上行阶段为下行乘客开门)。单按钮系统可以在载荷超过阈值时拒绝响应外部召唤请求,在完全已进入轿厢的乘客都送达目的地后,再根据外部召唤情况跑下一趟。这样就可以做到:延迟处理外部请求队列,以延长乘客外部等待时间为代价,增加单趟满足的乘客数量,从而提高整体的运行效率。

那么,如果电梯系统有多部电梯时怎样处理呢?

我觉得也可以不用上下行按钮预分类乘客。而是将电梯本身分为上行开门和下行开门。和高低层分类一样,乘客应该自行去上行区和下行区召唤电梯。鉴于除了地面的乘客趋向于上行外,其实绝大多数楼中乘客使用电梯都是下行的。多部电梯的系统只要保留一部梯为上行开门就够了。而且,即使你需要下行,其实也可以进入这部梯,它或许并不慢。因为一旦反向抵达有乘客召唤的最上一层,之后它下到一楼是直达的(下行不开门)。

Comments

单按钮电梯的思路是有意义的,但是这里想补充一点:在外面等待对于承载压力大的电梯很重要,下行人提前进去的人挤占了上行人的位置,导致运载能力降低许多。 我甚至见过某写字楼的老化电梯只能坐六个人,这就使每一个位置都变的珍贵许多。。。
这个深有体会,公司里暴挤 有用的策略: - 电梯分高低层/奇偶层停,缺点就是可能需要换层或走一层 - 提供送餐服务,减少高峰期拥挤,延长就餐时间,错峰出行 - 加装新电梯,除了成本高,最解决问题 没用的策略: - 在外面直接选目标楼层,几乎是负优化
还是在电梯外直接输入你要到的楼层好,然后交给电梯调度算法就好了,使用者就不会感到歧义了。
未来完美的解决方案是给每层的电梯口加装摄像头甚至使用脑机接口和楼内的每个人连接 ;-p
不如写个程序设置过往遇到的状况、行为,验证下理想与现实及心理预期🤔
如果有一條來回行駛的無人電動軌道運輸車輛,也採這個觀念,不管你要向哪方向的站點走,不需要雙向都有軌道運輸車輛,概念是否相近?
我们这办公楼的电梯就有个问题,如果你在1楼准备上楼,早上人很多的时候。 你如果只按上,那么有两种情况,第一种是只下来一个电梯,到了-1层,然后1层,结果人满为患; 第二种情况是下来两个电梯,一个到1层,一个到了-1层,1层的电梯人满为患,-1层的直接越过1层(因为1层已经有电梯停了),往上走了,而-1层的通常只有几个人。 所以就是要上下两个一起按,这时候都会过来两部电梯,这时候又会有两个结果,第一个是一个上去电梯挤满了上去了,下去-1的电梯也挤满了人下去了,-1层接了几个人上去,当然对于他们太挤了,有些人可能就不上等下一班了; 第二种情况就是两个电梯都挤满了人,触发了满载,直接就不下去了,到了1层就开始上去,导致-1层迟迟等不到电梯,就算等到了,也会遇到上个情况,里面人也满了。 当前,对于1楼来的,大家都是后者,一是保证自己肯定能做到电梯,不会等下一班,二是-1层停车场的人本省就没那么多,他们来的一般也很早(可能是防止堵车留多了余量)。 现在可能是有人向物业反馈,他们1层的上去的也按下,结果-1层的坐不上电梯了,所以现在门口保安早高峰时候会过来协调一下
控制机械的按钮,人们拿来当 imperative style 使用。但是电梯这里有点特别,它需要一个按钮同时调度多个电梯(比如你要从5楼下去,左边电梯在1楼右边在10楼),所以它必须是 declaritive style的。
上下按钮确实不是一个好的设计,不过一个按钮也没必要。 其实在电梯外面也用楼层数字按钮就是了,直接按想去的楼层,这才是符合人类直觉的设计。 在没有芯片控制的时代,这样的设计可能判断起来比较麻烦,但现在没有什么难度也不会增加什么成本。跳出古早设计框架,才能想出符合当前时代的设计。

Post a comment

非这个主题相关的留言请到:留言本