Kaynağa Gözat

allow only delays to avoid arms races between controller and optimizer by implicite ITA-improvements on center

Sven Czarnian 3 yıl önce
ebeveyn
işleme
f14c6735cc
1 değiştirilmiş dosya ile 8 ekleme ve 2 silme
  1. 8 2
      aman/sys/RecedingHorizonControl.py

+ 8 - 2
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)