|
@@ -175,13 +175,23 @@ class RecedingHorizonControl:
|
|
return runwayInbounds, iafInbounds
|
|
return runwayInbounds, iafInbounds
|
|
|
|
|
|
def optimizationRelevantInbounds(self):
|
|
def optimizationRelevantInbounds(self):
|
|
- # no new inbounds
|
|
|
|
- if len(self.Windows) <= self.FreezedIndex + 1:
|
|
|
|
- return None, None
|
|
|
|
-
|
|
|
|
inbounds = []
|
|
inbounds = []
|
|
earliestArrivalTime = self.Windows[self.FreezedIndex + 1].StartTime
|
|
earliestArrivalTime = self.Windows[self.FreezedIndex + 1].StartTime
|
|
|
|
|
|
|
|
+ # check if we have a reconnect in the freezed blocks (VATSIM specific behavior)
|
|
|
|
+ for i in range(0, self.FreezedIndex + 1):
|
|
|
|
+ for inbound in self.Windows[i].Inbounds:
|
|
|
|
+ if False == inbound.HasValidSequence:
|
|
|
|
+ inbounds.sort(key = lambda x: x.PlannedArrivalTime if None != x.PlannedArrivalTime else x.EnrouteArrivalTime)
|
|
|
|
+ inbounds.append(copy.deepcopy(inbound))
|
|
|
|
+
|
|
|
|
+ # no new inbounds
|
|
|
|
+ if len(self.Windows) <= self.FreezedIndex + 1:
|
|
|
|
+ if 0 == len(inbounds):
|
|
|
|
+ return None, None
|
|
|
|
+ else:
|
|
|
|
+ return inbounds, earliestArrivalTime
|
|
|
|
+
|
|
# check the overlapping windows
|
|
# check the overlapping windows
|
|
for i in range(self.FreezedIndex + 1, len(self.Windows)):
|
|
for i in range(self.FreezedIndex + 1, len(self.Windows)):
|
|
for inbound in self.Windows[i].Inbounds:
|
|
for inbound in self.Windows[i].Inbounds:
|