SOV models for 2-lane traffic

単純なSOVモデルのプログラムをつくってみる

全体構想

  1. セルモデルなので、車の位置をコンソールに出力できる。 (グラフィカルな表示はあとで) 車のいる・いないを1,0で出力してみる。 2 . 周期的境界条件ではないので、車の数が一定ではない。単純な配列ではうまく処理できない。(ここが考えどころである。

プログラム手順

一つのjavaプログラム(クラス)を用意し、以下の手順でプログラムを組んでみる。

ステップ1 ー 基本構造と初期条件の設定 ー

初期状態をセットし、車の位置を表示してみる。

class sov_model {
	// グローバル変数のセット
	protected static int n_cell=200 , initial_n=30;  // セルの数、初期の車台数、パラメータ
	protected static double  alpha, beta;               //  モデルのパラメータ
	protected static int[]  x, v;    // 車の位置、速度 (これは、のちにリスト構造とする)


	///////////// メインメソッド //////////////////
	public static void main(String[] args) {
		int step=0;  // 時間

		setInitialCondition();
		// 状態をコンソールに書きだす

		// 時間発展の繰り返し
		for(int i =0; i < 100; i++) {
			update();
			setBoundaryCondition();
			// 状態の書き出し
		}
	}

    //////////// 初期値設定 ///////////////////
	public static void setInitialCondition() {
		// initial_n台の車をランダムに配置する
	}

	/////////// 時間発展 /////////////////////
	public static void update() {
		// 速度を計算し、それに基づいて車を進める
	}

	////////// 境界条件処理(車の生成、消滅) ////
	public static void setBoundaryCondition() {

	}


}

出力例:

OO________________________O__________O_____OO_______O__O_O___OO______O___O________O_O___OO___________O____O______________O___O___O___O________________________O_____O____O______________O_O________OO___

ステップ2: 境界条件のセット(左端での車の生成と右端での消滅)

車の生成、消滅をうまく操作するには、車の位置、速度を配列に格納する方法は効率的ではない。先端を消去したり、後ろに付け加えたりするのに便利な「リスト(構造)」を利用する。

まずは、リスト構造を勉強し、javaでの利用方法を探る。

ステップ3: 時間発展のプログラムを書く

ステップ4:  システムサイズを大きくし、基本図のデータ(速度と密度の関係)のデータをとってみる

"Traffic flow at a 2-to-1 lane junction"モデルの再現シミュレーション

オリジナル研究