エレベータはシステムエンジニア思考を鍛えるよい乗り物です。
対象について注意深く観察し、エラーを起こさずスループットが最大化されるように設計・行動する力を付けましょう。
ボタンキャンセルの仕様を確認しておく
メーカーによって異なります。
基本的にはダブルクリックでキャンセル可能ですが、扉が開いてないと有効にならないものがあるので注意が必要です。
混雑したエレベータで1Fから最後らへんに乗り込み扉付近に立ったとき
高速にエレベータ運用するためには、ここのポジションは重要です。
- まず何階のボタンが押されているか確認します。
- エレベータが各階に止まったとき、それが…
- 1F出発時点で押されていない階の場合、降りる人はいないはずですので、乗ってくる人のためにエレベータの内部方向に詰めます。
- 1F出発時点で押されている階の場合、降りる人がいるので、一度エレベータを降りて、出入り口のスペースを作ります。
ちゃんとこの場合分けに沿った行動が取れないと、ドアが開いてからのレイテンシが大きくなってしまうので、乗った時点での停止予定階確認は必ずやっておきます。
パネルの前に立っていて降りるとき
エレベータの中にいる人の数は、ボタンが押されているフロアの数は、同じかそれよりも多くなります。エレベータの中にいる人の数が多い場合は、少なくともどこかのフロアで2人以上が降りることを意味します。
鳩の巣原理です。
n 個の物を m 個の箱に入れるとき、n > m であれば、少なくとも1個の箱には1個より多い物が中にある、という原理である。
さて、自分が降りる番になったとき、押されているフロアの数とエレベータの人数が同じであれば、そのフロアで降りるのは、あなたひとりです。この場合は速やかに降りましょう。このとき、残心("閉"ボタンを押しながら降りる行為)は不要です。最近のエレベータだと、閉じるボタンを押したときに、人がまだ降りているとセンサが察知して、すぐ閉じずにウェイトが入ります。このため、かえってエレベータが閉じるまでの時間が長くなってしまうためです。
下りで1Fについた場合
みんな一斉に降りますが、ここで考慮しなくてはならないのは、カウンターで乗ってくる人です。エレベータの出入り口の帯域は限られていますから、ダウンストリームが占めている場合は、アップストリームの乗客はのってこれません。大体、全員が降り終わってようやくのり始めるのではないでしょうか?
ところが、現代のエレベータの扉が閉じるまでのタイムアウト値は非常に短く、最後に降りる人が、"開"のボタンを押していないと、乗り込もうとした人が挟まれてしまうエラーが発生することが多くあります。
したがって、最後に降りる人は(特に1Fでは)必ず"開"ボタンを押しながら降ります。
上りで最後の1人として降りる場合
この場合も「下りで1Fに付いた場合」と同じく、"開"ボタンを押していないと、乗り込もうとした人が挟まれるエラーの可能性があります。
しかし、前のケースと違うのは、最上階に着いたのではない限り、必ずしも乗り込むとは限りません。到着したときに、上下階のどちらを向いてるかを瞬時に把握します。到着音で判断できることもあります。上に行くときは「トンティン」と音階があがるメロディーで、下に行くときは「ティントン」とさがるメロディーなものです。
まれにこの到着音メロディーが逆になっている場合がありますが、ビル管理者に連絡すると修正してもらえることがあるようです。
エレベータがまだ上に行こうとしていて、誰も乗り込む気配が無いときは、速やかに上に送ってあげなきゃいけないので、"開"ボタンを押さずに降ります。
逆に下に行こうとしていて、乗り込む人がいれば、"開"ボタンを押しながら降ります。
エレベータがなかなか来ないことにイライラするとき
エレベータがなかなか来ずにイライラすることがあります。
この問題の解決策は、ワインバーグ先生の「ライト、ついてますか―問題発見の人間学」で書かれております。
これはシステムエンジニアやっていれば必ず読めって言われるしろものなので、未読の方はこの機会にお読みください。
ーそうはいっても、アルゴリズムがクソなんだよぅ!!と思う方は、ElevatorSagaで最適なアルゴリズムを構築してビル管理者に掛け合ってみましょう。
エレベータのアルゴリズムをJavascriptで書いてビジュアル的に検証することができます。
まとめ
このように、エレベータの所作ひとつとっても、システムエンジニア的にはアルゴリズムを考え実行するトレーニングになるので、実践してみましょう。特にパネル操作は、エンジニアの瞬発力を鍛えることになるので、積極的に担当していきましょう。