calculate the PTA based on linear functions for the complete arrival route
This commit is contained in:
@@ -113,3 +113,24 @@ class Colony:
|
|||||||
for i in range(0, len(bestSequence[1])):
|
for i in range(0, len(bestSequence[1])):
|
||||||
self.Result.append(self.Configuration.Inbounds[bestSequence[1][i]])
|
self.Result.append(self.Configuration.Inbounds[bestSequence[1][i]])
|
||||||
Colony.associateInbound(rwyManager, self.Result[-1], self.Configuration.EarliestArrivalTime, True)
|
Colony.associateInbound(rwyManager, self.Result[-1], self.Configuration.EarliestArrivalTime, True)
|
||||||
|
|
||||||
|
# the idea behind the TTL/TTG per waypoint is that the TTL and TTG needs to be achieved in the
|
||||||
|
# first 2/3 of the estimated trackmiles and assign it with a linear function to the waypoints
|
||||||
|
|
||||||
|
# calculate the TTL/TTG for all the waypoints (TTG is positive)
|
||||||
|
reqTimeDelta = abs((self.Result[-1].InitialArrivalTime - self.Result[-1].PlannedArrivalTime).total_seconds())
|
||||||
|
gainTime = self.Result[-1].InitialArrivalTime >= self.Result[-1].PlannedArrivalTime
|
||||||
|
m = -3 * reqTimeDelta / (2 * self.Result[-1].PlannedTrackmiles)
|
||||||
|
timeDelta = 0.0
|
||||||
|
|
||||||
|
for waypoint in self.Result[-1].PlannedArrivalRoute:
|
||||||
|
waypointDT = m * waypoint.Trackmiles + reqTimeDelta
|
||||||
|
timeDelta += waypointDT
|
||||||
|
if timeDelta > reqTimeDelta:
|
||||||
|
waypointDT -= timeDelta - reqTimeDelta
|
||||||
|
waypointDT = timedelta(seconds = (waypointDT if False == gainTime else -1.0 * waypointDT))
|
||||||
|
waypoint.PTA = waypoint.ETA + waypointDT
|
||||||
|
|
||||||
|
# reached the PTA at the waypoint
|
||||||
|
if timeDelta >= reqTimeDelta:
|
||||||
|
break
|
||||||
|
|||||||
Reference in New Issue
Block a user