コンテンツにスキップ

Simulation/ランダム性

確率性はシミュレーションのシナリオ中で現実を再現する上で重要な側面です。 シミュレーションに偶然性を与える方法はいくつかあり、以下で解説します。

乱数生成(Random Number Generation:RNG)

SUMO は乱数生成にメルセンヌツイスターアルゴリズムを実装しています。 この乱数生成器(RNG)は(任意の)seed 値で初期化され、デフォルトでは23423です。 固定シード値からは同じ乱数列が出現するので、この設定によって全てのアプリケーションは決定論的に動くことになります。 シード値は--seed<INT>によって変更できます。 --randomを使うとシード値は現在のシステム時刻を使うようになり、完全にランダムな結果になります。

シミュレーションの異なる側面を分離するために、複数の RNG インスタンスが使われています。

  • 車両読みこみ時のランダム性(車両タイプの分布、速度の分散...)
  • 確率的交通流
  • 車両運転ダイナミクス
  • 車両デバイス

分離は読みこまれた車両がその前の車両に影響を及ぼさないように行なわれます。 全ての RNG が同じシード値を使います。

経路分布

車両はシミュレーションにおいて、固定経路(<vehicle>)を用いるか、Origin-Destination 対(<trip>)で生成できます。 三番目の方法として、経路集合(<routeDistribution>)を指定して車両が分布に従ってランダムな経路をとるようにできます。 詳細は[経路分布]を参照してください。

車両タイプ分布

<vTypeDistribution>を定義することで、不均一な車群を簡単にモデリングすることができ、車両は自らのタイプをこの分布に従ってランダムに選ぶようになります。 詳細は[車両タイプ分布]を参照してください。

速度分布

デフォルトでは、SUMO の車両は通行する車線に決められた最高速度まで加速します(その車両タイプの最高速度が許す限り**。 こうした振舞いは<vType>要素のspeedFactor属性で変更することができ、車両は現在の速度制限に対してこの因子に慕はって動きます。 この属性では、オプションにカットオフを含む通常の確率分布を指定することもできます。 乱数は車両の生成時に一度だけ選ばれます。 速度が不均一な混合車両群を生成する方法として、速度の分散を用いることが推奨されています。 詳細は[速度分布]を参照してください。

車両の追従

デフォルトの[Krauss 追従モデル]はvTypesigma属性(デフォルト: 0.5)を用いた確率的な運転行動をサポートしています。 この値が 0 以外の時、運転者は上記の RNG を基に車両の速度をランダムに変化させます。 その他の車両追従モデルでも、この属性を用います。

出発時間

車両ごとの出発時間は--random-depart-offset <TIME> でランダムに分散させることができます。 このオプションを仕様した場合、個々の車両にはランダムな[0, ]の分布に等しいオフセットが指定されます。

車両数固定の交通流

[DUAROUTER]、[DFROUTER]、[JTRROUTER]、これらのアプリケーションは--randomize-flowsオプションをサポートしています。 このオプションが使用されると、<flow>要素で定義された車両はフロー中のインターバルごとに等確率で出発時間が割り当てられます(デフォルトでは車両のフローは丁度よく時間を空けて生成されます)。

車両数のランダムな交通流

[DUAROUTER]と[SUMO]はどちらもprobability属性を持つ<flow>要素の読みこみをサポートしています。 この属性が使用されると(vehsPerHour,numberまたはperiodのかわりに)、毎秒ごとに決められた確率でランダムに車両が放出されます。 この結果は二項分布に従います(小さな確率のもとでは、これはポアソン分布の近似になります)。 こうした交通流を 2 車線以上の道路でモデル化する場合、個々の車線に対して<flow>を設定することが推奨されています。

交通流の効果はステップ長が小さい時に大きくなります。 これは、離散化誤差が減少するからです。 (車両は一般的に、安全性制約から毎秒ごとに挿入することができず 2 秒ごとに生成する場合は最大交通流を達成できないためです)。

出発と到着の属性

<flow>,<trip>,<vehicle>の要素は属性departLane,departPos,departSpeed,arrivalPosの値に"random"を入れることができます。 値は挿入試行時(出発(depart)属性の場合)ごとか、到着時の値を再検証する必要があるとき(例: 経路の再選択後)にランダムに選ばれます。

ランダム性に関する補足情報

  • randomTrips.py を使うことで、交通流をランダムな道路上に生成できるようになります。これはまた、到着確率をランダムにする機能もサポートしています。
  • OD2TRIPS は O/D 行列から個々の移動を表現するときにランダム性を付加します。
  • DUAROUTER動的ユーザー割り当て時にランダム性を付加します。
  • 経路選択をランダムにできることは、代替経路が使用されることを保証します。