一次元交通流
モデルを作る
高速道路上での渋滞形成を念頭に置いて,自動車の流れをシミュレーションする
セルオートマトンモデルを作ろう。
追い越しを考慮しなくてよければ,道路は一次元空間であるから,一次元のセルオートマトン
でよい。
高速道路上の自動車を表現するために、以下の規則を考える。
これは,Nagel-Schreckenbergモデルと呼ばれるモデルの簡易版である.
- 各車両は速度vを持つ。これは次の1ステップで何マス進むかを表わす。最高速度Vmax
があり、それ以上速くは走らない。
- 各車両は最高速度以内で、できるだけ速く走ろうとする。ただし、加速には時間がかかり、
加速時には1ステップごとにvが1ずつ増えるものとする。
- 衝突を避けるため、距離v以内に別の車がいるときは、現時点での前車の位置より1マス前の
位置まで進んで停止する(位置を進めるのに加え、速度をv=0とする)。
これだけである。
また、道路の設定と初期条件であるが、今回は簡単のために
- 道路は両端がつながったサーキットとする。
- スタート時は全車両が停止している
- スタート時の位置はランダムまたは好きな配置が選べるものとする
とした。実は現実の道路とサーキットとでは渋滞の発生のしかたが違うのだが、それはまた
考えてもらうことにしよう
準備
以下のURLから、traffic.tarというファイルをダウンロード。
http://www.cp.cmc.osaka-u.ac.jp/~kikuchi/kougi/simulation/traffic.tar
例によって、これを適当なディレクトリで展開すると、
実行プログラムと、入力データファイルのサンプルができる。
入力データファイルをtr.inとして実行するには
とする。入力データファイルがなければ、Vmax=5で、全格子点の2割に
ランダムに車両を配置してシミュレーションを開始する。
なお、このプログラムに限り、実行制御用のボタンがついている。
入力データファイル
入力データファイルは3行または4行以上からなり、
あるいは
のようなもの。
一行めは、最高速度を設定する。5であれば、速度として取りうる値は0,1,2,3,4,5の
5通りである。
二行めは、初期配置をランダムにするか好きに設定するかを選ぶ。この行にrと書かれていれば、
三行めに車両密度を設定する。上の例では全格子点の四割にランダムに車両が置かれる。
二行めがそれ以外のときは、三行め以降に初期配置を書く。上の例は七台が連なった初期状態である。
初期配置は何行にわたってもよい。ひとマス置きに3台並べたいときは
1 0 1 0 1
とする。