Skip to content

Commit d08a047

Browse files
committed
core: fix max delay on simulation segments
Signed-off-by: Eloi Charpentier <[email protected]>
1 parent 72c1c1c commit d08a047

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

core/src/main/kotlin/fr/sncf/osrd/stdcm/graph/engineering_allowance/SimulationSegment.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,14 @@ fun generatePreviousSimulationSegments(
6262
maxLength: Distance = 100.meters
6363
): Sequence<SimulationSegment> = sequence {
6464
var currentEdge = initialEdge
65+
var alreadyAddedDelay = 0.0
6566
while (currentEdge != null) {
6667
if (currentEdge.endAtStop) break
6768

6869
val envelope = currentEdge.originalEnvelope
6970
val edgeEndTime = currentEdge.timeData.earliestReachableTime + currentEdge.totalTime
70-
val maxAddedDelay = currentEdge.timeData.timeOfNextConflictAtLocation - edgeEndTime
71+
val maxAddedDelay =
72+
currentEdge.timeData.timeOfNextConflictAtLocation - edgeEndTime - alreadyAddedDelay
7173
if (maxAddedDelay <= 0.0) break
7274

7375
val backwardsPointPairs =
@@ -101,6 +103,8 @@ fun generatePreviousSimulationSegments(
101103
)
102104
)
103105
}
106+
currentEdge.engineeringAllowance?.let { alreadyAddedDelay += it.extraDuration }
107+
alreadyAddedDelay += currentEdge.timeData.delayAddedToLastDeparture
104108
currentEdge = currentEdge.previousNode.previousEdge
105109
}
106110
}

0 commit comments

Comments
 (0)