소스 검색

handle the requested runways in the optimization

Sven Czarnian 3 년 전
부모
커밋
e265629439
3개의 변경된 파일12개의 추가작업 그리고 3개의 파일을 삭제
  1. 1 0
      aman/sys/RecedingHorizonControl.py
  2. 6 3
      aman/sys/aco/RunwayManager.py
  3. 5 0
      aman/types/Inbound.py

+ 1 - 0
aman/sys/RecedingHorizonControl.py

@@ -72,6 +72,7 @@ class RecedingHorizonControl:
             plannedInbound.Report = inbound.Report
             plannedInbound.ReportTime = inbound.ReportTime
             plannedInbound.CurrentPosition = inbound.CurrentPosition
+            plannedInbound.RequestedRunway = inbound.RequestedRunway
             # ingore fixed updates
             if True == plannedInbound.FixedSequence or index <= self.FreezedIndex:
                 plannedInbound.FixedSequence = True

+ 6 - 3
aman/sys/aco/RunwayManager.py

@@ -118,10 +118,13 @@ class RunwayManager:
     def selectArrivalRunway(self, node : Node, earliestArrivalTime : datetime):
         availableRunways = self.Configuration.RunwayConstraints.ActiveArrivalRunways
 
-        if True == self.Configuration.RunwayConstraints.UseShallShouldMay:
+        if True == self.Configuration.RunwayConstraints.UseShallShouldMay and None == node.Inbound.RequestedRunway:
             availableRunways = self.executeShallShouldMayAssignment(node, earliestArrivalTime)
-        else:
-            availableRunways = self.Configuration.RunwayConstraints.ActiveArrivalRunways
+        elif None != node.Inbound.RequestedRunway:
+            for runway in availableRunways:
+                if node.Inbound.RequestedRunway == runway.Runway.Name:
+                    availableRunways = [ runway ]
+                    break
 
         if 0 == len(availableRunways):
             runway = self.Configuration.RunwayConstraints.ActiveArrivalRunways[0]

+ 5 - 0
aman/types/Inbound.py

@@ -15,6 +15,7 @@ class Inbound:
         self.CurrentPosition = report.position
         self.ReportTime = datetime.strptime(report.reportTime + '+0000', '%Y%m%d%H%M%S%z').replace(tzinfo = pytz.UTC)
         self.InitialArrivalTime = None
+        self.RequestedRunway = None
         self.PlannedArrivalTime = None
         self.PlannedRunway = None
         self.PlannedStar = None
@@ -28,6 +29,10 @@ class Inbound:
         if 'L' == wtc or 'M' == wtc or 'H' == wtc or 'J' == wtc:
             self.WTC = wtc
 
+        # analyze the requested runway
+        if '' != report.requestedRunway:
+            self.RequestedRunway = report.requestedRunway
+
         # search performance data -> fallback to A320
         if self.Report.aircraft.type in performanceData.Aircrafts:
             self.PerformanceData = performanceData.Aircrafts[self.Report.aircraft.type]