Replies: 3 comments 2 replies
-
Here's how I'd like things to work. First, some changes:
The process for standalone train simulation goes as follows:
The process for many train simulations would go as follows:
|
Beta Was this translation helpful? Give feedback.
2 replies
-
The way allowances currently works is this:
|
Beta Was this translation helpful? Give feedback.
0 replies
-
This is legacy |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
This discussion is meant to explain how speed controllers work, and why we want to use speed envelopes instead.
Here is how things currently work:
TrainState.simulatePhase
callstrainSchedule.trainDecisionMaker.simulatePhase(train, sim)
TrainDecisionMaker.simulatePhase
callstrainState.currentPhaseState.simulate(train, trainState)
SignalNavigatePhase.simulate
:trainState.evolveStateUntilPosition(sim, nextInteraction.position)
TrainState.step(locationChange, timeStep, distanceStep)
are appended to a location changeTrainState.step
callsTrainPhysicsIntegrator.nextStep
TrainPhysicsIntegrator.nextStep
callsiterateFindNextAction
via a callback given fromTrainState.step
iterateFindNextAction
callsfindActionToReachTargetSpeedAtPosition
findActionToReachTargetSpeedAtPosition
callstrainSchedule.trainDecisionMaker.getActiveSpeedControllers(isLate)
getActiveSpeedControllers
usestrainState.trainSchedule.speedInstructions
and getsspeedInstructions.maxSpeedControllers
orspeedInstructions.targetSpeedControllers
depending on isLate, and then adds dynamic speed controllers, which depend on the phaseBeta Was this translation helpful? Give feedback.
All reactions