Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a generalistic description #212

Merged
merged 1 commit into from
Jun 14, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 19 additions & 4 deletions content/docs/reference/design-docs/train-sim-v3/overview.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,10 @@ PathPhysicsProps --> DrivingInstructionCompiler
ScheduleController -- tracks train state --> TrainSim

DriverBehaviorModule -- makes decisions --> TrainSim
ConcreteDrivingInstructions ---> DriverBehaviorModule
DrivingInstructionCompiler ---> ConcreteDrivingInstructions
ConcreteDrivingInstructions --> DriverBehaviorModule
DrivingInstructionCompiler --> ConcreteDrivingInstructions

InitTrainState ---> ScheduleController
InitTrainState --> ScheduleController

TrainSim --> SimResults

Expand Down Expand Up @@ -93,7 +93,7 @@ Path properties are the physical properties of the path, namely elevation, curve

### Driver behavior module

The driver behavior module updates the train state based on:
The driver behavior modules update the train state based on:
- the current train state
- the path properties
- the driving instructions
Expand All @@ -117,6 +117,21 @@ The output of the simulation is the list of train states at each time step.

## Design overview

The main idea of the new train simulator is to have a simulation which is computed step by step and not post-processed.
This would ensure the physical consistency of the simulation.

The challenge is then to add ways to lose some time, in order to respect the target schedule.
This is done by iterating over the sections between two scheduled points, while adjusting a slowdown factor.
This slowdown factor would be used to control how the driver behavior module would lose time while still being
physically realistic.
See [the driver behavior module dedicated page]({{< ref "driver-behavior-modules" >}}) for more details.

In order to accommodate an infrastructure which could change with time (like signals), we introduce driving instructions.
These instructions are generated from the path properties and the target schedule, and are used to update the train state.
Instructions can be conditional, and can interact with each other.
The algorithm is described in detail in the [dedicated page]({{< ref "driving-instruction" >}}).


![Algorithm flow chart](../overview.svg)

## Design limits
Expand Down
Loading