Tuesday, February 28, 2006
« When is data like rabbits? | Main | Saint David's Day »

Today I came to the office to find a small cluster of people standing around waiting for a lift (US elevator) on the ground floor. They'd already pressed the "up" button and were patiently waiting for the doors to open. It seemed they might have some time to wait, as two of the three indicators showed their respective lifts were at the ground floor already. But there is a secret trick known only to initiates of the secret Otis Society (and perhaps to a few obsessive-compulsive individuals not affiliated with the O.S. who may have stumbled onto the trick through skills learned by trying all possible combinations of commands in text adventure games). In such situations, pressing the "down" button gets you an "up" lift: the doors open and the "going up" indicator lights up (and indeed, "going up" has priority: if one passenger presses the "4" button, and another presses the "B"(basement) button [um, maybe I'll use negative numbers for levels of basement as my local terminology of G, LG, B may confuse], the lift will go up first). It's especially strange, as the lifts often exhibit "typical" (ie, expected) behavior as outlined in perhaps excessive fashion below* (and perhaps not without errors).

If a button for a particular floor is pressed from inside the lift (hereafter, simply "internal button"), the lift will move toward that floor, stopping at any intermediate floors whose internal buttons have also been pressed. If someone presses an internal button corresponding to a floor in the opposite direction to the current direction of movement (ie, the lift is on floor 2, heading toward floor -1, and someone presses "4"), the lift will continue its downward motion until it is completed, and only then reverse. If someone presses an internal button beyond the range of the current movement but in the same direction (ie, someone presses "-3" while the lift is still moving toward -1 in the example above), continuing to move in the same direction takes priority over a change in direction (therefore in the above examples, the lift will travel from 2 to -1 to -3, and only then to 4). During this process, the lift will stop at any floor for which a call button outside the lift (hereafter, "call button") has been pressed, but only if the call button's direction matches the lift's current direction of movement (if the lift is going down, but you're waiting to go up, it'll pass you by). If the lift is not in motion from an internal button press, it will respond to the first call button press, traveling toward that floor with plans to stop there and give priority to movement in the desired direction. It can, however, be intercepted by a call button press in the direction of motion which could scupper the original lift-caller's plans (for example, the lift is waiting dormant on 4. Someone on 0 presses the "UP" call button. On the lift's way down to 0, someone on 2 presses the "DOWN" call button and intercepts the lift. This interloper presses "-3" which now overrides the call button from 0. The lift passes by 0 without opening, disgorges the passenger on -3, but now the lift is going upwards toward the unanswered call on 0 so it will likely collect the passenger on 0. Unless s/he has taken the stairs).

This simple system is slightly complicated by the fact that our building has not one, but three lifts (the very-slow-opening and jerky one on the left side, the middle one, and the one that's usually broken**). This necessitates some sort of priority system for "accepting" call button presses (otherwise all idle lifts would race for each call button press). It seems to be primarily on the basis of direction (if lifts are waiting at -4, 3 and 5, and a person on 1 presses the up call button, the lift from -4 will respond in order that no change of direction will be necessary, assuming the person on 1 is not a joker actually wishing to go down). But if one of the other lifts gets to 1 first (perhaps someone from 3 goes to 1), the poor lift from -4 will nonetheless continue to 1 and wait there for further instructions. Except there's yet another constraint on the system: if there is no lift at 0, any lift without instructions should go to 0 and wait there (presumably because 0 is the main entrance, hence the area with the highest lift demand). There may be other such constraints as some of the lifts do sometimes seem to move without any button-pressing ("seem" being the operative word, I haven't conducted enough of an investigation to be sure. It may also be ghosts). Anyway, all this (and I mean ALL) still fails to explain why the lifts sometimes sit idle at 0, waiting for a "down" call which means "up" and ignoring any "up" call.




*N.B. This entire system can be overridden by the use of an "Operator key": insert the key and the lift will obey only internal button-presses and ignore any call buttons.

**Knowing this, a savvy lift user might intentionally use misleading lift-calling tactics in order to request the much-faster lift. It's risky behavior, though, and requires a decent sense of traffic patterns in the building (e.g., don't do it within five minutes of an o'clock, because the building is flooded with students going willy-nilly between all sorts of floors) in order to avoid undesirable detours.