Junction margin
The Junction margin plugin contains a snippet and a script template to calculate the junction margin.
Junction margin
A junction margin is the minimum permissible time interval between two trains that are performing conflicting moves at a timing point, such that the second train can meet its sectional running time.
The calculation is done by simulating two trains that have an incompatible movement in a junction, by varying the intermediate passing time on the junction and by calculating the accumulated delays due to conflicts by the train. The delay is calculated relative to the theoretical minimum time, ignoring possible margins, and considering only the minimum stopping time.
Quick start
- Install or enable the Junction margin plugin.
- Right-click the icon of a Scripted Simulation project, New, Other..., Junction margin script.
- Customize the script.
train1andtrain2: numbers of the two trains to be simulated.location: station or junction on which to calculate the junction margin.plannedIntervalMin,plannedIntervalMaxandplannedIntervalStep; initial, final and increment values for the iterative calculation of the best junction margin.RollingStock,TimetableandMicro: the projects used for the simulation.- In the default slot, you can configure other characteristics of the script. advanced
- Execute the simulation.
- During the simulation, the script draws the results on two charts: the first one shows the intermediate passing time simulated on the location related to the variation of the planned intermediate time, the second one shows the number of conflicts for the second train related to the variation of the planned intermediate time. Two annotations denote the first point for which the delay fo the second train is zero and the first point for which the second train does not encounter any conflict.
Here is an example:
snippet('lib/JunctionMargin',
// snippet configuration
rollingStock: 'RollingStock',
timetable:'Timetable',
micro: 'Micro2019',
train1: '601',
train2: '602',
location: 'OSL',
plannedIntervalMin: 60,
plannedIntervalMax: 180,
plannedIntervalStep: 1
) {
// parallel executor
parallel()
// script log file
withLog()
}