From f14c6735cce92ba226f0a045587a7475ef73f630 Mon Sep 17 00:00:00 2001 From: Sven Czarnian Date: Mon, 29 Nov 2021 17:57:20 +0100 Subject: [PATCH] allow only delays to avoid arms races between controller and optimizer by implicite ITA-improvements on center --- aman/sys/RecedingHorizonControl.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/aman/sys/RecedingHorizonControl.py b/aman/sys/RecedingHorizonControl.py index d14214e..03709ef 100644 --- a/aman/sys/RecedingHorizonControl.py +++ b/aman/sys/RecedingHorizonControl.py @@ -78,12 +78,18 @@ class RecedingHorizonControl: # check if we need to update the inbound if None == plannedInbound.PlannedStar: - if inbound.InitialArrivalTime < self.Windows[index].StartTime or inbound.InitialArrivalTime >= self.Windows[index].EndTime: + reference = inbound.InitialArrivalTime + if plannedInbound.InitialArrivalTime > reference: + reference = plannedInbound.InitialArrivalTime + + 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 self.updateReport(inbound) else: - plannedInbound.InitialArrivalTime = inbound.InitialArrivalTime + plannedInbound.InitialArrivalTime = reference + self.Windows[index].Inbounds.sort(key = lambda x: x.PlannedArrivalTime if None != x.PlannedArrivalTime else x.InitialArrivalTime) else: self.insertInWindow(inbound, False)