Skip to content

Commit 0742cc5

Browse files
committed
core: sim: add speed limit anticipation back
It was used in v1 but not v2. Includes margins before max speed drops and after it goes up. Signed-off-by: Eloi Charpentier <eloi.charpentier.42@gmail.com>
1 parent e148616 commit 0742cc5

File tree

10 files changed

+46
-41
lines changed

10 files changed

+46
-41
lines changed

core/src/main/kotlin/fr/sncf/osrd/standalone_sim/StandaloneSimulation.kt

+5-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.google.common.collect.ImmutableRangeMap
44
import com.google.common.collect.Range
55
import com.google.common.collect.RangeMap
66
import com.google.common.collect.TreeRangeMap
7+
import fr.sncf.osrd.DriverBehaviour
78
import fr.sncf.osrd.api.FullInfra
89
import fr.sncf.osrd.api.api_v2.RangeValues
910
import fr.sncf.osrd.api.api_v2.standalone_sim.ElectricalProfileValue
@@ -60,11 +61,13 @@ fun runStandaloneSimulation(
6061
schedule: List<SimulationScheduleItem>,
6162
initialSpeed: Double,
6263
margins: RangeValues<MarginValue>,
63-
pathItemPositions: List<Offset<Path>>
64+
pathItemPositions: List<Offset<Path>>,
65+
driverBehaviour: DriverBehaviour = DriverBehaviour()
6466
): SimulationSuccess {
6567
// MRSP & SpeedLimits
6668
val safetySpeedRanges = makeSafetySpeedRanges(infra, chunkPath, routes, schedule)
67-
val mrsp = computeMRSP(pathProps, rollingStock, true, speedLimitTag, null, safetySpeedRanges)
69+
var mrsp = computeMRSP(pathProps, rollingStock, true, speedLimitTag, null, safetySpeedRanges)
70+
mrsp = driverBehaviour.applyToMRSP(mrsp)
6871
// We don't use speed safety ranges in the MRSP displayed in the front
6972
// (just like we don't add the train length)
7073
val speedLimits =

core/src/test/kotlin/fr/sncf/osrd/standalone_sim/StandaloneSimulationTest.kt

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package fr.sncf.osrd.standalone_sim
22

33
import com.google.common.collect.ImmutableRangeMap
4+
import fr.sncf.osrd.DriverBehaviour
45
import fr.sncf.osrd.api.api_v2.RangeValues
56
import fr.sncf.osrd.api.api_v2.standalone_sim.MarginValue
67
import fr.sncf.osrd.api.api_v2.standalone_sim.ReportTrain
@@ -229,6 +230,7 @@ class StandaloneSimulationTest {
229230
testCase.startSpeed,
230231
testCase.margins,
231232
listOf(),
233+
DriverBehaviour(0.0, 0.0),
232234
)
233235

234236
// Test scheduled points

front/tests/assets/operationStudies/simulationSettings/allSettings.json

+7-7
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
"signalReceptionClosed": false,
1010
"margin": {
1111
"theoretical": "5 %",
12-
"theoreticalS": "85 s",
13-
"actual": "85 s",
12+
"theoreticalS": "86 s",
13+
"actual": "86 s",
1414
"difference": "0 s"
1515
},
1616
"calculatedArrival": "11:22:40",
@@ -30,7 +30,7 @@
3030
"actual": "",
3131
"difference": ""
3232
},
33-
"calculatedArrival": "11:44:13",
33+
"calculatedArrival": "11:44:19",
3434
"calculatedDeparture": ""
3535
},
3636
{
@@ -47,8 +47,8 @@
4747
"actual": "32 s",
4848
"difference": "0 s"
4949
},
50-
"calculatedArrival": "11:52:55",
51-
"calculatedDeparture": "11:54:59"
50+
"calculatedArrival": "11:53:04",
51+
"calculatedDeparture": "11:55:08"
5252
},
5353
{
5454
"stationName": "South_East_station",
@@ -64,7 +64,7 @@
6464
"actual": "",
6565
"difference": ""
6666
},
67-
"calculatedArrival": "12:06:18",
68-
"calculatedDeparture": "12:06:18"
67+
"calculatedArrival": "12:06:27",
68+
"calculatedDeparture": "12:06:27"
6969
}
7070
]

front/tests/assets/operationStudies/simulationSettings/codeCompo/codeCompoOFF.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@
4747
"actual": "0 s",
4848
"difference": "0 s"
4949
},
50-
"calculatedArrival": "11:39:55",
51-
"calculatedDeparture": "11:41:59"
50+
"calculatedArrival": "11:39:56",
51+
"calculatedDeparture": "11:42:00"
5252
},
5353
{
5454
"stationName": "South_East_station",
@@ -64,7 +64,7 @@
6464
"actual": "",
6565
"difference": ""
6666
},
67-
"calculatedArrival": "11:52:11",
68-
"calculatedDeparture": "11:52:11"
67+
"calculatedArrival": "11:52:12",
68+
"calculatedDeparture": "11:52:12"
6969
}
7070
]

front/tests/assets/operationStudies/simulationSettings/codeCompo/codeCompoON.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"actual": "",
3131
"difference": ""
3232
},
33-
"calculatedArrival": "11:42:48",
33+
"calculatedArrival": "11:42:55",
3434
"calculatedDeparture": ""
3535
},
3636
{
@@ -47,8 +47,8 @@
4747
"actual": "0 s",
4848
"difference": "0 s"
4949
},
50-
"calculatedArrival": "11:50:48",
51-
"calculatedDeparture": "11:52:52"
50+
"calculatedArrival": "11:50:58",
51+
"calculatedDeparture": "11:53:02"
5252
},
5353
{
5454
"stationName": "South_East_station",
@@ -64,7 +64,7 @@
6464
"actual": "",
6565
"difference": ""
6666
},
67-
"calculatedArrival": "12:03:04",
68-
"calculatedDeparture": "12:03:04"
67+
"calculatedArrival": "12:03:14",
68+
"calculatedDeparture": "12:03:14"
6969
}
7070
]

front/tests/assets/operationStudies/simulationSettings/electricalProfiles/electricalProfileOFF.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@
4747
"actual": "0 s",
4848
"difference": "0 s"
4949
},
50-
"calculatedArrival": "11:39:55",
51-
"calculatedDeparture": "11:41:59"
50+
"calculatedArrival": "11:39:56",
51+
"calculatedDeparture": "11:42:00"
5252
},
5353
{
5454
"stationName": "South_East_station",
@@ -64,7 +64,7 @@
6464
"actual": "",
6565
"difference": ""
6666
},
67-
"calculatedArrival": "11:52:11",
68-
"calculatedDeparture": "11:52:11"
67+
"calculatedArrival": "11:52:12",
68+
"calculatedDeparture": "11:52:12"
6969
}
7070
]

front/tests/assets/operationStudies/simulationSettings/electricalProfiles/electricalProfileON.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@
4747
"actual": "0 s",
4848
"difference": "0 s"
4949
},
50-
"calculatedArrival": "11:40:27",
51-
"calculatedDeparture": "11:42:31"
50+
"calculatedArrival": "11:40:28",
51+
"calculatedDeparture": "11:42:32"
5252
},
5353
{
5454
"stationName": "South_East_station",
@@ -64,7 +64,7 @@
6464
"actual": "",
6565
"difference": ""
6666
},
67-
"calculatedArrival": "11:53:19",
68-
"calculatedDeparture": "11:53:19"
67+
"calculatedArrival": "11:53:20",
68+
"calculatedDeparture": "11:53:20"
6969
}
7070
]

front/tests/assets/operationStudies/simulationSettings/margin/linearMargin.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@
4747
"actual": "62 s",
4848
"difference": "0 s"
4949
},
50-
"calculatedArrival": "11:41:40",
51-
"calculatedDeparture": "11:43:44"
50+
"calculatedArrival": "11:41:41",
51+
"calculatedDeparture": "11:43:45"
5252
},
5353
{
5454
"stationName": "South_East_station",
@@ -64,7 +64,7 @@
6464
"actual": "",
6565
"difference": ""
6666
},
67-
"calculatedArrival": "11:54:58",
68-
"calculatedDeparture": "11:54:58"
67+
"calculatedArrival": "11:54:59",
68+
"calculatedDeparture": "11:54:59"
6969
}
7070
]

front/tests/assets/operationStudies/simulationSettings/margin/marecoMargin.json

+6-6
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
"signalReceptionClosed": false,
1010
"margin": {
1111
"theoretical": "10 %",
12-
"theoreticalS": "104 s",
12+
"theoreticalS": "103 s",
1313
"actual": "105 s",
14-
"difference": "1 s"
14+
"difference": "2 s"
1515
},
1616
"calculatedArrival": "11:22:40",
1717
"calculatedDeparture": ""
@@ -47,8 +47,8 @@
4747
"actual": "62 s",
4848
"difference": "0 s"
4949
},
50-
"calculatedArrival": "11:41:40",
51-
"calculatedDeparture": "11:43:44"
50+
"calculatedArrival": "11:41:41",
51+
"calculatedDeparture": "11:43:45"
5252
},
5353
{
5454
"stationName": "South_East_station",
@@ -64,7 +64,7 @@
6464
"actual": "",
6565
"difference": ""
6666
},
67-
"calculatedArrival": "11:54:58",
68-
"calculatedDeparture": "11:54:58"
67+
"calculatedArrival": "11:54:59",
68+
"calculatedDeparture": "11:54:59"
6969
}
7070
]

front/tests/assets/operationStudies/timesAndStops/expectedOutputsCellsData.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
"margin": {
1111
"theoretical": "5 %",
1212
"theoreticalS": "29 s",
13-
"actual": "922 s",
14-
"difference": "893 s"
13+
"actual": "920 s",
14+
"difference": "891 s"
1515
},
1616
"calculatedArrival": "11:22:40",
1717
"calculatedDeparture": ""
@@ -28,11 +28,11 @@
2828
"margin": {
2929
"theoretical": "1 min/100km",
3030
"theoreticalS": "9 s",
31-
"actual": "291 s",
32-
"difference": "282 s"
31+
"actual": "253 s",
32+
"difference": "244 s"
3333
},
3434
"calculatedArrival": "11:47:40",
35-
"calculatedDeparture": "11:52:40"
35+
"calculatedDeparture": "11:52:39"
3636
},
3737
{
3838
"stationName": "Mid_East_station",

0 commit comments

Comments
 (0)