Keywords

1 Introduction

With air travel steadily on the rise and the increased fuel burn associated to it, it is ever more important that aircraft fly efficient routes. Planning such routes is a fundamental process of flying: commonly, a route is planned a few hours before the flight, focussing on key factors such as overfly costs and fuel burn. According to the Air Transport Action Group [1], around 1.5 billion barrels of fuel are burnt every year, corresponding to 93.75 billion USD [6]. A decrease of just 0.25% would add up to 234.375 million USD. There is also a visible impact for airlines: Lufthansa’s total fuel consumption in 2016 amounted to \(9\,055\,550\) tons [7]. Decreasing this by 0.25% leads to \(22\,639\) tons less fuel being burnt, or savings of almost 11.67 million USD per year. In terms of CO\(_2\), this is equivalent to a reduction of more than 70 tons per year [7].

The need for efficient routes gives rise to the Flight Planning Problem (fpp), which is the problem of finding a minimum cost trajectory between two airports on the Airway Network, a directed graph. In general, the objective function consists of several summands, such as fuel costs, overfly costs and crew costs. In this paper, however, we shall concentrate on minimising the fuel costs. We further assume that aircraft fly levelly on a given altitude and neither climb nor descend. In this setting, fuel consumption is equivalent to flight time, which reduces fpp to the Horizontal Flight Planning Problem (hfpp). Since winds have a strong impact on flight time and because of the time-dependency of the weather, we can model hfpp as a Time-Dependent Shortest Path Problem (tdspp).

tdspp has been extensively studied in the literature, with particular emphasis on road networks. Dijkstra’s algorithm yields an optimal solution in polynomial time; however, for large networks, several speedup techniques have been developed, allowing to curb runtimes by several orders of magnitude with respect to Dijkstra’s algorithm [2]. Most of them rely on a preprocessing phase, in which either some shortest paths or other auxiliary data is precomputed and stored to speed up the query. For a comprehensive survey, see [2].

Throughout this paper, a weighted graph will always refer to a pair (GT), consisting of the actual (directed) graph G and a possibly time-dependent weight function \(T:A\times [0,\infty ) \rightarrow [0,\infty )\), mapping an arc \(a\in A\) and a time \(\tau \in [0,\infty )\) to the travel time \(T(a,\tau )\) on a.

The ground distance \(d_G(a)\) of an arc \(a\in A\) on the Earth’s surface is constant, and we assume that aircraft fly with constant air speedFootnote 1 \(v_A\). In contrast, the ground speed \(v_G(a,\tau )\) of an aircraft is dependent on the prevailing wind conditions on the arc and given by the formula

$$\begin{aligned} v_G(a,\tau ) = \sqrt{v_A^2 - w_C(a,\tau )^2} + w_T(a,\tau )\quad \forall a\in A, \tau \in [t_0,t_r], \end{aligned}$$
(1)

where \(w_C(a,\cdot )\) and \(w_T(a,\cdot )\) are the crosswind and trackwind components of the wind vector, i.e., the components perpendicular and parallel to the current flight direction. Ground speed and ground distance are linked via the relation

$$\begin{aligned} T(a,\tau ) = \frac{d_G(a)}{v_G(a,\tau )}. \end{aligned}$$
(2)

2 Super-Optimal Wind

We are looking to solve the tdspp model of hfpp to optimality by using an appropriate shortest path algorithm. A natural choice would be Dijkstra’s algorithm; in practice, however, the time to plan a flight is limited and for the most part, this process takes place shortly before the aircraft departs. In particular, this means that query times should be as short as possible. In this paper, we restrict ourselves to the discussion of the A* algorithm, introduced in [5]. For an overview of other algorithms and their applicability to hfpp, see [3].

The intricacy with A* is to find a suitable potential function \(\pi _t:V\rightarrow [0,\infty )\), which for every \(v\in V\) underestimates the cost of a shortest v-t-path in (GT). We define the reduced cost of an arc \((u,v)\in A\) at time \(\tau \) as

$$\begin{aligned} T'((u,v),\tau ) = T((u,v),\tau ) - \pi _t(u) + \pi _t(v), \end{aligned}$$
(3)

and call \(\pi _t\) feasible on (GT) if for every arc \((u,v)\in A\) and for every \(\tau \ge 0\), we have \(T'((u,v),\tau )\ge 0\). If \(\pi _t\) is feasible, running A* is equivalent to running Dijkstra’s algorithm on G using the reduced costs.

To obtain a feasible potential function, we have to find a lower bound for the travel time on the arcs. To this end, we introduce the concept of Super-Optimal Wind to underestimate the travel time. While it is possible to minimise the travel time function directly, this takes too long for practical purposes. Furthermore, it requires knowledge of the airspeed in advance, as opposed to constructing the Super-Optimal Wind vector.

We assume that weather is given for a finite set of times \(\{t_0,t_1,\ldots ,t_r\}\), and between the \(t_i\), the weather data is interpolated to obtain the wind vector \(w(a,\tau )\). Let \(t_0 = \tau _0< \tau _1< \cdots < \tau _n = t_r\) be a discretisation of \([t_0,t_r]\) such that \(\tau _i-\tau _{i-1}=\triangle \) for some \(\triangle >0\) and for all \(i=1,\ldots ,n\). To ensure that for every \(i\in \{0,\ldots ,n-1\}\) we always find a \(j\in \{0,\ldots ,r-1\}\) such that \([\tau _i,\tau _{i+1}]\subset [t_j,t_{j+1}]\), we require that \(r\mid n\). We then define for \(i=1,\ldots ,n\)

$$ \underline{w}_C^{(i)}(a) = \min _{\tau \in [\tau _{i-1},\tau _i]} |w_C(a,\tau )|\text {and} \overline{w}_T^{(i)}(a) = \max _{\tau \in [\tau _{i-1},\tau _i]} w_T(a,\tau ), $$

which are the minimum crosswind and maximum trackwind on each discretisation step. The vector defined through its cross- and trackwind components

$$ w_\text {s-opt}^{(i)}(a) = (\underline{w}_C^{(i)}(a),\overline{w}_T^{(i)}(a)) $$

is called Super-Optimal Wind vector, and is used to overestimate the ground speed (note that by (2), this is equivalent to underestimating the travel time). We define

$$ \overline{v}_G^{(i)}(a) = \sqrt{v_A^2 - \underline{w}_C^{(i)}(a)^2} + \overline{w}_T^{(i)}(a), $$

and let \(\overline{v}_G(a):=\max _{i\in \{1,\ldots ,n\}} \overline{v}_G^{(i)}(a)\). It is easy to prove the following lemma:

Lemma 1

The inequality \(v_G(a,\tau )\le \overline{v}_G(a)\) holds for all \(\tau \in [t_0,t_r]\).

Note that in particular, if \(v_G^*(a) = \max _{\tau \in [t_0,t_r]} v_G(a,\tau )\) denotes the maximum ground speed in \([t_0,t_r]\), we also have

$$\begin{aligned} \overline{v}_G(a) \ge v_G^*(a). \end{aligned}$$
(4)

Define \(r_a^* := \max _{\tau \in [t_0,t_r]}\sqrt{w_C(a,\tau )^2+w_T(a,\tau )^2}\), the maximum overall wind speed on \(a\in A\). Under the condition that \(v_A\ge 2r_a^*\), which in practice is always the case, we obtain

Theorem 1

Suppose \(v_A\ge 2r_a^*\). Then there exists a constant \(C>0\) such that

$$ 0\le \overline{v}_G(a) - v_G^*(a) \le C\triangle . $$

The first inequality follows directly from (4), and the proof for the second inequality can be found in [3]. Analogous to the ground speed, we define

$$ \underline{T}(a) = \min _{i\in \{1,\ldots ,n\}} \underline{T}^{(i)}(a) := \min _{i\in \{1,\ldots ,n\}} \frac{d_G(a)}{\overline{v}_G^{(i)}}. $$

Letting \(T_a^* = \min _{\tau \in [t_0,t_r]} T(a,\tau )\) and following (2), one readily obtains

Corollary 1

Suppose \(v_A\ge 2r_a^*\). Then there exists a constant \(C'>0\) such that for any arc \(a\in A\), we have

$$ 0\le T_a^* - \underline{T}(a)\le C'\triangle . $$

In particular, \(\underline{T}(a)\) underestimates the travel time needed to traverse an arc, and the error is bounded linearly in the discretisation step.

2.1 The Super-Optimal Wind Potential Function

For the A* algorithm, we seek to find a good and feasible potential function. For hfpp, we can exploit the fact that in our application, there is a small number of possible target nodes (corresponding to airports). Since our objective in hfpp is to minimise travel time, we construct the weighted graph \((G,\underline{T})\), where \(\underline{T}:A \rightarrow [0,\infty )\) maps an arc \(a\in A\) to the underestimated travel time \(\underline{T}(a)\) obtained through the Super-Optimal Wind computation, i.e., \(\underline{T}(a)\le T(a,\tau )\) for all \(\tau \in [t_0,t_r]\) and all arcs \(a\in A\). Note that \((G,\underline{T})\) is a weighted graph with static arc weights, and we can without effort compute an all-to-one shortest path tree for each target node t. We then define a potential function for hfpp as

$$ \textstyle {} \pi _t(v) = \min \left\{ \sum _{a\in P} \underline{T}(a) :P \text { is a}\, (v,t)-\text {path}\right\} . $$

Note that this is equivalent to running the ALT-Algorithm [4] with the target node as the only landmark.

Theorem 2

The following two statements hold:

  1. (i)

    \(\pi _t(\cdot )\) is feasible in \((G,\underline{T})\).

  2. (ii)

    \(\pi _t(\cdot )\) is feasible in (GT).

For details on the proof, see [8]. In particular, Theorem 2 yields that running the A* algorithm on (GT) is equivalent to running Dijkstra’s algorithm on the reduced cost graph \((G,T')\) obtained from (3), and A* visits at most as many nodes as Dijkstra’s algorithm.

2.2 Validation of Super-Optimal Wind

Theorem 1 and Corollary 1 state that the absolute error of the overestimated ground speed with respect to the optimum ground speed is bounded linearly in the discretisation step. To assess the quality of the travel time underestimation with Super-Optimal Wind computationally, we ran it on several real-world instances (cf. [3]), each instance using 28 threads.

Table 1 Errors and runtimes of Super-Optimal Wind computation

As our weather prognoses are given at times \(t_i\) all spaced three hours apart, a natural choice for the discretisation step is \(t_{i+1}-t_i = \tau _{i+1}-\tau _i=\triangle =3h\). We found this choice to already yield excellent results, as shown in Table 1, which contains the average and maximum values of the relative error \(\rho (a) = \frac{\underline{T}(a) - T_a^*}{T_a^*}\forall a\in A\). The results show that the Super-Optimal Wind is an excellent underestimator in practice, and can be computed fast.

3 A Case Study

In the following, we investigate the effect of wind on a route. In particular, we consider a flight between Taipei-Taoyuan (tpe) and New York-John F. Kennedy (jfk). We use weather data from the 25th April 2017, starting the route on the same day at 0300 UTC. We assume an aircraft flying at \(37\,000\)ft (\({\approx }11\,277\) m).

Fig. 1
figure 1

Search spaces for Dijkstra’s algorithm (white) and A* (yellow) between tpe and jfk. The route closest to the geodesic is marked red, the shortest route shown in green (Map data: Google, Landsat/Copernicus/IBCAO)

Often, routes lie close to the geodesic, but if aircraft can take advantage of strong tailwinds, they commonly divert to areas with more favourable winds. In Fig. 1, we observe that the search space for A* is doughnut-shaped, which is due to the fact that on that day, there was an unusually strong jetstream on the Northern Pacific, rendering the Pacific route shown in green more efficient than the polar route (red), which would seem a more natural choice. When one compares the ground distances of the northerly route to the Pacific route, one finds the red route to be almost 1880 km shorter than the green route – but considering wind, the green route is 131 s faster than the red route, or roughly 0.26% of the total travel time. As this translates directly to fuel burn, it makes sense to favour the seemingly longer Pacific route over the polar route.

In Fig. 1, we also observe that A* visits significantly fewer arcs than Dijkstra’s algorithm. This also impacts the runtime: between tpe and jfk, A* yields a speedup factor of 11 over Dijkstra’s algorithm. For a more detailed discussion on the speedup of A* over many instances, we refer the reader to [8].