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.simulatePhasecallstrainSchedule.trainDecisionMaker.simulatePhase(train, sim)TrainDecisionMaker.simulatePhasecallstrainState.currentPhaseState.simulate(train, trainState)SignalNavigatePhase.simulate:trainState.evolveStateUntilPosition(sim, nextInteraction.position)TrainState.step(locationChange, timeStep, distanceStep)are appended to a location changeTrainState.stepcallsTrainPhysicsIntegrator.nextStepTrainPhysicsIntegrator.nextStepcallsiterateFindNextActionvia a callback given fromTrainState.stepiterateFindNextActioncallsfindActionToReachTargetSpeedAtPositionfindActionToReachTargetSpeedAtPositioncallstrainSchedule.trainDecisionMaker.getActiveSpeedControllers(isLate)getActiveSpeedControllersusestrainState.trainSchedule.speedInstructionsand getsspeedInstructions.maxSpeedControllersorspeedInstructions.targetSpeedControllersdepending on isLate, and then adds dynamic speed controllers, which depend on the phaseBeta Was this translation helpful? Give feedback.
All reactions