アルゴリズムは「何らかの問題を解決する手順」を指し、アルゴリズムの良しあしでソフトウエアの性能が決まってくる。私たちの生活は、高度なアルゴリズムで実装されたソフトウエアに支えられている。そこで本特集ではエレベーターや信号機といった身近なアルゴリズムを例に、その一端を見ていこう。今回は、信号機のアルゴリズムの基本を紹介する。

 「朝はいつも赤になっている信号が、夜はなぜか青が多い」と感じたことはないだろうか。実は、信号機が青に変わるまでの時間は、いつも同じではない。交差点の交通量から最適な青時間を割り出している。この計算には、高度なアルゴリズムで実装されたプログラムが動いている。そこで今回は、信号機を制御するアルゴリズムに焦点を当てよう。

 具体的なアルゴリズムを見ていく前に、信号機の青時間がどのように決められているのかを解説する。信号の青時間を決めるには「重要な要素が3つある」(住友電気工業 自動車事業本部 システム事業部 新事業企画部 小林雅文 製品規格グループ長)という。それが「サイクル長」「スプリット」「オフセット」の3つだ。

信号機の青時間を決める3つの要素
信号機の青時間を決める3つの要素
[画像のクリックで拡大表示]

 サイクル長は、信号が青になってから黄、赤と変わり、再び青になるまでの時間(秒単位)を表す。サイクル長は交通量や交差点の大きさなどを考慮して最適な長さを決めるが、交通量の多い交差点ではサイクル長を長くすると、渋滞が発生しにくいことが知られている。

 サイクル長は「Webster」の近似式を使って算出するのが一般的だ。この式は「C=(1.5L+5) / (1-λ)」で表現される。Lは黄と赤の時間(クリアランス時間と呼ぶ)を表す。λは需要率と呼ばれ、現在の交通量が青時間内に通過できる最大交通量の何%に当たるかを算出したものだ。交差点がどれだけ混んでいるのかという割合に相当する。

 交差点が混んでいるときは分母が小さくなるため、サイクル長は長くなる。一方、交差点が空いている時は分母が大きくなるため、サイクル長は短くなっていく。

 スプリットは、1サイクルのうち、主道路にどれだけの青時間を割り当てるかという比率だ。サイクル長に対する百分率で表す。例えば、1サイクルが200秒の交差点で主道路側のスプリットが60%だとすると、主道路の青の時間は120秒、従道路の青の時間は80秒というようにそれぞれの青の時間を割り振る。

 夜中に大通りをドライブすると、赤信号で停車する回数が少ない。これは、スプリットによって大通りのような主道路に青信号の時間が長くなるように割り当てられているためだ。

 オフセットは、青になるタイミングをどれだけ隣接する交差点とずらすのかを表したものだ。百分率または秒で表す。例えば、1サイクルが200秒の交差点が並んでいると仮定しよう。もし、オフセットが10%ならば、交差点間の青の開始時間が20秒ずれるというわけだ。オフセットを調整すれば、ある方向に向かう信号を次々と青にするといった設定も可能だ。しかし、快適に走れるのは一方向だけであり、逆方向は制約を受けて走りにくくなる。