1 Introduction and literature review

Network revenue management is concerned with the sale of multiple products using multiple perishable resources of finite capacity over a discrete time horizon. The standard reference for network revenue management is Talluri and van Ryzin [11]. Traditional models assume that for each product, demand does not depend on the availability of other products [1]. This restrictive assumption has been relaxed by introducing customer choice models [10]. One special case of a customer choice model is discrete pricing [3, 4]. Since discrete pricing problems can be reformulated as independent demand problems [16], assuming independent demand is not as restrictive as previously thought.

Determining an optimal control policy in network revenue management requires computing the value function using dynamic programming. Since capacity control involves multiple resources, the curse of dimensionality prohibits the exact computation of the value function. One stream of literature utilizes approximate linear programming to find approximate solutions. The dynamic programming recursion is reformulated as an exponentially large linear program. Then, a value function approximation based on a small number of basis functions is inserted into the linear program [9]. This way, the number of variables is reduced. However, this procedure does not decrease the number of constraints. To overcome this problem, algorithmic techniques such as column generation, constraint sampling, and constraint-violation learning are typically applied [1, 2, 7]. These approaches do not solve the linear program exactly but provide an approximation. It is thus preferable to find reformulations that can be solved directly using a commercial solver. This motivates the derivation of compact linear programs [12, 14]. In this paper, we call a linear program compact if the number of variables and constraints is polynomial in the number of resources, products, time steps and units of initial capacity, which means it is computationally tractable.

An important aspect of approximate linear programming is the choice of basis functions. Choosing basis functions which are separable across resources is appealing, and thus affine and separable piecewise linear functional approximations have received much attention in the literature [1, 4,5,6]. We refer to these two approximation types as AF and SPL, respectively. Compact reformulations have been derived for both types [12, 14]. While SPL bid prices depend on remaining capacity, the opposite is true for AF bid prices. The components of the SPL approximation are piecewise linear on equidistant grids where the distance between nodes is exactly 1. Consequently, the number of nodes equals the initial capacity size. In contrast, Meissner and Strauss [8] use piecewise linear value function approximations where the number and position of nodes may be chosen arbitrarily. We call this approximation type separable “genuinely” piecewise linear (SGPL) in order to distinguish it from SPL. To the best of our knowledge, there is no study comparing the computational efficiency of AF and SPL with SGPL using compact linear programs. In particular, Meissner and Strauss [8] apply column generation and do not provide compact linear programs.

We make the following contributions:

  1. 1.

    For the independent demand model for network revenue management, we heuristically propose novel compact linear programs which are smaller than the SPL reduction yet improve the quality of AF bid prices by taking into account remaining capacity whenever it becomes scarce.

  2. 2.

    We benchmark our proposed compact linear programs against the reductions for AF and SPL using network instances from the literature [13, 14]. We find that for many instances, AF’s optimality gap can be divided in half using significantly less than half of SPL’s computing time.

Outline In Sect. 2, we describe the underlying network revenue management model and recapitulate the compact linear programs for AF and SPL. We then propose compact linear programs associated with SGPL basis functions in Sect. 3. Although we do not prove equivalence of our proposed linear programs with their unreduced counterparts, we provide numerical support for a corresponding conjecture in Appendix A. In Sect. 4, we investigate the computational efficiency of SGPL by benchmarking it against AF and SPL.

2 Approximate linear programming in network revenue management

Model description Our model follows Adelman [1]. During a selling horizon of finitely many time steps \(t \in \{1,\dots , T\}\), a company sells multiple products \(j \in \{1,\dots , J\}\) with fares \(f_j\). We assume that at most one customer arrives per time step t. The probability that at time t product j is requested is denoted \(p_{t,j}\). We assume product \(j=1\) to be a dummy product representing the event that no customer arrives, which implies \(\sum _j p_{t,j} = 1, \forall t\). At the beginning of each time step t, the company must decide which requests will be accepted and which will be rejected. This decision is represented by the decision vector \((u_j) = \mathbf {u} \in \{0,1\}^J\).

There are multiple resources \(i \in \{1,\dots , I\}\) each of which may be used by several products. The consumption matrix \(\mathbf{A}= (a_{ij}) \in \{0,1\}^{I\times J}\) has corresponding entries: \(a_{ij} = 1\) if product j uses one unit of resource i, and \(a_{ij} = 0\) otherwise. A column \(\mathbf{A}^j\) thus corresponds to the set of resources used by product j. The vector \(\mathbf {c} = (c_1,\dots ,c_I)^T \in \mathbb N^I\) denotes the initial capacity at the beginning of the selling horizon. During the selling process, the remaining capacity is denoted by \(\mathbf {r} = (r_1,\dots ,r_I)^T\). At time \(T+1\), all of the remaining capacity becomes worthless.

Let \(\mathcal U_{\mathbf {r}} = \{\mathbf {u} \in \{0,1\}^J \mid \forall i,j: u_j a_{ij} \le r_i\}\) be the set of feasible decision vectors given the remaining capacity \(\mathbf {r}\). Furthermore, let

$$\begin{aligned} \mathcal R_t = {\left\{ \begin{array}{ll} \prod _i \{c_i\}, &{} t = 1 \\ \prod _i \{0,\dots , c_i\}, &{} t \ge 2 \end{array}\right. } \end{aligned}$$

denote the state space at time t. The expected future revenue from time t on, given remaining capacity \(\mathbf{r}\) and using an optimal policy, is denoted by the (so-called) value function \(v_t(\mathbf {r})\). This function is recursively defined by the Bellman equation

$$\begin{aligned} v_t(\mathbf {r})&= \max _{\mathbf {u} \in \mathcal U_{\mathbf {r}}} \sum _j u_j p_{t,j}\, \left[ f_{j} - \left[ v_{t+1}(\mathbf {r}) - v_{t+1}(\mathbf {r}-\mathbf{A}^j)\right] \right] \nonumber \\&\quad \quad + v_{t+1}(\mathbf {r}), \quad \forall t, \mathbf {r} \in \mathcal R_t \nonumber \\ v_{T+1}(\mathbf {r})&= 0, \quad \forall \mathbf {r} \in \mathcal R_{T+1}. \end{aligned}$$
(1)

The key element in this dynamic program is the term \(f_{j} - [v_{t+1}(\mathbf {r}) - v_{t+1}(\mathbf {r}-\mathbf{A}^j)]\), i.e., the difference between the revenue \(f_j\) resulting from the potential sale of product j at time t, and the marginal value \(v_{t+1}(\mathbf {r}) - v_{t+1}(\mathbf {r}-\mathbf{A}^j)\) of product j at time \(t+1\). An optimal policy accepts a request for product j if and only if its marginal value does not exceed the fare \(f_j\).

The recursion (1) suffers from the curse of dimensionality. In particular, there are exponentially many values \(v_t(\mathbf{r})\) that have to be computed. We therefore turn to the construction of approximate solutions.

Approximate linear programming It is well-known that \(v_1(\mathbf {c})\) defined by the Bellman equation (1) is the optimal value of the following linear program:

$$\begin{aligned} (D) \quad&\min _{v} v_1(\mathbf {c}) \\ \text {s.t. } \quad v_t(\mathbf {r})&\ge \sum _j u_j p_{t,j} \left[ f_{j} - \left[ v_{t+1}(\mathbf {r}) - v_{t+1}(\mathbf {r}-\mathbf{A}^j)\right] \right] \\&\quad \quad + v_{t+1}(\mathbf {r}), \quad \forall t, \mathbf {r} \in \mathcal R_t, \mathbf {u} \in \mathcal U_{\mathbf {r}} \\ v_{T+1}(\mathbf {r})&= 0, \quad \forall \mathbf {r} \in \mathcal R_{T+1}. \end{aligned}$$

The size of (D) is growing exponentially in the number of both resources and products. We choose a small number of basis functions \(\phi _b(\mathbf {r}), b \in \mathcal B\), and insert the value function approximation \(v_t(\mathbf {r}) \approx \sum _{b \in \mathcal B} V_{t,b} \phi _{b}(\mathbf {r})\) into (D) to obtain the approximate linear program \((D_\phi )\). This reduces the number of variables to \((T+1)|\mathcal B|\). The corresponding dual is given by:

$$\begin{aligned}&(P_{\phi }) \quad \max _{X \ge 0} \sum _{t,\mathbf {r} \in \mathcal R_t,\mathbf {u} \in \mathcal U_{\mathbf {r}}} \sum _j X_{t,\mathbf {r},\mathbf {u}} u_j p_{t,j} f_{j} \nonumber \\ \text {s.t. } \quad&\sum _{\mathbf {r} \in \mathcal R_t,\mathbf {u} \in \mathcal U_{\mathbf {r}}} X_{t,\mathbf {r},\mathbf {u}} \phi _b(\mathbf {r}) \nonumber \\&\quad = {\left\{ \begin{array}{ll} \phi _b(\mathbf {c}), &{} t = 1 \\ \displaystyle \sum _{\mathbf {r} \in \mathcal R_{t-1}, \mathbf {u} \in \mathcal U_{\mathbf {r}}} X_{t-1,\mathbf {r},\mathbf {u}} \phi _{b}(\mathbf {r}) \\ \displaystyle - \sum _{\mathbf {r} \in \mathcal R_{t-1},\mathbf {u} \in \mathcal U_{\mathbf {r}}} X_{t-1,\mathbf {r},\mathbf {u}} \sum _j u_j p_{t-1,j} \left[ \phi _b(\mathbf {r}) - \phi _b(\mathbf {r}-\mathbf{A}^{j})\right] , &{} t \ge 2 \end{array}\right. } \nonumber \\&\quad \quad \quad \forall t, b \in \mathcal B. \end{aligned}$$
(2)

The optimal value of \((P_{\phi })\) is an upper bound on \(v_1(\mathbf{c})\). If the set of basis functions includes a constant function \(\phi _b(\cdot ) \equiv 1\), we can show by induction that the property \(\sum _{\mathbf {r},\mathbf {u}} X_{t,\mathbf {r},\mathbf {u}} = 1, \forall t\), holds for any feasible solution to \((P_{\phi })\). This observation allows us to interpret each value \(X_{t,\mathbf {r},\mathbf {u}}\) as the probability that at time t, the remaining capacity is \(\mathbf {r}\) and the decision is \(\mathbf {u}\).

Compact linear programs from the literature For the AF approximation \(v_t(\mathbf {r}) \approx \theta _t + \sum _i V_{t,i} r_i\), Tong and Topaloglu [12] as well as Vossen and Zhang [14] show equivalence between \((P_{\phi })\) and the compact linear program

$$\begin{aligned} (\widehat{P}_{AF}) \quad&\max _{\rho , \mu \ge 0} \sum _{t,j} p_{t,j}\quad f_j \mu _{t,j} \\ \text {s.t. } \quad \rho _{t,i}&= {\left\{ \begin{array}{ll} c_i, &{} \text { if } t = 1 \\ \displaystyle \rho _{t-1,i} - \sum _{\begin{array}{c} j \\ \text {s.t. } a_{ij} = 1 \end{array}} p_{t-1,j} \mu _{t,j},&\text { if } t > 1, \end{array}\right. } \quad \forall t,i \\ \mu _{t,j}&\le \rho _{t,i}, \quad \forall t,i,j: a_{ij} = 1 \\ \mu _{t,j}&\le 1, \quad \forall t,j. \end{aligned}$$

Similar to the interpretation of \(X_{t,\mathbf {r},\mathbf {u}}\) as state-action probabilities, \(\mu _{t,j}\) represents the probability of decision \(u_j = 1\) in time step t. The variable \(\rho _{t,i}\) is an approximation of the expected value of \(r_i\) at time t.

For the SPL approximation \(v_t(\mathbf {r}) \approx \theta _t + \sum _i \sum _{k=1}^{c_i} V_{t,i,k} 1_{\{r_i \ge k\}}\), where \(1_{\{r_i \ge k\}}\) denotes the indicator function, Vossen and Zhang [14] show weak equivalence between \((P_{\phi })\) and the compact linear program

$$\begin{aligned} (\widehat{P}_{SPL}) \quad&\max _{\zeta , \sigma , \mu \ge 0} \sum _{t,j} p_{t,j} f_{j} \mu _{t,j} \nonumber \\ \text {s.t. } \ \ \sigma _{t,i,k}&= {\left\{ \begin{array}{ll} 1, &{} t = 1 \\ \displaystyle \sigma _{t-1,i,k} - \sum _{\begin{array}{c} j \\ \text {s.t. } a_{ij} = 1 \end{array}} p_{t-1,j} (\zeta _{t-1,i,j,k} - \zeta _{t-1,i,j,k+1})&t \ge 2 \end{array}\right. } \ \ \forall t, i, k \end{aligned}$$
(3)
$$\begin{aligned} \mu _{t,j}&= \zeta _{t,i,j,1}, \quad \forall t,i,j: a_{ij} = 1 \end{aligned}$$
(4)
$$\begin{aligned} \zeta _{t,i,j,k+1}&\le \zeta _{t,i,j,k}, \quad \forall t,i,j,k: a_{ij} = 1 \end{aligned}$$
(5)
$$\begin{aligned} \zeta _{t,i,j,k}&\le \sigma _{t,i,k}, \quad \forall t,i,j,k: a_{ij} = 1. \end{aligned}$$
(6)

The interpretation of \(\mu _{t,j}\) is the same as above. The variable \(\sigma _{t,i,k}\) represents the probability that at time t, resource i has at least k units left. \(\zeta _{t,i,j,k}\) represents the joint probability that at time t, resource i has at least k units left and the decision \(u_j = 1\) is made. To enforce the probabilistic interpretation of \(\sigma\), one would expect that \((\widehat{P}_{SPL})\) includes the constriants \(\sigma _{t,i,1} \le 1, \forall t,i\) and \(\sigma _{t,i,k+1} \le \sigma _{t,i,k}, \forall t,i,k\). However, these constraints are redundant [14].

3 Genuinely piecewise linear approximation

We intend to decrease the size of \((\widehat{P}_{SPL})\) by considering genuinely piecewise linear functions where the number of nodes can be chosen arbitrarily. Concerning the position of the nodes, we remember that revenue management is most crucial whenever remaining capacity becomes scarce. Separately for each resource, our proposed value function approximation is thus piecewise linear with nodes \(0,1,2,\dots ,L_i-1,c_i\), where \(L_i \in \mathbb N\) satisfies \(1 \le L_i \le c_i\). Piecewise linear functions on this grid are spanned by the basis functions \(1_{\{r_i \ge k\}}, k = 1,\dots ,L_i-1\), together with the additional basis function \(\max \{0,r_i-L_i+1\}\). Therefore, our proposed value function approximation has the following form:

$$\begin{aligned} v_t(\mathbf {r}) \approx \theta _t + \sum _i \left( \sum _{k=1}^{L_i-1} V_{t,i,k}1_{\{r_i \ge k\}} + V_{t,i,L_i} \max \{0,r_i-L_i+1\}\right) . \end{aligned}$$
(7)

We now develop a compact linear program denoted \((\overline{P}_{G})\) associated with the value function approximation (7). This is done heuristically by modifying \((\widehat{P}_{SPL})\).

For a fixed time t, each constraint in (3) corresponds to a basis function \(1_{\{r_i \ge k\}}\). Since the value function approximation (7) includes the basis functions \(1_{\{r_i \ge k\}}\) for \(k \le L_i-1\), \((\overline{P}_{G})\) inherits the constraints (3) for \(k \le L_i-1\). Our main task is to construct analogue constraints for the basis functions \(\max \{0,r_i-L_i+1\}, i = 1,\dots ,I\). We first observe that the left hand side of (3), \(\sigma _{t,i,k}\), corresponds to the unreduced term \(\sum _{\mathbf {r} \in \mathcal R_t,\mathbf {u} \in \mathcal U_{\mathbf {r}}} X_{t,\mathbf {r},\mathbf {u}} 1_{\{r_i \ge k\}}\) on the left hand side of (2). This term is the expected value of \(1_{\{r_i \ge k\}}\) given the probability distribution \(X_t\). Adapting this probabilistic view for the basis function \(\max \{0,r_i-L_i+1\}\), we look for the expected value of \(\max \{0,r_i-L_i+1\}\) given the probability distribution \(X_t\). In terms of the probabilities \(\sigma _{t,i,k}\), this translates to \(\sum _{k=L_i}^{c_i} (\sigma _{t,i,k} - \sigma _{t,i,k+1}) (k-L_i+1) = \sum _{k=L_i}^{c_i} \sigma _{t,i,k}\). The fact that we end up with the sum of \(\sigma _{t,i,k}\) over \(k = L_i,\dots ,c_i\) suggests that the constraints we intend to construct result from summing (3) over \(k = L_i,\dots ,c_i\):

$$\begin{aligned} \sum _{k=L_i}^{c_i} \sigma _{t,i,k}&= \sum _{k=L_i}^{c_i} \sigma _{t-1,i,k} - \sum _{\begin{array}{c} j \\ \text {s.t. } a_{ij} = 1 \end{array}} p_{t-1,j} \zeta _{t-1,i,j,L_i}, \quad \forall t,i. \end{aligned}$$
(8)

Here, \(\zeta _{t-1,i,j,L_i}\) on the right hand side is the result of a telescoping sum and the fact that \(\zeta _{t,i,j,c_i+1} = 0\). Summarized, we obtain \((\overline{P}_{G})\) as a relaxation of \((\widehat{P}_{SPL})\) by replacing the constraints (3) for \(k = L_i,\dots ,c_i\) with their sum. This constraint aggregation decreases the number of constraints and is thus a simplification of \((\widehat{P}_{SPL})\). To decrease the number of variables, we use the probabilistic interpretation of \(\sigma\) to argue as follows: For a given number \(\sigma _{t,i,L_i}\), the term \(\sum _{k=L_i}^{c_i} \sigma _{t,i,k}\) can take any value between \(\sigma _{t,i,L_i}\) and \(\sigma _{t,i,L_i}(c_i-L_i+1)\). The same is true for the term \(\sigma _{t,i,L_i} + \sigma _{t,i,c_i}(c_i - L_i)\). The variables \(\sigma _{t,i,L_i+1}, \dots , \sigma _{t,i,c_i-1}\) are thus superfluous, and the above constraints (8) become

$$\begin{aligned} \sigma _{t,i,L_i} + \sigma _{t,i,c_i}(c_i - L_i)&= \sigma _{t-1,i,L_i} + \sigma _{t-1,i,c_i}(c_i - L_i) \\&\quad - \sum _{\begin{array}{c} j \\ \text {s.t. } a_{ij} = 1 \end{array}} p_{t-1,j} \zeta _{t-1,i,j,L_i}, \quad \forall t,i. \end{aligned}$$

Finally, we add the constraints \(\sigma _{t,i,k} \le 1\) and \(\sigma _{t,i,k+1} \le \sigma _{t,i,k}\) which were redundant for \((\widehat{P}_{SPL})\), and propose the following compact linear program:

$$\begin{aligned} (\overline{P}_{G}) \quad&\max _{\zeta , \mu , \sigma \ge 0} \sum _{t,j} p_{t,j} f_{j} \mu _{t,j} \nonumber \\ \text {s.t. } \ \ \sigma _{t,i,k}&= {\left\{ \begin{array}{ll} 1, &{} t = 1 \\ \displaystyle \sigma _{t-1,i,k} - \displaystyle \sum _{\begin{array}{c} j \\ \text {s.t. } a_{ij} = 1 \end{array}} p_{t-1,j} (\zeta _{t-1,i,j,k} - \zeta _{t-1,i,j,k+1}),&t \ge 2 \end{array}\right. } \nonumber \\&\quad \quad \quad \forall t, i, k \le L_i-1 \nonumber \\ \sigma _{t,i,L_i}&+ \sigma _{t,i,c_i}(c_i-L_i) = {\left\{ \begin{array}{ll} c_i-L_i+1, &{} t = 1 \\ \displaystyle \sigma _{t-1,i,L_i} + \sigma _{t-1,i,c_i}(c_i-L_i) \\ - \displaystyle \sum _{\begin{array}{c} j \\ \text {s.t. } a_{ij} = 1 \end{array}} p_{t-1,j} \zeta _{t-1,i,j,L_i},&t \ge 2 \end{array}\right. } \quad \forall t, i \nonumber \\ \sigma _{t,i,1}&\le 1, \quad \forall t,i \nonumber \\ \mu _{t,j}&= \zeta _{t,i,j,1}, \quad \forall t,i,j: a_{ij} = 1 \nonumber \\ \zeta _{t,i,j,k+1}&\le \zeta _{t,i,j,k}, \quad \forall t,i,j,k \le L_i-1: a_{ij} = 1 \nonumber \\ \zeta _{t,i,j,k}&\le \sigma _{t,i,k}, \quad \forall t,i,j,k \in \{1,\dots ,L_i,c_i\}: a_{ij} = 1 \nonumber \\ \sigma _{t,i,k+1}&\le \sigma _{t,i,k}, \quad \forall t,i,k \le L_i-1 \nonumber \\ \sigma _{t,i,c_i}&\le \sigma _{t,i,L_i}, \quad \forall t,i. \nonumber \end{aligned}$$

Let \((P_{G})\) denote the linear program \((P_\phi )\) using the SGPL approximation (7), and let \(\overline{Z}_{G}\) and \(Z_{G}\) be the optimal values of \((\overline{P}_{G})\) and \((P_{G})\). It follows from the above discussion that \(\overline{Z}_{G}\) decreases as the number of nodes, \(L_i\), increases. Furthermore, standard arguments from variable aggregation show that the inequality \(\overline{Z}_{G} \ge Z_{G}\) holds. We conjecture that \((\overline{P}_{G})\) is indeed a reduction of \((P_{G})\) meaning that \(\overline{Z}_{G} = Z_{G}\). In any case, \(\overline{Z}_{G}\) provides an upper bound on the optimal expected revenue, i.e., \(\overline{Z}_{G} \ge v_1(\mathbf{c})\).

To support our conjecture \(\overline{Z}_{G} = Z_{G}\), we compare these two values on small random network instances, see Appendix A for details. The corresponding AMPL code is available on GitHub so that our results can be reproduced.Footnote 1

4 Numerical experiments

We experimentally benchmark SGPL against AF and SPL. We expect that SGPL outperforms AF and needs less computing time than SPL. It is not clear, however, how fast the quality improves as the number of nodes, \(L_i\), increases. We provide some guidance on how to choose the number of nodes, \(L_i\), during deployment where solving SPL is computationally too expensive.

All numerical experiments were carried out on a virtual machine with 256 GB RAM and 32 cores of 2.59 GHz processors. The linear programs are solved with CPLEX 20.1.0.0, using the interior-point solver “barrier” with standard tolerance \(10^{-8}\).

We use data filesFootnote 2 from the literature containing 48 network instances [13, 14]. The setup is a hub-and-spoke airline network with one single hub and N non-hub locations. Each non-hub location is connected with the hub via two legs, one for each direction. There are \(N(N+1)\) itineraries corresponding to all origin–destination pairs. For each itinerary, there are two fare classes, where the high fare is \(\kappa\) times higher than the low fare. Therefore, including the dummy product, there is a total of \(2N(N+1) + 1\) products. Finally, \(\alpha := \frac{\sum _{t,i,j} a_{ij} p_{t,j}}{\sum _i c_i}\) denotes the total load. Each network instance is identified with the tupel \((T,N,\alpha ,\kappa )\).

It turns out that solving the dual linear programs is computationally more efficient. This observation might be explained by the fact that “barrier” utilizes the matrix product of the constraint matrix and its transpose in each iteration. Since \((\overline{P}_{G})\) has approximately twice as many constraints as it has variables, this matrix product is smaller for the dual linear program.

Also, adding the concavity property \(V_{t,i,k+1} \le V_{t,i,k}, \forall t,i,k\), to the constraints of the dual of \((\widehat{P}_{SPL})\) speeds up its computing time. Similar results concerning the increase of efficiency by enforcing concavity of bid prices with respect to time for an affine value function approximation is discussed in [15].

For a fixed network instance \((T,N,\alpha ,\kappa )\), let \(\overline{Z}_{G}^{\mathbf {L}}\) denote the optimal value of \((\overline{P}_{G})\) given \(\mathbf {L} = (L_1,\dots ,L_I)\). We also call this value the upper bound. Using the value function approximation (7) to compute approximate marginal values, we simulate the corresponding policy 500 times. Let \(R_{G}^{\mathbf {L}}\) denote the resulting average revenue. We measure the quality of an SGPL approximation by the difference \(\overline{Z}_{G}^{\mathbf {L}} - R_{G}^{\mathbf {L}}\) which we call optimality gap. For a given number \(q \in (0,1)\), we define \(L_i^q:= \lceil qc_i\rceil , \forall i\). Let \(t_{\text {comp}}^q\) be the computing time for solving the dual of \((\overline{P}_{G})\). Since we always associate \(q = 0\) and \(q = 1\) with AF and SPL, we report the computing times for solving the dual of \((\widehat{P}_{AF})\) or \((\widehat{P}_{SPL})\) in these cases. We compute \(\overline{Z}_{G}^{\mathbf {L}^q}\) and \(R_{G}^{\mathbf {L}^q}\) for \(q = 0,\frac{1}{8},\dots ,\frac{7}{8},1\). Figure 1 shows the results for the network instance \((T,N,\alpha ,\kappa )=(200,4,1.0,4)\). On the left hand side, the results are plotted against the fraction q, and on the right hand side, they are plotted against the computing time \(t_{\text {comp}}^q\) in seconds. We observe large improvements for both the upper bound \(\overline{Z}_{G}^{\mathbf {L}}\) and the average revenue \(R_{G}^{\mathbf {L}}\) even for small fractions q and for computing times which are significantly smaller compared to SPL.

Fixing the value \(q = \frac{1}{4}\), SGPL’s optimality gap is less than half of AF’s optimality gap in 41 out of all 48 network instances. In general, let \(q_{\text {half}}\) be the smallest \(q \in \{\frac{1}{8},\dots ,\frac{7}{8},1\}\) for which the optimality gap is less than half of AF’s optimality gap. During deployment, we suggest to either 1) successively solve SGPL for \(q = 0,\frac{1}{8}, \dots , q_{\text {half}}\), or 2) use the fixed value \(q = \frac{1}{4}\). In Tables 1 and 2, we report results for strategy 1). Table 1 contains upper bounds and average revenues for AF, SPL and SGPL using \(q_{\text {half}}\). Table 2 contains the computing times for AF and SPL, i.e., \(t_{\text {comp}}^{0}\) and \(t_{\text {comp}}^{1}\), as well as relevant computing times concerning SGPL: We report both the computing time \(t_{\text {comp}}^{q_{\text {half}}}\) as well as the cumulated computing time \(t_{\text {comp}}^{0} + \cdots + t_{\text {comp}}^{q_{\text {half}}}\). To obtain an impression of the qualitative risk associated with strategy 2), Table 3 reports optimality gaps and computing times for AF, SPL and SGPL using the fixed value \(q = \frac{1}{4}\) for those instances where \(q_{\text {half}} > \frac{1}{4}\).

SGPL’s computing time using \(q_{\text {half}}\) is less than half of SPL’s computing time in 46 cases, less than a third in 39 cases, less than a fifth in 17 cases and less than a tenth in 3 cases. The cumulated computing time \(t_{\text {comp}}^{0} + \cdots + t_{\text {comp}}^{q_{\text {half}}}\) is less than half of SPL’s computing time in 34 cases, less than a third in 20 cases and less than a fifth in 5 cases. For those cases where \(q_{\text {half}} > \frac{1}{4}\), using \(q = \frac{1}{4}\) also substantially reduces AF’s optimality gap requiring computing times that are significantly smaller than half of SPL’s computing time in all but one instance.

Fig. 1
figure 1

Upper bounds and average revenues for the network instance \((T,N,\alpha ,\kappa )=(200,4,1.0,4)\)

Table 1 Dividing in half AF’s optimality gap: Upper bounds (UB) and average revenues for AF, SGPL and SPL
Table 2 Dividing in half AF’s optimality gap: Computing time in seconds for AF, SGPL and SPL
Table 3 Optimality gap and computing times for AF, SPL and SGPL using the fixed value \(q = \frac{1}{4}\) for those network instances where \(q_{\text {half}} > \frac{1}{4}\)

5 Conclusion

We add to the literature concerning compact approximate linear programs in network revenue management by filling the gap between the AF and SPL value function approximation. The drawback of AF compared to SPL is mitigated by allowing bid prices to depend on remaining capacity whenever this quantity becomes scarce. At the same time, the computational complexity of SPL is decreased significantly. Our numerical experiments demonstrate that for many instances, AF’s optimality gap can be divided in half using only a small fraction of the computing time required to solve SPL.

Further research may be done to extend our work to more general customer choice models. Even though our results can be applied for discrete pricing problems, fields like the retail industry require more sophisticated choice models.