ランカーブ生成ソフトウェアについて
このページでは、ランカーブの機械的な生成手法について解説します。
以下理論を用いて制作したサイトは こちら です。
前提条件
運転の状態を簡略化して以下の4つに分類して考え、運転操作をステートマシンによって表します。
また、PCの馬鹿力を借りて1mごとに速度と時間をシミュレートします。
計算方法
1. 制動逆引き曲線を生成する
制限速度開始地点 または 停止目標位置 から外方側に向かって指定地点で目標速度となるような制動曲線を生成します。
この処理は、GetRuncurveSpeed.ts 内の $`getLimitSpeedArray` 関数内に実装があります。
2. 運転シミュレートを実施する
次に、現在駅停止位置から次停車駅停止位置までの運転シミュレートを実施します。
前提条件で運転操作をステートマシンによって表したので、以下の遷移条件によって運転操作の遷移を表すことができます。
- 現在 力行状態
- 現在位置から10秒後まで惰行で走行した際、10秒後に目標速度を超過するとき→ 惰行状態 に遷移する。
- 速度が目標速度に達し、1m後に惰行状態で加速しているとき→ 抑速状態 に遷移する。
- 速度が目標速度に達し、1m後に惰行状態で加速していないとき→ 惰行状態 に遷移する。
- 現在 制動状態
- 1m後の制動曲線よりも惰行で1m走行した場合の速度のほうが遅いとき→ 惰行状態 に遷移する。
- 制動曲線がなくなり、1m後に惰行状態で加速しているとき→ 抑速状態 に遷移する。
- 制動曲線がなくなり、1m後に惰行状態で加速していないとき→ 惰行状態 に遷移する。
- 現在 惰行状態
- 速度が一定速度以下のとき→ 力行状態 に遷移する。
- 速度が目標速度に達し、1m後に惰行状態で加速しているとき→ 抑速状態 に遷移する。
- 制動曲線に接触するとき→ 制動状態 に遷移する。
- 現在 抑速状態
- 速度が一定速度以下の場合→ 力行状態 に遷移する。
- 1m後に惰行状態で減速する場合→ 惰行状態 に遷移する。
- 制動曲線に接触するとき→ 制動状態 に遷移する。
この処理は GetRuncurveSpeed.ts 内の $`GetRuncurveSpeed` 関数内に実装があります。
3. 所要時間を計算する
1m毎に計算した速度をもとに所要時間を計算して結果が算出されます。