走进科学
每天上下楼时想过这些吗:蠡析电梯背后的科学
你走向电梯口,按下了“up”按钮,接着在那里站了许久,像是等到天荒地老才等到令人安慰的“叮”的声音。它足以让你尖叫,在你看着电梯厢所处的位置并猜测为什么电梯还没有下来的时候尤为如此。
[-]
当你在酒店大堂里对着电梯□□牙切齿的时候,很容易忽视我们正在给电梯一个极其复杂之挑战的事实。你按下呼叫电梯的按钮之后,会发生很多事情:电梯系统必须决定该在何时让哪个电梯厢去接你。它必须决定在去大堂接你之前,是否应该先从它所在的5楼前往7楼去接别人。它还必须考虑哪些人等待的时间更长,哪些方法最有效并且能减少每个人的痛苦。电梯交通是一种复杂而又微妙的舞蹈,一旦你看见了它的步伐,就会忍不住对为它编舞的工程师们致敬。
电梯的路径其实并非总是这么复杂。最早的电动升降机由人类操作员控制,站在里面的员工会开着电梯上下,他会在看到等待之人的时候按停电梯。但人工操作电梯笨拙而又昂贵,20世纪50年代,电动开关取代了他们的工作。
[-]
电梯给自己导航的时候,工程师们不得不让它们弄明白何时何地等原则。最简单的方法是让电梯按照预定的时间间隔上下穿梭。这就像等待公交车一样,你需要等待着三点十分的电梯厢前往十楼,但这种方法效率非常低。在一天中忙碌的时候,这种电梯会浪费每个人的时间;而在空闲时候,这种电梯无意义地上下又很浪费。
等到1965年,每个人都知道这个方法很糟糕。因此电梯工程师们选定了我们都熟知且喜欢的模式:乘客按下按钮呼叫电梯,接着电梯对乘客的请求作出回复。问题的棘手之处也由此开始,一天之中会前往建筑中不同地方的上下请求并不确定,电梯面对如此多选择的时候该怎么办呢?
痛苦指数
试着描绘出你心目中最好的电梯系统。什么样的电梯系统才最棒?是那种为等待时间最长的人服务的电梯吗?还是总是对最近的呼叫做出反应的电梯?亦或者是那种既可保证快速服务又可节能的电梯?
这些正是电梯工程师们努力克服的问题,但没一个像它们表面看上去那么简单。比如最显然问题,电梯应该试着减少行程时间,但它怎样才能最优化你的时间呢?
电梯工程师们甚至不知道人们最基本的目标是什么。有时候,让一个人坐更久的电梯才是最佳选择。比如,某个电梯需要等十秒钟才会来,但它只需一分钟就能将你送到目的地;而另外一个电梯会在每层楼都停顿三十秒钟。许多人觉得等待是一件很痛苦的事情,所以他们宁愿选择前者,即便他们到达目的地的时间会晚十秒钟(当然那些有电梯幽闭症的人宁愿在电梯里面少待一会儿)。因此,某些电梯并不根据时间进行最优化,而是根据某个定制的“痛苦指数”最优化,在这种情况下电梯系统会权衡每次延迟令人不快的程度。
[-]
电梯井
电梯的操作受到许多限制这一点令情况更为复杂,比如它的速度有限,比如它的下一次移动方向有两个选择,它也不能让乘客不快(比如没有在乘客想去的楼层停下)。一个好的电梯系统需要平衡这些目标和担忧。
电梯调度算法
最早也最简单的电梯调度很常见,它被称作“集中控制”或者“电梯调度算法”,由两个规则组成:
1、只要电梯里面或前面有人,且他们想去的地方与电梯目前的方向一致,那么电梯可继续在这一方向前行。
2、一旦电梯完成它目前行驶方向的所有请求,那么它就可以变换行驶方向,应答另外一个方向的请求。否则,电梯需要停下等待着人们的呼叫。
这个算法简单直接,小的办公楼或者公寓不需要高效电梯,因此它们大多采用这种算法。而在大一点的建筑中,集中控制会出现问题。比如电梯每次经过中间楼层的时候,都可以提供服务,但它永远不会在前往7楼的时候停在地下室。因此,在高楼大厦的底层和顶层等待电梯是一个噩梦。
[-]
更重要的是,大厦中通常不止一部电梯。如果每部电梯都遵循电梯调度算法,那么在高峰时期电梯会开始跳过一些楼层。它们会在建筑中部聚成一团,甚至有可能两次为同一个呼叫服务。
为了处理这些问题,工程师们想了很多办法。比如让电梯彼此之间进行交流,如果1号电梯在上楼,那么2号电梯就可以开始处理大堂里的请求。另外,他们也会将电梯分配给特定楼层。你可能曾见过电梯等在大堂中,电梯门大开的场景。这被称作“停留”策略,即闲置的电梯会前往发出请求最多的楼层。感谢交通预测和实时监控,电梯可以在策略之间进行转换,以便适应高峰时期。
计算的复杂性
20世纪70年代,可重复编程的计算机面世的时候电梯程序又发生了变革。如果某人有了新的电梯路径策略,那么他们将不再需要等待电梯在大厦中的试验,只需在软件模拟中测试他们的想法即可。
那时涌现出了不少新算法,其中一个算法到如今依旧非常流行,它被称作“预估到达控制时间”。计算机会考虑所有电梯厢朝着某个请求移动的情况,并分配它认为最快的电梯厢执行任务。另外一个受欢迎的算法是永远让电梯厢处理最紧急的呼叫,创造出对乘客而言“最好的”结果:缩短时间、最节能或者其它设计师想要优化的东西。
如果你在纽约万豪酒店或者其它建立于20世纪90年代之后的摩天大楼中坐电梯,那么你就能感受到计算机化趋势的极端——“目的地调度”。在这些建筑中,比起简单地按上下按钮,你可以按下你想去的楼层按钮,接着它就会告诉你哪个电梯将会带着你前往你要去的楼层。
由于它们确切地知道你要去哪里,因此系统能够更有效率地工作。前往同一楼层的人聚集在一起,将电梯变成了快速列车。在这种情况下,也许你会等得更久一点,目的地调配系统常常会根据一天之中的时间来变化它们的优先选择。在早晨的高峰期,净载货量是关键,因此你必须等待更长时间以便让系统减少总体的运输时间。下午,当同时乘坐电梯的人较少的时候,它们可以更快地送你去想去的楼层,减少等待的痛苦。
[-]
在所有这些策略选择中,工程师们该如何选择最佳算法这个初始问题总在发生变化。老实说,最成功的方法之一是将一切交给计算机,让它来决定。工程师们可以利用计算机学习技术,告诉计算机什么是成功的算法并让控制器自行模拟实验。每次系统会先观察模拟电梯的状态、每个呼叫的参数,再决定该做什么并测量结果。最终软件会根据每种因素的结合采取不同的策略。有了这些复杂的策略,就连开发出软件的人通常都不明白为何它会做某些事。
电梯调度是一个错综复杂的平衡行为。每次你按下呼叫按钮的时候,你就成为了不确定因素的一部分。因此下次当你需要长时间等电梯的时候,可以花点时间赞美卑微电梯的复杂性。
当你看到电梯短距离赛跑背后的魔法时,就连电梯延迟也会变成一件令人开心的事。
本文译自 Popularmechanics,由 肌肉桃 编辑发布。