fix the issues with the time delta estimation

This commit is contained in:
Sven Czarnian
2021-12-19 13:26:49 +01:00
parent fc84aab0f2
commit f4fa9eeb18
5 changed files with 18 additions and 19 deletions

View File

@@ -21,7 +21,7 @@ class RecedingHorizonControl:
def insertInWindow(self, inbound : Inbound, usePTA : bool):
if False == usePTA:
referenceTime = inbound.InitialArrivalTime
referenceTime = inbound.EnrouteArrivalTime
else:
referenceTime = inbound.PlannedArrivalTime
@@ -34,7 +34,7 @@ class RecedingHorizonControl:
self.AssignedWindow[inbound.Callsign] = [ i, 0 ]
inbound.FixedSequence = i < self.FreezedIndex
if True == inbound.FixedSequence and None == inbound.PlannedArrivalTime:
inbound.PlannedArrivalTime = inbound.InitialArrivalTime
inbound.PlannedArrivalTime = inbound.EnrouteArrivalTime
window.insert(inbound)
inserted = True
break
@@ -56,11 +56,11 @@ class RecedingHorizonControl:
self.AssignedWindow[inbound.Callsign] = [ len(self.Windows) - 1, 0 ]
inbound.FixedSequence = len(self.Windows) < self.FreezedIndex
if True == inbound.FixedSequence and None == inbound.PlannedArrivalTime:
inbound.PlannedArrivalTime = inbound.InitialArrivalTime
inbound.PlannedArrivalTime = inbound.EnrouteArrivalTime
break
lastWindowTime = self.Windows[-1].EndTime
window.Inbounds.sort(key = lambda x: x.PlannedArrivalTime if None != x.PlannedArrivalTime else x.InitialArrivalTime)
window.Inbounds.sort(key = lambda x: x.PlannedArrivalTime if None != x.PlannedArrivalTime else x.EnrouteArrivalTime)
def updateReport(self, inbound : Inbound):
# check if we need to update
@@ -81,18 +81,18 @@ class RecedingHorizonControl:
# check if we need to update the inbound
if None == plannedInbound.PlannedStar:
reference = inbound.InitialArrivalTime
if plannedInbound.InitialArrivalTime > reference:
reference = plannedInbound.InitialArrivalTime
reference = inbound.EnrouteArrivalTime
if plannedInbound.EnrouteArrivalTime > reference:
reference = plannedInbound.EnrouteArrivalTime
if reference < self.Windows[index].StartTime or reference >= self.Windows[index].EndTime:
self.Windows[index].remove(inbound.Callsign)
self.AssignedWindow.pop(inbound.Callsign)
inbound.InitialArrivalTime = reference
inbound.EnrouteArrivalTime = reference
self.updateReport(inbound)
else:
plannedInbound.InitialArrivalTime = reference
self.Windows[index].Inbounds.sort(key = lambda x: x.PlannedArrivalTime if None != x.PlannedArrivalTime else x.InitialArrivalTime)
plannedInbound.EnrouteArrivalTime = reference
self.Windows[index].Inbounds.sort(key = lambda x: x.PlannedArrivalTime if None != x.PlannedArrivalTime else x.EnrouteArrivalTime)
else:
self.insertInWindow(inbound, False)
@@ -104,7 +104,7 @@ class RecedingHorizonControl:
self.insertInWindow(inbound, True)
else:
inbound.FixedSequence = index < self.FreezedIndex
self.Windows[index].Inbounds.sort(key = lambda x: x.PlannedArrivalTime if None != x.PlannedArrivalTime else x.InitialArrivalTime)
self.Windows[index].Inbounds.sort(key = lambda x: x.PlannedArrivalTime if None != x.PlannedArrivalTime else x.EnrouteArrivalTime)
def lastFixedInboundOnRunway(self, runway : str):
# no inbounds available
@@ -138,7 +138,7 @@ class RecedingHorizonControl:
# check if we found relevant inbounds
if 0 != len(inbounds):
inbounds.sort(key = lambda x: x.PlannedArrivalTime if None != x.PlannedArrivalTime else x.InitialArrivalTime)
inbounds.sort(key = lambda x: x.PlannedArrivalTime if None != x.PlannedArrivalTime else x.EnrouteArrivalTime)
return inbounds, earliestArrivalTime
else:
return None, None