所要時間ベース旅客経路探索について - teamhimeh/simutrans GitHub Wiki
この機能を有効にすると、旅客および貨物は以下のような挙動を示すようになります。
- 旅客および貨物は、旅行時間が最小となるような経路を選択します。
- ルートコスト法による経路探索では、"ルートコスト"が最小となるような経路を選択していました。
- 旅客および貨物は、停留所において、次の目的地への旅行時間が最小となる乗り物に積載されます。
- ルートコスト法による経路探索では、次の目的地に到達可能な任意の乗り物に積載されていました。
この機能は、 貨物一覧
ウィンドウの中で貨物のカテゴリ別に有効化できます。所要時間ベース旅客経路検索を利用するには、 route by journey time
を選択してください。

ある路線において優等列車が運行されている場合、一般に旅客等は優等列車を必要に応じて活用して、期待される所要時間が最小になるように経路選択を行う。 しかし、現行のSimutrans standard系ではRoute Costによって経路選択が行われており、優等列車が有効に活用されにくい。OTRPでは優等列車を活用しやすくする様々なRoute Cost調整機能が実装されているが、どれも万能ではない。
そこで、Extendedのように所要時間ベースにするオプションをもうけたい。ただし、Extendedでは厳密なフィードバックを実装した結果経路選択の振動現象が見られることが知られている。したがって、優等列車を適切に利用する安定的な経路選択が行われるロジックを実装することを目的とする。
旅行時間の実績が最小となる経路を選択する。 旅行時間 = 停留所での待機時間 + 移動時間 + 加算時間
積載物が停留所に到着してから、その積載物を積載すべき列車が停留所に到着するまでの時間を用いる。
- パケットが停留所に到着する。パケットが停留所に到着した時間を記録しておく。
- 列車が停留所に到着する。到着した列車に対して、この列車が積載"すべき"宛先の積載物が停留所で過ごした時間の加重平均を求める。これを1積載に対する待機時間とする。(列車が満員で積載できない状態であっても、容量無限大ですべてを積載できるものとする。)
- 5積載分の待機時間を記録し、その平均値を経路グラフにおける待機時間として用いる。(中央値を用いると、列車間隔が不均等な路線において待機時間が不安定になるため)
待機時間の実績がない場合は、待機時間0とする。
なお、待機時間はスケジュール中のスケジュールエントリごとに記録されている。待機時間の実績は、路線一覧ウィンドウ中の Waiting Time
ボタンを押すと確認できる。

OTRPでは停留所間の所要時間(移動時間)が過去5回分保存されている。移動する区間内の所要時間を合算して、区間の所要時間とする。所要時間の実績は、路線一覧ウィンドウ中の 路線所要時間
ボタンを押すと確認できる。

旅行時間を 待機時間 + 移動時間
で計算した場合、航空機や新幹線が著しく有利になり、現実的な旅客流動と乖離してしまう。そこで、こうした路線に対して時間を一定量加算し、他の路線とのバランスを取る。
加算時間は1乗車ごとに課される。ペナルティ時間には以下の2種類があり、適用される加算時間は waytypeごとの加算時間 + スケジュールごとの加算時間
となる。
スケジュールのwaytypeに応じて加算される所要時間。「高度な設定」より変更できる。単位が"ticks"であることに注意。
-
base_waiting_ticks_for_road_convoi
... 道路属性のスケジュールに適用。デフォルト値 = 40000 ticks -
base_waiting_ticks_for_ship_convoi
... 海運属性のスケジュールに適用。デフォルト値 = 60000 ticks -
base_waiting_ticks_for_air_convoi
... 航空属性のスケジュールに適用。デフォルト値 = 60000 ticks -
base_waiting_ticks_for_rail_convoi
... 軌道属性のスケジュールに適用。デフォルト値 = 200000 ticks
例えば、 base_waiting_ticks_for_air_convoi
の値を高くすることによって航空路線を路線選択上不利にできる。また、同じwaytypeの経路間の比較においても間接的に乗り換え回数を抑制する働きがある。
スケジュール設定画面において、各路線(スケジュール)ごとに加算時間を設定できる。デフォルト値は0。単位は発車スケジュール等で用いているものと同じである。
例えば、新幹線の路線に対してスケジュールの加算時間を設定すると、短距離利用の場合在来線の方が旅行時間計算で有利になり、新幹線の短距離利用を抑制することができる。
旅行時間は、各駅の駅情報ウィンドウ中の Connections
タブから確認できる。 <
, >
で囲われた数値はその駅への最短旅行時間(単位は発車スケジュール等で用いているものと同じ)、 -
をはさんで右側には最短旅行時間でたどり着くための路線(最速路線)が示されている。

ある停留所から別の停留所への最速経路は、 dialog_tool[36]
(乗換経路検索)を利用して確認できる。
ある旅客/貨物(以下、積載物と言う)をあるconvoy(列車やバス)に積載しようとするとき、積載するか否かは以下のルールによって決定される。
- convoyが、「積載物の目的地に最短で到達する路線(もしくは単独convoy)」(以下、最速路線という)に所属している場合は、積載する。
- convoyが最速路線に所属していない場合でも、
当該convoyによる目的地までの移動時間 + 当該convoyに対する加算時間 < 最速路線による旅行時間(=待機時間+移動時間+加算時間)
が成立していれば、積載する。- 積載しようとしているconvoyは、現に停留所で停車しているため、積載されるまでの待機時間は無いと考える。
- このルールにより、「最速路線よりも少しだけ遅い路線」のconvoyでも積載するチャンスが与えられる。
なお、以下の場合は所要時間に関わらず積載する。
- convoyのスケジュールが臨時系統であるとき。
- convoyのスケジュールのうち、所要時間の実績が無い区間があるとき。
OTRPの所要時間ベース旅客経路探索では、経路探索結果に対して停留所および路線の混雑状況が影響しないようになっている。混雑状況自体はプレイヤーが直接的にコントロールできない変数であり、これを経路探索のフィードバックループに組み込むと、振動現象や意図しない振替輸送を発生させる。したがって、「積み残しが発生したときは最速路線以外にも積載するようにする」といった仕様は、混雑状況を旅客経路探索に影響させることになるため採用しない。