use deep copies for the optimization to avoid the visualization of intermediate sequences
This commit is contained in:
		| @@ -1,5 +1,6 @@ | |||||||
| #!/usr/bin/env python | #!/usr/bin/env python | ||||||
|  |  | ||||||
|  | import copy | ||||||
| import time | import time | ||||||
|  |  | ||||||
| from datetime import datetime as dt | from datetime import datetime as dt | ||||||
| @@ -101,12 +102,27 @@ class RecedingHorizonControl: | |||||||
|  |  | ||||||
|     def resequenceInbound(self, inbound : Inbound): |     def resequenceInbound(self, inbound : Inbound): | ||||||
|         index = self.AssignedWindow[inbound.Callsign][0] |         index = self.AssignedWindow[inbound.Callsign][0] | ||||||
|         if inbound.PlannedArrivalTime < self.Windows[index].StartTime or inbound.PlannedArrivalTime >= self.Windows[index].EndTime: |         sequenced = self.Windows[index].inbound(inbound.Callsign) | ||||||
|             self.Windows[index].remove(inbound.Callsign) |         if None == sequenced: | ||||||
|             self.AssignedWindow.pop(inbound.Callsign) |             return | ||||||
|             self.insertInWindow(inbound, True) |  | ||||||
|  |         # resynchronized the planned information | ||||||
|  |         sequenced.PlannedRunway = inbound.PlannedRunway | ||||||
|  |         sequenced.PlannedStar = inbound.PlannedStar | ||||||
|  |         sequenced.PlannedArrivalRoute = inbound.PlannedArrivalRoute | ||||||
|  |         sequenced.PlannedArrivalTime = inbound.PlannedArrivalTime | ||||||
|  |         sequenced.InitialArrivalTime = inbound.InitialArrivalTime | ||||||
|  |         sequenced.PlannedTrackmiles = inbound.PlannedTrackmiles | ||||||
|  |         sequenced.AssignmentMode = inbound.AssignmentMode | ||||||
|  |         sequenced.ExpectedRunway = inbound.ExpectedRunway | ||||||
|  |  | ||||||
|  |         # resort the inbound | ||||||
|  |         if sequenced.PlannedArrivalTime < self.Windows[index].StartTime or sequenced.PlannedArrivalTime >= self.Windows[index].EndTime: | ||||||
|  |             self.Windows[index].remove(sequenced.Callsign) | ||||||
|  |             self.AssignedWindow.pop(sequenced.Callsign) | ||||||
|  |             self.insertInWindow(sequenced, True) | ||||||
|         else: |         else: | ||||||
|             inbound.FixedSequence = index < self.FreezedIndex |             sequenced.FixedSequence = index < self.FreezedIndex | ||||||
|             self.Windows[index].Inbounds.sort(key = lambda x: x.PlannedArrivalTime if None != x.PlannedArrivalTime else x.EnrouteArrivalTime) |             self.Windows[index].Inbounds.sort(key = lambda x: x.PlannedArrivalTime if None != x.PlannedArrivalTime else x.EnrouteArrivalTime) | ||||||
|  |  | ||||||
|     def latestFixedInbounds(self, configuration : Airport, sequenceConfiguration : AirportSequencing): |     def latestFixedInbounds(self, configuration : Airport, sequenceConfiguration : AirportSequencing): | ||||||
| @@ -168,7 +184,7 @@ class RecedingHorizonControl: | |||||||
|         # 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: | ||||||
|                 inbounds.append(inbound) |                 inbounds.append(copy.deepcopy(inbound)) | ||||||
|  |  | ||||||
|             if 20 <= len(inbounds): |             if 20 <= len(inbounds): | ||||||
|                 break |                 break | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user