◇ アルゴリズムというのは、
「何らかの問題を
解決する手順」を指し、
アルゴリズムの良しあしで
ソフトウエアの性能が決まってくる。
我々の生活は、
高度なアルゴリズムで
実装されたソフトウエアに支えられている。
そこで信号機といった
身近なアルゴリズムを例に、
その一端を見ていこう。
◇ 今回は、信号機のアルゴリズムの
基本を紹介する。
「朝はいつも赤になっている信号が、
夜はなぜか青が多い」
と感じたことはないだろうか。
実は、信号機が青に変わるまでの時間は、
いつも同じではない。
交差点の交通量から
最適な青時間を割り出している。
この計算には、高度なアルゴリズムで
実装されたプログラムが動いている。
そこで今回は、信号機を制御する
アルゴリズムに焦点を当てよう。
◇ 具体的なアルゴリズムを
見ていく前に、
信号機の青時間が
どのように決められているのかを説明する。
信号の青時間を決めるには
「重要な要素が3つある」という。
それが
「サイクル長」
「スプリット」
「オフセット」 の3つだ。
◇「サイクル長」は、
信号が青になってから黄、赤と変わり、
再び青になるまでの時間(秒単位)を表す。
「サイクル長」は交通量や
交差点の大きさなどを考慮して
最適な長さを決めるが、
交通量の多い交差点では
「サイクル長」を長くすると、
渋滞が発生しにくいことが知られている。
「サイクル長」は「Webster」の
近似式を使って算出するのが一般的だ。
この式は
「C=(1.5L+5) / (1-λ)」
で表現される。
Lは黄と赤の時間(クリアランス時間)
を表す。
λは需要率と呼ばれ、
現在の交通量が青時間内に通過できる
最大交通量の何%に当たるかを算出したものだ。
交差点がどれだけ混んでいるのか
という割合に相当する。
交差点が混んでいるときは
分母が小さくなるため、
「サイクル長」は長くなる。
一方、交差点が空いている時は
分母が大きくなるため、
「サイクル長」は短くなっていく。
◇「スプリット」は、1サイクルのうち、
主道路にどれだけの青時間を
割り当てるかという比率だ。
「サイクル長」に対する百分率で表す。
例えば、1サイクルが200秒の交差点で
主道路側のスプリットが60%だとすると、
主道路の青の時間は120秒、
従道路の青の時間は80秒というように、
それぞれの青の時間を割り振る。
夜中に大通りをドライブすると、
赤信号で停車する回数が少ない。
これは、「スプリット」によって
大通りのような主道路に
青信号の時間が長くなるように
割り当てられているためだ。
◇ 「オフセット」は、
青になるタイミングを
どれだけ隣接する交差点と
ずらすのかを表したものだ。
百分率または秒で表す。
例えば、1サイクルが200秒の交差点が
並んでいると仮定しよう。
もし、オフセットが10%ならば、
交差点間の青の開始時間が
20秒ずれるというわけだ。
オフセットを調整すれば、
ある方向に向かう信号を
次々と青にするといった設定も可能だ。
しかし、快適に走れるのは
一方向だけであり、
逆方向は制約を受けて走りにくくなる。
信号機はこのように高度なアルゴリズムで
実装されたプログラムで制御されている。
この仕組みを理解すれば、
なぜ朝と夜で青信号の時間が異なるかが
わかるようになる。
今日一日の人生を大切に!