約20年ぶりにプログラミングをしました!
しかも新しい言語を覚えて、です。
—
飛行機に乗るとき、
「後列の方、45番より後ろの方をまずご案内いたします」
というようなアナウンスが流れて、乗客を3分割もしくは2分割して、後ろの方から搭乗させる、ということがよくあります。
後ろの方から乗った方が、途中で詰まったりしないし早いような気がするというのも、わからなくはないのですが、私は、いつもこのことには疑問を持っていました。
最初に後ろの人だけ案内すると、後ろの方だけ混雑します。
その後、真ん中だけ混雑し、最後に前だけ混雑します。
3機の小さな飛行機を連結して乗せているようなものです。
ランダムに乗せた方が早いんじゃないか?と常々思っていました。
私も90年代までは、プログラマーでしたので、久々にプログラムを書こうと思いましたが、20年前の環境なんて今はなく、新たにPython(パイソン)というプログラミング言語を覚え、搭乗シミュレーションプログラムを書いてみました。
結果だけ先に言うと、
3分割するより、ランダムに乗せた方が約20%早い!
ということがわかりました。(*1)
分割搭乗で飛行機の搭乗は、早くなりませんが、搭乗口に大勢が並んで混乱することを避ける意味などはあるんだろうと思います。
動画は上がランダムに搭乗した場合、下が3分割して搭乗した場合です。
150席のエアバスA320に、150人の座席指定されている乗客が搭乗するというシミュレーションです。時間は倍速です。
やってみると、予想通り、3分割した方が行列が長くなりがちで、飛行機の中で待たされることがわかります。
100回ずつ試行したところ、
ランダム搭乗 平均 3分41秒(最短3分25秒、最長4分2秒)
3分割搭乗 平均 4分20秒(最短4分2秒、最長4分38秒)
となりました。
いろいろと条件を変えてやってみたところ、荷物を持っていて、着席にかかる時間が長くなると、さらに差が開くことがわかりました。
ランダム搭乗の方が効率がよく、荷物を棚にあげたり時間のかかる乗客が多いほど、ランダム搭乗の方がさらに良くなる、というのが結論です。
(*1)座るときに一定時間、止まるという条件でシミュレーションしました。本来は窓際の席の方が時間がかかとか、もっと諸条件を考えるべきですが、簡単なモデルにすることでかえって本質的なことが見える場合もあります。
歩行速度4.25km/時、シートピッチ74cm、歩行者の間隔73cm、着席にかかる時間3秒でシミュレーションしています。