Abstract
We consider a real discrete pricing problem in network revenue management for FlixBus. We improve the company's current pricing policy by an intermediate optimization step using booking limits from standard deterministic linear programs. We pay special attention to computational efficiency. FlixBus' strategic decision to allow for lowcost refunds might encourage large group bookings early in the booking process. In this context, we discuss counterintuitive findings comparing booking limits with static bid price policies. We investigate the theoretical question whether the standard deterministic linear program for network revenue management does provide an upper bound on the optimal expected revenue if customer's willingness to pay varies over time.
Introduction
When the German government deregulated the longdistance bus market in 2013, thirteen bus companies entered the market. But only five years later, FlixBus had conquered 90% of German bus market and has expanded well beyond Europe to Asia and the United States, see The Economist (2018).
The dramatic growth of the company is often attributed to its highly scalable business model: to be officially licensed as a bus company, FlixBus owns one bus, which is parked permanently. While regional bus companies own the green buses with the FlixBus logo, employ the drivers, and are responsible for the daytoday running of routes, FlixBus can focus on permits, network planning, marketing, pricing, quality management and customer service. Ticket prices are split with its partners accordingly.
The willingness of investors to suffer from short term losses in order to gain market share is also cited as a source of FlixBus’ growth, see The Economist (2018). Given its dominant position in Germany, however, the company started to focus on expected revenue maximization and employed roughly 50 revenue managers as of 2018. Each of those revenue managers manually supervised more than 20 bus lines (independent networks) with a total of more than 150 legs per day.
Given this challenge and the willingness to expand even further, it was an operational necessity to automate pricing decisions to a larger degree than in the past. There are two main aspects of this problem: obtaining a realistic demand forecast including information about price elasticity and determining a pricing policy based on this forecast. This paper is mainly concerned with the second aspect, even though the first aspect had to be addressed also in order to obtain data, which could be used for realistic experiments.
Although many of the operational pricing constraints mimic those of the airline industry (perishable resource given highly price sensitive demand), a few key differences are: (1) only one of a few predetermined prices should be offered for each origin–destinationpair at the same time, (2) since tickets can be refunded at very low costs, large group bookings might be an issue if an uncontrolled number of cheap tickets can be bought early in the selling process, (3) given the limited computing resources, it is impossible to perform computationally expensive optimization procedures frequently for each bus line, (4) given the nature of bus rides with many stops, a typical customer uses more legs on a given ride than airline customers, and (5) since tickets can be returned with a maximum fee of 5 Euros (or Dollars), the need for increasing prices over time is large.
Problems with property (1) are usually referred to as discrete dynamic pricing problems and wellstudied in the network revenue management literature. Most notably, Walczak et al. (2010) and Fiig et al. (2010) have shown that a transformation exists to transform discrete pricing problems to revenue management with independent demand. In this paper, we apply this transformation and discuss some lesserknown implications.
FlixBus traditionally imposed nested booking limits to guide revenue managers’ decisions. Given this history and its implied computational infrastructure as well as the strategic decision (2) combined with the limited computing resources (3), a straightforward bid price control was viewed as risky since bid price policies might allow groups to buy a large quantity of seats at a low price early in the selling process and then return them in case they are not needed. To quantify the expected revenue loss in the presence of early group bookings and to address the particularities (4) and (5), we present a computational study that focuses on those risks and discusses concepts on how to address those problems.
In particular, we make the following contributions:

1.
We exploit the equivalence transformation from Walczak et al. (2010) to transform discrete pricing to revenue management with independent demand. We implement deterministic linear programs for both models to obtain booking limits, which can then be used directly in a legbased pricing mechanism. Our simulation results suggest that this change alone could improve their current best practice pricing policy, which is based on expected demand forecasts.

2.
We adopt a simple extension of the wellknown deterministic linear program (DLP) for network revenue management to obtain an upper bound of the maximum expected revenue. This dynamic DLP is closely related to the approximate linear program obtained from the affine approximation as suggested by Adelman (2007). Doing so, we highlight that in dynamic discrete pricing with nonconstant willingness to pay, the standard (static) deterministic linear program is not guaranteed to provide such an upper bound.

3.
Given a discrete set of feasible prices, the network pricing problems we obtain are linear, leading to implementable and efficient pricing algorithms. This property, which is in stark contrast to the nonlinear continuous pricing problems discussed in the literature, is especially important given the large number of bus lines served by carriers such as FlixBus.

4.
Working with historical sales data including group bookings from FlixBus, we compare the company’s present best practice pricing policy with standard revenue management pricing methods. We present counterintuitive findings comparing nested booking limits with bid price policies. Considering worstcase scenarios, the fear of bid prices being risky due to the threat of early group bookings might indeed be unsubstantiated.

5.
We find that dynamic programming decomposition provides the best results in all scenarios of our simulation. Due to its large computational requirements, however, this technique is infeasible for most practical purposes. This is why we suggest a reduction of the required memory capacity using piecewise linear approximations.
Literature review
The problem considered in this paper can be described as discrete dynamic pricing in network revenue management with timedependent price elasticities and independent demand across origin–destinationpairs. As we discuss below, this problem is linked to the network revenue management problem with independent demand. In the first half of this section, we summarize relevant literature concerning general network revenue management and pricing. In the second half, we focus on literature which is more closely related to our specific setting.
General revenue management and dynamic pricing literature
Traditionally, revenue management models assume that a firm sells multiple perishable products simultaneously. Prices for different products are fixed and demand for each product is independent of the availability of other products. In this setting, the firm can decide if incoming customer requests to buy a given product should be accepted or rejected, see e.g., Talluri and Van Ryzin (2004).
Network revenue management and pricing problems consider products that may use more than just one resource. In general, these models suffer from the curse of dimensionality and can thus usually not be solved exactly. As a consequence, they have been approached by different approximation methods and heuristics.
The most common method is the deterministic linear program (DLP), see Talluri and Van Ryzin (1998). When including customer choice, or when considering a discrete dynamic pricing problem, a corresponding choice deterministic linear program (CDLP) can be formulated, see Gallego et al. (2004). Since both the DLP and CDLP are static and do not consider dynamic stochastic demand over time, it is common practice to frequently resolve those linear programs during the selling process, see e.g., Jasin and Kumar (2012). However, there is no guarantee that resolving increases the expected revenue, see Jasin and Kumar (2013) or Cooper (2002). In addition, it is wellknown that the DLP provides an upper bound of the maximum expected revenue in the traditional revenue management model. Similarly, CDLP provides an upper bound to the discrete dynamic pricing problem if the willingness to pay is constant over time, see e.g., Zhang and Adelman (2009). This result, however, does not hold for varying willingness to pay over time. In the context of approximate dynamic programming (ADP), tighter upper bounds than DLP can be found for traditional revenue management models.
Methods based on a dynamic programming decomposition divide the network problem into several singleresource problems by assigning adjusted prices to each productresource combination, see Talluri and Van Ryzin (2004).
Based on those approximations, booking limits or bid prices are often used to control a traditional network revenue management or discrete pricing problem, see Talluri and Van Ryzin (2004). Booking limits represent the maximum number of units of a product that should be sold. On the other hand, bid price policies approximate marginal seat values. A product is thus offered whenever its price exceeds the sum of all bid prices connected to the consumed resources.
De Boer et al. (2002) compare legbased nested booking limits and bid price policies for network problems with independent demand. A similar comparison was conducted by Pimentel et al. (2018) for hotel revenue management. Both papers report superiority of nested booking limits over bid price methods. We add to this discussion in our numerical experiments.
Static booking limits and bid prices can be obtained from DLP. But static bid prices have the disadvantage of not considering remaining time or capacity. Adelman (2007) provides an ADPbased approach for computing timedependent bid prices. The resulting method is closely related to simply adding a time index to the DLP, see ‘Dynamic versions of the static DLPs’ and ‘Upper bounds in pricing’ below. Taking into account the remaining capacity becomes important when realized demand differs substantially from demand forecasts. Capacity dependent bid prices are addressed for example by Bertsimas and Popescu (2003), Topaloglu (2009), Meissner and Strauss (2012) or Vossen and Zhang (2015).
Dynamic pricing models determine prices for different products. Demand for each product generally depends on the set of prices for each product, see Gallego and Van Ryzin (1997) for an introduction and Chen and Chen (2015) for a literature overview. In the context of setting prices in transportation, as considered in this paper, customers often only request one particular origin–destinationpair without being influenced by the prices of other routes, see e.g., Erdelyi and Topaloglu (2011).
In contrast to continuous pricing problems, discrete pricing problems restrict the set of feasible prices for each product to a finite set. Such a problem can be transformed efficiently to an independent demand model, see Walczak et al. (2010) as well as Fiig et al. (2010).
Using ADP for dynamic pricing models, continuous prices usually lead to nonlinear mathematical programs, see e.g., Ke et al. (2019). On the other hand, the discrete pricing problem often leads to a linear program, see e.g., Ke et al. (2019).
Related literature on bus and railway revenue management
Most literature about practical applications of revenue management theory is concerned with the airline industry.
For the bus industry, the authors are not aware of any literature on revenue management models. Passenger railway is very similar to the bus industry and has received much more attention in the literature. For an overview, see Armstrong and Meissner (2010). We summarize the most relevant literature on this application in the following.
Because prices are often fixed for railway companies due to government restrictions, most papers introducing models for this industry do not consider dynamic pricing, see e.g., Ciancimino et al. (1999), You (2008), Wang et al. (2016).
Yuan et al. (2018) apply the compact reduction for the affine approximation done by Vossen and Zhang (2015) to a railway revenue management problem. Since their setting includes a general customer choice model, even the reduced linear program is of an exponential size and must be solved by constraint generation.
Zheng and Liu (2016) and Zheng et al. (2017) optimize over a continuous set of feasible prices, which renders their mathematical problem highly nonlinear. Similarly, Hu et al. (2020) implement a QuasiNewton method to solve their dynamic pricing problem.
Hetrakul and Cirillo (2014) discuss a simultaneous pricing and seat allocation model. In their model, the total demand over the selling horizon is fixed. Dynamic pricing can only influence the booking time distribution. Qin et al. (2019) as well as Zhu and Zhao (2020) need booking limits together with dynamic pricing because their model includes an upper bound constraint on the price. The resulting mathematical programs are solved by a heuristic algorithm or LINGO, respectively.
Outline of paper
In ‘Preliminaries and problem formulation’, we introduce the general problem framework and notation. In ‘Status quo: legbased booking limits based on expected demand’, we shortly outline the pricing policy currently used by FlixBus. We start the discussion of standard revenue management methods with the introduction of the choice deterministic linear program and its equivalent independent demand DLP in ‘Other heuristics for the discrete pricing problem’. The dynamic improvement of the DLP is done in ‘Dynamic versions of the static DLPs’. We discuss upper bounds that are obtained from our pricing problems in ‘Upper bounds in pricing’. Then, we discuss the threat of early group bookings in ‘Danger of early group bookings’. We also suggest remedies which take into account computational limitations. The paper concludes with numerical experiments using real data in ‘Numerical experiments’.
All proofs to our theorems and lemmas can be found in ‘Proofs’.
Preliminaries and problem formulation
A bus route starting at origin \(1\) and running to destination \(L+1\) with stops at locations \(2,3,\dots ,L\) is commonly referred to as a bus line. Since in our application, transfers are rare, we consider a network corresponding to one bus line.
For a particular bus line, various origin–destinationpairs \(j\in \{1,\dots ,J\}\) are sold during a finite selling horizon of continuous time \(\tau \in (0,{\tau }_{T}]\), where \(\tau\) denotes the timetogo until departure. The bus company may choose the best price for every origin–destinationpair over time from a given set of prices. Its goal is to maximize the expected revenue generated from the selling process.
Each origin–destinationpair \(j\) starting at origin \(o\) and ending at destination \(d\) consists of legs \(o,o+1,\dots ,d1\), see Fig. 1. The consumption matrix \(A\in \{0,1{\}}^{L\times J}\) has corresponding entries: \({A}_{l,j}=1\) if leg \(l\) is contained in origin–destinationpair \(j\), and \({A}_{l,j}=0\) otherwise. Let \({A}^{j}={\left({A}_{1,j},\dots ,{A}_{L,j}\right)}^{T}\) be the column corresponding to origin–destinationpair \(j\). For each origin–destinationpair \(j\), there are fare classes \(f\in \{1,\dots ,F\}\) with corresponding prices \({P}_{j,f}\), with \({P}_{j,1}>{P}_{j,2}\dots >{P}_{j,F}\). The additional artificial fare class \(f=0\) provides the possibility of closing a particular origin–destinationpair for sale. At time \({\tau }_{T}\), no ticket has been sold yet and the bus has a total capacity of \({c}_{l}=C\) seats on each leg \(l\). For notational convenience, we define \(\overrightarrow{c}={\left({c}_{1},\dots {,c}_{L}\right)}^{T}\).
The customer arrival stream is modeled as a nonstationary Poisson process with arrival rate \({\lambda }_{\tau ,j}\). An arriving customer requesting origin–destinationpair \(j\) is willing to pay fare class \(f\) with probability \({\text{Pr}}\left(f\tau ,j\right)\), where \({\text{Pr}}\left(F\tau ,j\right)=1\). To model group bookings, we assume that the probability distribution of the group size is known and given by \({\left({\phi }_{s}\right)}_{s\in {\mathbb{N}}}\), where we interpret \({\phi }_{s}\) as the probability for a group size \(s\). For each group size \(s\), the arrival stream is then modeled as a nonstationary Poisson process with arrival rate \({\phi }_{s}{\lambda }_{\tau ,j}/s\). To simplify the model, we divide the time horizon into a finite number of intervals \(\left({\tau }_{t1},{\tau }_{t}\right],t=1,\dots ,T\). In each time interval \(t\), the expected number of customers requesting origin–destinationpair \(j\) and willing to pay at most \({P}_{j,f}\) is \({D}_{t,j,f}={\int }_{{\tau }_{t1}}^{{\tau }_{t}}{\lambda }_{\tau ,j}\cdot {\text{Pr}}\left(f\tau ,j\right)\hspace{0.17em}\mathrm{d}\tau\). We choose the time grid fine enough such that \(\sum_{j}{D}_{t,j,F}\le 1\) for each \(t\), i.e., we assume that for all \(t\), at most one customer arrives in expectation.
Let \({x}_{l}\) be the number of remaining seats on leg \(l\) during the selling process and \(\overrightarrow{x}={\left({x}_{1},\dots ,{x}_{L}\right)}^{T}\). The value function maximizing the expected revenue that can be obtained by choosing the fare class of each origin–destinationpair for all \(t\) is then given by:
The optimal pricing policy based on the value function is:
where \(\tau \in ({\tau }_{t1},{\tau }_{t}]\).
Given \(\overrightarrow{x}\), the chosen fare class maximizes the sum of the expected onestage revenue and the expected value function given the reduced number of seats \(\overrightarrow{x}{A}^{j}\) given a sale and \(\overrightarrow{x}\) given no sale. Since the number of states increases exponentially in the number of legs, this recursion suffers from the curse of dimensionality and is therefore intractable even for relatively small problems.
Status quo: legbased booking limits based on expected demand
Until recently, FlixBus exclusively implemented a pricing policy which specifies booking limits that are based directly on the expected demand. We present a simplified version of their algorithm which should be sufficiently compatible in order to illustrate the core idea. Expected demand \({D}_{t,j,f}\) for origin–destinationpair \(j\) at time \(t\) willing to pay at most \({P}_{j,f}\) is estimated from historical data. Given this, the number of customers expected to request origin–destinationpair \(j\) and willing to pay fare class \(f\) but not fare class \(f1\) is \(\sum_{t}\left({D}_{t,j,f}{D}_{t,j,f1}\right)\). Assuming that demand equals expected demand on leg \(l\), a booking limit of \({b}_{l,f}=\sum_{t,j}{A}_{l,j}\left({D}_{t,j,f}{D}_{t,j,f1}\right)\) tickets should be sold to fare class \(f\) for each leg \(l\). These booking limits are then adjusted in order to ensure that the cumulative booking limit on each leg \(l\) does not exceed the total capacity of seats, \({c}_{l}=C\), by reducing the booking limits of the lowestpriced fare classes.
Having computed these booking limits for each leg \(l\) and each fare class \(f\), the fare class offered is determined as the lowest fare class that is available for sale on all legs \(l\) contained in the requested origin–destinationpair \(j\).
This legbased booking limit mechanism for pricing is remotely related to the nested network policy discussed by Pimentel et al. (2018). Since expected demand is used directly to compute booking limits and nesting is done by fare class, it can be viewed as a computationally less expensive dynamic pricing version of the algorithm suggested by De Boer et al. (2002) for traditional network revenue management with independent demand.
In the following, we refer to this booking limit policy based on expected demand as BLED. As long as the demand forecast is not changed, legbased booking limits always lead to increasing prices over time. The additional recommendation to only update booking limits of fare classes that are not fully booked at the time of the update ensures increasing prices over time even in the presence of forecast updates.
This control policy has two major drawbacks: (1) booking limits based on expected demand may perform poorly even on singleleg problems depending on the price differences between fare classes and the shape of the demand distribution and (2) legbased booking limits severely restrict the options to control demand streams in network revenue management.
Drawback (1) is wellknown in the revenue management community. Therefore, we provide a short toy example to demonstrate drawback (2):
Example drawback 2
Consider a bus with 5 seats going from origin 1 to destination 3. Prices for origin–destinationpairs 1–2 and 2–3 are 5 for fare class 2 and 15 for fare class 1. Prices for origin–destinationpair 1–3 are 7 for fare class 2 and 20 for fare class 1. Expected demand for all origin–destinationpairs is expected to be larger than 5 for fare class 2; it is 0 for fare class 1. Even though it is obvious that origin–destinationpair 1–3 should now be closed to bookings in fare class 2 and the others should remain open, such a policy cannot be implemented given legbased booking limits. Note that (legbased) bid prices could resolve this drawback by setting them equal to \(4\) for both legs. Since \(5 >4\) but \(7<4+4\), this would open fare class 2 for origin–destinationpairs 1–2 and 2–3, and close fare class 2 for origin–destinationpair 1–3.
Other heuristics for the discrete pricing problem
To address the drawbacks mentioned above, we suggest a set of standard methods of revenue management, adapted to the discrete pricing problem.
Deterministic linear programs
Within the class of deterministic linear programs, we suggest two approaches: (1) view the discrete pricing problem as a special case of the deterministic linear program with customer choice, as suggested by Gallego et al. (2004), and (2) transform the discrete pricing problem to a capacity control problem with independent demand and then use the standard DLP, see Talluri and Van Ryzin (2004). We first introduce both approaches and then show that they are equivalent.
Choice deterministic linear program
The following linear program was suggested for general customer choice models by Gallego et al. (2004) but can easily be applied to our discrete pricing setting as demonstrated by Erdelyi and Topaloglu (2011):
where \({D}_{j,f}=\sum_{t=1}^{T}{D}_{t,j,f}\). For each origin–destinationpair \(j\), the variable \({\mu }_{j,f}\) can be interpreted as the portion of time at which fare class \(f\) is offered during the selling horizon. The objective is to maximize the expected revenue. The first constraint is the availability constraint, the second constraint enforces consistency with the interpretation of \(\mu\). The dual values of the first constraint yield bid prices \({\pi }_{l}\), which can be used as an approximation for the marginal seat value: \(\sum_{l}{\pi }_{l}{A}_{l,j}\approx {v}_{t1}\left(\overrightarrow{x}\right){v}_{t1}\left(\overrightarrow{x}{A}^{j}\right)\). Inserting this approximation into (3), we obtain the following pricing policy, which aims at a maximization of a onestage expected revenue with bid price adjusted prices:
We refer to this policy as BPCDLP. Given the statusquo implemented at FlixBus, a policy based on legbased booking limits would require only minimal changes. We hence also suggest to control the selling process as outlined in ‘Status quo: legbased booking limits based on expected demand’ but based on the expected demand that should be satisfied, \({D}_{j,f}{\mu }_{j,f}\) instead of \({D}_{j,f}{D}_{j,f1}\), i.e., using booking limits \({b}_{l,f}=\sum_{j}{A}_{l,j}{D}_{j,f}{\mu }_{j,f}\). We refer to this policy as BLCDLP in the following.
To allow the underlying bid prices to change over time, the underlying deterministic linear program is often resolved multiple times during the selling process in practice.
Transformation to revenue management with independent demand
Since it is wellknown that discrete pricing problems can be transformed to capacity control problems with independent demand (see Fiig et al. (2010) and Walczak et al. (2010)), the wellknown DLP used in network revenue management can also be used for our discrete pricing problem.
As a first step, we transform total demand and prices as follows: For every origin–destinationpair \(j\), we delete all fare classes which do not belong to the efficient frontier, see Fiig et al. (2010). In the following, we only consider the remaining set of efficient fare classes \({\mathcal{F}}_{j}\).
If fare classes \(f\mathrm{^{\prime}}=1,\dots ,f\) are offered given the independent demand assumption, customers willing to pay at most \({P}_{j,f\mathrm{^{\prime}}}\) with \(f\mathrm{^{\prime}}<f\) do not buy down to fare class \(f\). Since they buy down in the discrete pricing problem, demand is adapted to \({d}_{j,f\mathrm{^{\prime}}}:={D}_{j,f\mathrm{^{\prime}}}{D}_{j,f\mathrm{^{\prime}}1}\). According to Walczak et al. (2010), we then transform prices as follows:
With the transformed demand \({d}_{j,f}\) and prices \({p}_{j,f}\), we can reformulate the standard DLP given in Talluri and Van Ryzin (2004):
In this linear program with independent demand, the value \({y}_{j,f}\) represents the booking limit for origin–destinationpair \(j\) and fare class \(f\). The objective is to maximize the expected revenue. The first constraint ensures availability. The second constraint forces the booking limits to not exceed the demand forecasts. The following Theorem shows that \(\left({P}_{DLP}\right)\) is equivalent to \(\left({P}_{CDLP}\right)\) and yields the same bid prices.
Theorem 1
The linear programs \(\left({P}_{CDLP}\right)\) and \(\left({P}_{DLP}\right)\) are equivalent and yield the same bid prices.
Booking limits \({y}_{j,f}\) obtained from \(\left({P}_{DLP}\right)\) are booking limits of the transformed problem and in general not equal to \({D}_{j,f}{\mu }_{j,f}\). Since \(\left({P}_{DLP}\right)\) has much more intuitive appeal, however, we also suggest a pricing policy BLDLP that controls the selling process as outlined in ‘Status quo: legbased booking limits based on expected demand’ but based on \(\left({P}_{DLP}\right)\) using booking limits \({b}_{l,f}=\sum_{j}{A}_{l,j}{y}_{j,f}\). For integer demand forecasts \({d}_{j,f}\), the unimodularity of the constraint matrix implies that optimal solutions of \(\left({P}_{DLP}\right)\) and hence the corresponding booking limits used by BLDLP are always integer, see Bertsimas and Popescu (2003).
In revenue management with independent demand, all fare classes which satisfy \({p}_{j,f}\ge \sum_{l}{\pi }_{l}{A}_{l,j}\) are offered. Consistent with the above intuitive discussion of the transformation formula, the corresponding discrete pricing policy BPDLP offers the lowest such price, implying
Lemma 1
The pricing policies BPCDLP and BPDLP are equivalent.
Dynamic versions of the static DLPs
Both \(\left({P}_{CDLP}\right)\) and \(\left({P}_{DLP}\right)\) ignore the dynamic nature of the problem. Given timedependent price elasticities, we expect that adding a time index to the variables should improve performance. The following linear program is based on a more general dynamic formulation of \(\left({P}_{CDLP}\right)\) provided in Kunnumkal and Topaloglu (2008):
The intuition of this linear program closely follows the interpretation of \(\left({P}_{CDLP}\right)\): Variable \({\mu }_{t,j,f}\) is interpreted as the probability that price class \(f\) for origin–destinationpair \(j\) is offered at time \(t\).
A dynamic version of \(\left({P}_{DLP}\right)\) can be formulated accordingly. To do this, let \({d}_{t,j,f},{p}_{t,j,f}\) be the result of a transformation as outlined in ‘Transformation to revenue management with independent demand’, but using \({D}_{t,j,f}\) instead of \({D}_{j,f}\). The following linear program is similar to the singleresource multiproduct stochastic version of Maglaras and Meissner (2006):
Just like their static counterparts, these two problems are equivalent. The proof of the following theorem is analogue to the proof of Theorem 1.
Theorem 2
The linear programs \(\left({P}_{dCDLP}\right)\) and \(\left({P}_{dDLP}\right)\) are equivalent and yield the same bid prices.
Bid prices \({\pi }_{l}\) obtained from \(\left({P}_{dCDLP}\right)\) or \(\left({P}_{dDLP}\right)\) can be used to construct a policy using (4) if \({D}_{j,f}\) is replaced with \({D}_{t,j,f}\). We refer to this policy as BPdDLP. We can also construct legbased booking limit policies BLdCDLP resp. BLdDLP by computing \({b}_{l,f}=\sum_{t,j}{A}_{l,j}{D}_{t,j,f}{\mu }_{t,j,f}\) resp. \({b}_{l,f}=\sum_{t,j}{A}_{l,j}{y}_{t,j,f}\).
Upper bounds in pricing
For capacity control problems with independent demand and constant prices, it is well known that the (static) DLP provides an upper bound of the exact value function, see e.g., Bertsimas and Popescu (2003). Adelman (2007) suggests a linear program that provides an even tighter upper bound. Similarly, in the customer choice setting with timeindependent choice probabilities, Zhang and Adelman (2009) prove that the (static) CDLP is an upper bound of the exact value function.
If we transform a discrete pricing problem with timedependent price elasticity to a single stage capacity control problem with independent demand, however, the optimal value of neither \(\left({P}_{CDLP}\right)\) nor \(\left({P}_{DLP}\right)\) provides an upper bound for the exact value function. This is because these static models assume constant prices over time and a timedependent price elasticity leads to timedependent transformed prices. We demonstrate this in numerical experiments in ‘Numerical experiments’.
Kunnumkal and Topaloglu (2008) prove that the dynamic deterministic linear program \(\left({P}_{dCDLP}\right)\), however, provides an upper bound. Again, the affine approximation from Adelman (2007), adapted to the discrete pricing model, provides a tighter bound. The proof of the following theorem can be found in ‘Proofs’. It highlights the close similarity of \(\left({P}_{dDLP}\right)\) and the affine approximation from Adelman (2007):
Theorem 3
Let \({Z}_{dDLP}\) be the optimal value of \(\left({P}_{dDLP}\right)\) and \(\left({P}_{dCDLP}\right)\). Furthermore, let \(\left({P}_{AL}\right)\) be the approximate linear program based on (1) and (2) with the affine approximation as described by Adelman (2007), and let \({Z}_{AL}\) be the optimal value of \(\left({P}_{AL}\right)\). Then, \({v}_{T}\left(\overrightarrow{c}\right)\le {Z}_{AL}\le {Z}_{dDLP}\).
Danger of early group bookings
Given the strategic decision to allow for lowcost refunds, groups could buy large numbers of tickets early in the selling process without large financial risks. In the face of such a threat, a booking limit policy often appears to be safer than a static bid price policy since the number of tickets sold at small prices is limited.
Using a booking limit policy for a given origin–destinationpair \(j\), the number of tickets sold at \({P}_{j,f}\) is always restricted by the booking limit. If the remaining capacities are \({x}_{l}\), tickets are currently offered at \({P}_{j,f}\), and a group requests \(n\) tickets at the same time, at most \({\text{min}}_{l}\{{x}_{l}\sum_{f\mathrm{^{\prime}}=1}^{f1}{b}_{l,f\mathrm{^{\prime}}}\}\) seats are sold at price \({P}_{j,f}\). If this number is smaller than \(n\), the remaining seats are offered at higher prices.
A pricing policy based on bid prices always offers the lowest price class \(f\) such that the transformed price \({p}_{j,f}\) is larger than the sum of the bid prices of the legs used on this origin–destinationpair. If the remaining capacity on each leg \(l\) is \({x}_{l}\), tickets are currently offered at \({P}_{j,f}\), and a group requests \(n\) tickets at the same time, the total price charged is \(n{P}_{j,f}\) as long as \(n\le {x}_{l}\) for each leg \(l\) used by origin–destinationpair \(j\).
Most commonly, this drawback of bid price based policies not being capacitydependent is addressed by resolving the underlying problem multiple times over the selling horizon. Given these updated bid prices, new capacity levels are taken into account. In our setting, however, updates can only be done overnight due to computational capacity restrictions. But even given more computational resources, it seems difficult to schedule an update in the middle of a group booking.
In the following, we will argue that the intuition of booking limits being superior in such a setting need not be true. Instead, the performance of booking limit vs. bid price policies highly depends on the circumstances of the group booking.
In general, our simulations confirm this intuition if such group bookings represent extra unexpected demand. To demonstrate that this is not generally true, however, consider the following setting: assume that high fare demand occurring during the selling process belongs to passengers traveling to a group event. A group organizer might venture to buy tickets for all potential participants early in the booking process. The total expected demand remains unchanged, but the temporal distribution differs from the forecast. We outline an example of this setting in the following:
Example group organizer
Consider a singleleg bus line with a capacity of 16 seats and two fare classes \(f=1,2\) with prices \({P}_{1}=20,{P}_{2}=10\). We divide the booking horizon into two time periods \(t=1,2\) and assume that both demand and willingness to pay increase as departure approaches. In particular, demand \({D}_{t,f}\) is deterministic and equal to \({D}_{2,1}=1,{D}_{2,2}=6\) in period \(t=2\), and \({D}_{1,1}=8,{D}_{1,2}=12\) in period \(t=1\). All \({D}_{1,1}=8\) high fare passengers travel to a group event. The bus departs at the end of period \(t=1\). Booking limits \({b}_{f}\) obtained by BLCDLP are equal to \({b}_{1}=8,{b}_{2}=8\). Bid price policy BPDLP also starts by offering the lower fare class. We assume that a group organizer buys all \({D}_{1,1}=8\) tickets at a price of \({P}_{2}\) at the beginning of period \(t=2\) (before regular demand of this period arrives). Consequently, all high fare demand in period \(t=1\) is lost.
At the beginning of period \(t=2\), the booking limit policy sells \(8\) tickets to the group organizer at \({P}_{2}=10\) and then increases the price to \({P}_{1}=20\). Since \({D}_{2,1}=1\) in period 2, one ticket is sold at price \({P}_{1}=20\). During period \(t=1\), all high fare demand \({D}_{1,1}=8\) is satisfied by the group organizer and no tickets can be sold by the bus company. The total revenue equals \(8\cdot 10+1\cdot 20=100\). The bid price policy also sells \(8\) tickets to the group organizer, and another \(6\) tickets at price \({P}_{2}=10\) in period \(t=2\). After updating, the price is increased, but all high fare demand at \(t=1\) is again lost. The total revenue equals \(8\cdot 10+6\cdot 10=140\). In this example, the bid price policy beats the booking limit policy by 40%.
If an early group booking replaces high fare demand that would normally occur towards the end of the booking horizon, the above example shows that booking limits cannot always prevent corresponding revenue losses. Even worse, booking limits might protect seats for high fare demand which is then lost. We further demonstrate this phenomenon in our numerical experiments with stochastic demand below.
Alternatives to static bid price policies and booking limit policies include: (1) Solving \(\left({P}_{DLP}\right)\) for a set of given capacity levels, leading to a table of capacitydependent bid prices (see ‘Capacity and timedependent bid prices based on static deterministic linear program’ for details) and (2) implementing the standard dynamic programming decomposition method (DPD). Since the memory capacity needed for DPD is large, we suggest approximating the decomposed value function piecewise linearly (see ‘Dynamic programming decomposition’ for details). Naturally, such improvements come at a computational cost. We discuss this tradeoff in the numerical experiments.
Numerical experiments
In this section, we consider a reallife bus line that starts in city 1 and goes to city 6 with \(4\) stops (at cities 2, 3, 4, and 5). Hence, there are \(L=5\) legs. The bus has a capacity of \(C=46\). Due to legal restrictions only \(J=11\) origin–destinationpairs of the 15 possible combinations are offered. For each origin–destinationpair, there are \(F=8\) fare classes.
We first explain our demand data, which we derive from historical sales. Second, we present results of simulations we ran based on these data sets. Third, we discuss these results and try to explain the observed phenomena.
Estimation and simulation of demand
For the 5leg ride described above, we obtained (1) data of internal demand rate forecasts for 46 departure times of one particular month as well as (2) the corresponding historical selling prices.
FlixBus forecasts demand rates \({\left({\tau }_{t}\right)}_{t=1,\dots ,24}=\left(1,2,3,\dots ,91,364\right)\) days before departure. Constant demand rates \({\lambda }_{\tau ,j}\cdot {\text{Pr}}\left(f\tau ,j\right)\) are assumed within the time interval \(({\tau }_{t1},{\tau }_{t}]\). In order to obtain \(\sum_{j}{D}_{t,j,F}\le 1\), we divided each of these time intervals into sufficiently small subintervals. We refer to demand streams given by a process that first randomly picks one of the departure times and then generates demand according to the given demand rates as “company data”.
Since we cannot reveal how the internal forecast was derived, we additionally unconstrained historical sales by fitting a parametric model using regression. We call this data set “parametric data”.
Given prices \({P}_{j,f}\) for origin–destinationpairs \(j\) and fare classes \(f=1,\dots ,F\), the model underlying the data set “parametric data” has parameters.

\(\alpha\) and \(\beta\) modeling the total exponential arrival rate \(\alpha {e}^{\beta \tau }\);

\({\left({g}_{j}\right)}_{j}\) with \(\sum_{j}{g}_{j}=1\) providing the probability of incoming demand requesting origin–destinationpair \(j\); and

the price elasticity coefficient \({\Lambda }_{j}\left(\tau \right)\), which evolves over time polynomially with exponent \({\delta }_{j}\) and satisfies \({\Lambda }_{j}\left(0\right)={\gamma }_{j}^{\left(0\right)}\) and \({\Lambda }_{j}\left({\tau }_{T}\right)={\gamma }_{j}^{\left(T\right)}\).
Modeling the willingness to pay via an isoelastic function \({\left(\frac{{P}_{j,f}}{{P}_{j,F}}\right)}^{{\Lambda }_{j}\left(\tau \right)}\) with elasticity coefficient \({\Lambda }_{j}\left(\tau \right)\) depending on time polynomially, see Schlosser (2015), this yields
where \({\Lambda }_{j}\left(\tau \right):={\left(\frac{{\tau }_{T}\tau }{{\tau }_{T}}\right)}^{{\delta }_{j}}\left({\gamma }_{j}^{\left(0\right)}{\gamma }_{j}^{\left(T\right)}\right)+{\gamma }_{j}^{\left(T\right)}.\)
The parameters were fitted to historical sales of a particular month via a least squares regression. (A Tikhonovtype penalty term was added for stability.) Based on the results, we determined the time grid \({\tau }_{1},\dots {\tau }_{T}\) such that formula (5) yields \(\sum_{j}{D}_{t,j,F}=1{p}_{0}\) with \({p}_{0}=0.2\). Consistent with the interpretation of the “company data”, arrival rates are then assumed to be constant within time intervals \(({\tau }_{t1},{\tau }_{t}]\), i.e., \({\lambda }_{\tau ,j}\cdot {\text{Pr}}\left(f\tau ,j\right)=\frac{{D}_{t,j,f}}{{\tau }_{t}{\tau }_{t1}}\).
Highlighting the timedependence of price elasticity, note that for origin–destinationpair 3–4, we obtain \({\Lambda }_{j}\left({\tau }_{T}\right)=4.98\) and \({\Lambda }_{j}\left(0\right)=0.27\).
For arrival times earlier than 15 days before departure, arrival rates are very low but do not drop exponentially. This is why we only consider \(\tau \le 15\) in our fitted data, shortening the booking horizon and hence lowering expected demand slightly. To decrease the discrepancy between “parametric and company data”, we also shorten the booking horizon of the “company data” to 105 days.
For both data sets, we simulated three booking scenarios: single arrivals, group arrivals and the case of a group organizer. These three scenarios use the same forecast and only differ with respect to the simulation. For the single arrivals scenario, we have \({\phi }_{s}=1\) if and only if \(s=1\), and \({\phi }_{s}=0\) for \(s>1\). This is the assumption used in most academic papers. For the group arrivals scenario, we determined the distribution of \({\phi }_{s}\) using historical data.
We simulate a group organizer as follows: For one given origin–destinationpair \({j}_{gr}\), all demand willing to pay a certain price \({P}_{gr}\) is part of the group event. The expected demand of potential participants of the event is 1.5 times the total forecast \(\sum_{t}{D}_{t,{j}_{gr},f}\) for all \(f\) with \({P}_{{j}_{gr},f}\ge {P}_{gr}\). The group organizer buys tickets for all potential participants in the first time period \(t=T\) according to stochastic demand with expectation \(1.5\cdot \sum_{t}{D}_{t,{j}_{gr},f}\). At the end of the booking horizon, \(\frac{1}{3}\) of the participants is expected to cancel ensuring that the total expected demand is unchanged. Accordingly, each ticket bought in the first time period \(t=T\) is returned for a fee of 5 Euros with probability \(\frac{1}{3}\). In our simulations, we choose \({j}_{gr}\) to be the origin–destinationpair 3–4, which only uses leg 3. As the estimated willingness to pay differs significantly between the company data and the parametric data, we choose \({P}_{gr}=19.99\) for the company data and \({P}_{gr}=11.99\) for the parametric data.
Pricing policies
We compare the performance of the following policies in the demand scenarios described above.
BLED: FlixBus’ currently used legbased booking limit mechanism, which is based directly on expected demand as described in ‘Status quo: legbased booking limits based on expected demand’.
BLCDLP: FlixBus’ legbased booking limit mechanism combined with the booking limits obtained from \(\left({P}_{CDLP}\right)\) instead of expected demand as described in Choice deterministic linear program’.
BLDLP: FlixBus’ legbased booking limit mechanism combined with the booking limits obtained from \(\left({P}_{DLP}\right)\) instead of expected demand as described in ‘Transformation to revenue management with independent demand’.
BLdCDLP: FlixBus’ legbased booking limit mechanism combined with the booking limits obtained from \(\left({P}_{dCDLP}\right)\) as described in ‘Dynamic versions of the static DLPs’.
BLdDLP: FlixBus’ legbased booking limit mechanism combined with the booking limits obtained from \(\left({P}_{dDLP}\right)\) as described in ‘Dynamic versions of the static DLPs.
BPDLP: Bid price policy based on the dual values of \(\left({P}_{DLP}\right)\) as described in ‘Transformation to revenue management with independent demand’.
BPdDLP: Bid price policy based on the dual values of \(\left({P}_{dDLP}\right)\) as described in ‘Dynamic versions of the static DLPs’.
Values of all the abovementioned policies are updated 5,4,3,2 and 1 days before departure. In addition, we consider:
BPlevels: Capacitydependent interpolated bid prices based on the dual values of \(\left({P}_{DLP}\right)\) with different capacity levels as described in ‘Danger of early group bookings’ and ‘Capacity and timedependent bid prices based on static deterministic linear program’.
DPDexact: Standard dynamic programming decomposition based on the bid prices obtained from \(\left({P}_{DLP}\right)\) as described in ‘Danger of early group bookings’ and ‘Dynamic programming decomposition’.
DPDapprox: Piecewise linear approximation of the dynamic programming decomposition as described in ‘Danger of early group bookings’ and ‘Dynamic programming decomposition’.
Results
The average revenues of the different pricing policies, data sets, and scenarios are displayed in Table 1. Relevant computing times are reported in Table 2. The average number of sold seats per leg for both the single arrivals and group organizer scenario are shown in Table 3. The average numbers of sold tickets per fare class on leg \(l=3\) for the group organizer scenario are displayed in Table 4. The temporal developments of average prices for four important origin–destinationpairs are plotted in Figs. 2 and 3.
For the parametric data, we also report the optimal values of the linear programs \(\left({P}_{CDLP}\right)\), \(\left({P}_{DLP}\right)\), \(\left({P}_{dCDLP}\right)\), \(\left({P}_{dDLP}\right)\) as well as \(\left({P}_{AL}\right)\) in Table 5.
Overall, simulations using the company data generally produce higher revenues than simulations using the parametric data. This difference is mainly due to the fact that the company data estimates higher willingness to pay than our model. Single arrivals simulations also generally produce higher revenues than group arrivals simulations. This is because in our simulation group bookings, which are not taken into account during the optimization process, occupy more low fare seats than expected.
Upper bounds
Note that a few simulated expected revenues for parametric data and single arrivals in Table 1 exceed the optimal values of \(\left({P}_{DLP}\right)\) and \(\left({P}_{CDLP}\right)\) given in Table 5. As mentioned before, \(\left({P}_{DLP}\right)\) and \(\left({P}_{CDLP}\right)\) do not offer an upper bound of the maximum expected revenue.
Comparison of pricing policies
Turning to the comparison of the different pricing policies, we first focus on single arrivals and group arrivals. Comparing average revenues in Table 1 (obtained using the parametric or company data), we observe that FlixBus’ current pricing policy BLED is outperformed by the booking limits obtained from \(\left({P}_{CDLP}\right)\), which in turn are outperformed by the booking limits obtained from \(\left({P}_{dCDLP}\right)\). Booking limits obtained from the standard deterministic linear programs \(\left({P}_{DLP}\right)\) and \(\left({P}_{dDLP}\right)\) perform worse than their corresponding choice linear programs \(\left({P}_{CDLP}\right)\) and \(\left({P}_{dCDLP}\right)\). This is not surprising since booking limits of \(\left({P}_{DLP}\right)\) and \(\left({P}_{dDLP}\right)\) represent optimized booking limits for a capacity control problem with independent demand and hence should not be used directly in a pricing context.
Bid price policies using dual values from \(\left({P}_{DLP}\right)\) and \(\left({P}_{dDLP}\right)\) also beat FlixBus’ current policy and work especially well when using the company data. Capacitydependent \(\left({P}_{DLP}\right)\)bid prices (policy BPlevels) do not offer a substantial improvement compared to the policies already mentioned. Dynamic programming decomposition outperforms all other policies, and only loses little quality when approximated piecewise linearly.
Comparing the booking limit policy BLCDLP with the bid price policy BPDLP, our results are in line with De Boer et al. (2002) and Pimentel et al. (2018), confirming that booking limit policies lead to larger expected revenues when our parametric data is used. This, however, is not true when using the company data. Hence, no clear hierarchy can be established.
Comparing the two data sets, it seems like the stark change in willingness to pay in the last hours before departure is the main driver of booking limits outperforming bid prices given our parametric data set. Since bid prices are only updated on a daily basis in the last days before departure, prices cannot increase during the day. Booking limits, however, can lead to increasing prices within a day. The company data, on the other hand, suggests a lower change in willingness to pay. In this setting, price changes during a single day are less important.
Group organizer
The average revenues reported in the group organizer scenario in Table 1 underscore the discussion of ‘Danger of early group bookings’: Booking limits do not necessarily provide better results than bid price policies. Looking at the columns for leg \(l=3\) in the group organizer scenario in Table 3, we observe that the performance correlates with the average number of sold seats. Badly performing booking limit policies protect seats for high fare demand, which is then lost to the group organizer, see Table 4. Compared to bid price policies, this results in a small number of seats sold. Finally, dynamic programming decomposition outperforms all other policies also for the group organizer scenario.
Computational efficiency
Taking a look at Table 2, we see that computing bid prices for different capacity levels (policy BPlevels) is the least efficient method, directly followed by dynamic programming decomposition (policy DPD). In our experiments, approximating the decomposed value function piecewise linearly reduces the needed memory capacity by two orders of magnitude, see ‘Dynamic programming decomposition’. Considering performance, we conclude that dynamic programming decomposition combined with piecewise linear approximation (policy DPDapprox) tends to yield a better tradeoff than BPlevels.
The tradeoff between computational efficiency and performance quality is confirmed by Tables 1 and 2: Efficient policies such as BLCDLP or BPDLP are outperformed by dynamic programming decomposition, which is computationally more involved.
Price paths of different pricing policies
Concerning price developments, we can observe in Figs. 2 and 3 that most policies increase prices fairly monotone. As expected, booking limit policies produce monotone prices. Capacitydependent price policies, which are not based on booking limits, such as DPD and BPlevels, need not always lead to monotone prices.
Conclusion
In this paper, we considered a realworld discrete pricing problem for FlixBus, a large European bus company. The company’s current pricing policy, which implements booking limits directly based on expected future demand, was improved by an intermediate optimization step using booking limits from standard deterministic linear programs. Similar improvements could be achieved implementing bid price policies.
The fear that bid price policies, in contrast to booking limits, cannot protect resources from the threat of early group bookings turned out to be unsubstantiated if total demand remains unchanged: protecting seats for high fare demand does not necessarily make sense if this demand is replaced by an early group booking.
In all scenarios, dynamic programming decomposition outperformed all other policies. The required memory capacity can be reduced substantially by approximating the decomposed value function piecewise linearly, which, however, still needs much more computing time than solving standard deterministic mathematical programs.
We demonstrated that the standard static choice deterministic linear program only guarantees an upper bound of the maximal expected revenue if price elasticities are constant over time. As soon as a time index is added to the linear program, we obtain a dynamic deterministic linear program that provides an upper bound.
Further research can be done by investigating different early group booking and scalper scenarios. In particular, it would be of interest if, based on scenario characteristics, recommendations concerning the choice of an appropriate policy can be made. Second, concerning the comparison of discrete and continuous pricing problems, the tradeoff between computational efficiency and accuracy should be researched in more detail.
References
Adelman, Daniel. 2007. Dynamic bid prices in revenue management. Operations Research 55 (4): 647–661.
Armstrong, Alexander, and Joern Meissner. 2010. "Railway revenue management: Overview and models (operations research)." Department of Management Science, Lancaster University Working Papers MRG/0019, July 26. https://www.meiss.com/download/RMArmstrongMeissner.pdf.
Bertsimas, Dimitris, and Ioana Popescu. 2003. Revenue management in a dynamic network environment. Transportation Science 37 (3): 257–277.
Chen, Ming, and ZhiLong. Chen. 2015. Recent developments in dynamic pricing research: Multiple products, competition, and limited demand information. Production and Operations Management 24 (5): 704–731.
Ciancimino, A., G. Inzerillo, S. Lucidi, and L. Palagi. 1999. A mathematical programming approach for the solution of the railway yield management problem. Transportation Science 33: 168–181.
Cooper, William L. 2002. Asymptotic behavior of an allocation policy for revenue management. Operations Research 50 (4): 720–727.
Boer, De., V. Sanne, Richard Freling, and Nanda Piersma. 2002. Stochastic programming for multipleleg network revenue management. European Journal of Operational Research 137: 72–92.
Erdelyi, Alexander, and Huseyin Topaloglu. 2011. Using decomposition methods to solve pricing problems in network revenue management. Journal of Revenue and Pricing Management 10 (4): 325–343.
Fiig, Thomas, Karl Isler, Craig Hopperstad, and Peter Belobaba. 2010. Optimization of mixed fare structures: Theory and applications. Journal of Revenue and Pricing Management 9 (1): 152–170.
Gallego, Guillermo, and Garrett Van Ryzin. 1997. A multiproduct dynamic pricing problem and its applications to network yield management. Operations Research 45 (1): 24–41.
Gallego, G., G. Iyengar, R. Phillips, and A. Dubey. 2004. "Managing flexible products on a network." CORC Technical Report Tr200401.
Hetrakul, Pratt, and Cinzia Cirillo. 2014. A latent class choice based model system for railway optimal pricing and seat allocation. Transportation Research Part e: Logistics & Transportation Review 61: 68–83.
Hu, Xinlei, Feng Shi, Xu. Guangming, and Jin Qin. 2020. Joint optimization of pricing and seat allocation with multistage and discriminatory strategies in highspeed rail networks. Computers & Industrial Engineering 148: 106690.
Jasin, Stefanus, and Sunil Kumar. 2012. A resolving heuristic with bounded revenue loss for network revenue management with customer choice. Mathematics of Operations Research 37 (2): 313–345.
Jasin, Stefanus, and Sunil Kumar. 2013. Analysis of deterministic LPbased booking limit and bid price controls for revenue management. Operations Research 61 (6): 1312–1320.
Ke, Jiannan, Dan Zhang, and Huan Zheng. 2019. An approximate dynamic programming approach to dynamic pricing for network revenue management. Production and Operations Management 28 (11): 2719–2737.
Kunnumkal, Sumit, and Huseyin Topaloglu. 2008. A refined deterministic linear program for the network revenue management problem with customer choice behavior. Naval Research Logistics (NRL) 55 (6): 563–580.
Maglaras, Constantinos, and Joern Meissner. 2006. Dynamic pricing strategies for multiproduct revenue management problems. Manufacturing & Service Operations Management 8 (2): 136–148.
Meissner, Joern, and Arne Strauss. 2012. Network revenue management with inventorysensitive bid prices and customer choice. European Journal of Operational Research 216 (2): 459–468.
Pimentel, Victor, Aishajiang Aizezikali, and Tim Baker. 2018. An evaluation of the bid price and nested network revenue management allocation methods. Computers & Industrial Engineering 115: 100–108.
Qin, Jin, Yijia Zeng, Xia Yang, Yuxin He, Wu. Xuanke, and Qu. Wenxuan. 2019. Timedependent pricing for highspeed railway in China based on revenue management. Sustainability 11 (16): 4272.
Schlosser, Rainer. 2015. Dynamic pricing with timedependent elasticities. Journal of Revenue and Pricing Management 14 (5): 365–383.
Talluri, Kalyan, and Garrett Van Ryzin. 1998. An analysis of bid price controls for network revenue management. Management Science 44 (11): 1577–1593.
Talluri, Kalyan, and Garrett Van Ryzin. 2004. The theory and practice of revenue management. Norwell, MA: Kluwer Academic Publishers.
The Economist. 2018. "How Flixbus conquered the European coach market." The Economist, May 10.
Topaloglu, Huseyin. 2009. Using Lagrangian relaxation to compute capacitydependent bid prices in network revenue management. Operations Research 57 (3): 637–649.
Vossen, Thomas W. M., and Dan Zhang. 2015. Reductions of approximate linear programs for network revenue management. Operations Research 63 (6): 1352–1371.
Walczak, Darius, Setareh Mardan, and Royce Kallesen. 2010. Customer choice, fare adjustments and the marginal expected revenue data transformation: A note on using old yield management techniques in the brave new world of pricing. Journal of Revenue and Pricing Management 9: 94–109.
Wang, Xinchang, Hua Wang, and Xiaoning Zhang. 2016. Stochastic seat allocation models for passenger rail transportation under customer choice. Transportation Research Part e: Logistics & Transportation Review 96: 95–112.
You, PengSheng. 2008. An efficient computational approach for railway booking problems. European Journal of Operational Research 185: 811–824.
Yuan, Wuyang, Lei Nie, Wu. Xin, and Fu. Huiling. 2018. A dynamic bid price approach for the seat inventory control problem in railway networks with consideration of passenger transfer. PLoS ONE. https://doi.org/10.1371/journal.pone.0201718.
Zhang, Dan, and Daniel Adelman. 2009. An approximate dynamic programming approach to network revenue management with customer choice. Transportation Science 43 (3): 381–394.
Zheng, Jinzi, and Jun Liu. 2016. "The research on ticket fare optimization for China's highspeed train." Mathematical Problems in Engineering https://downloads.hindawi.com/journals/mpe/2016/5073053.pdf.
Zheng, Jinzi, Jun Liu, and David B. Clarke. 2017. "Ticket fare optimization for China’s highspeed railway based on passenger choice behavior." Discrete Dynamics in Nature and Society https://downloads.hindawi.com/journals/ddns/2017/6237642.pdf.
Zhu, Guangsheng, and Yu Zhao. 2020. Research on the joint decision model of highspeed railway dynamic pricing and ticket allocation. IOP Conference Series: Materials Science and Engineering. https://doi.org/10.1088/1757899X/768/5/052017
Author information
Authors and Affiliations
Corresponding author
Additional information
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
FlixBus is a global mobility provider since 2013, and from 2018 also with FlixTrain, expanding this service to the rail industry. As a unique combination of techstartup, ecommerce platform and transportation company, FlixBus quickly became Europe’s largest intercity bus network, allowing for an affordable and sustainable alternative to private transportation. FlixBus network, that is in rapid growth in Europe and abroad, relies on close partnerships with small and mediumsized enterprises and often familyowned businesses. For the operation of the longdistance FlixTrains, the company cooperates with the mostsuccessful private train operators in Europe.
Appendix
Appendix
Proofs
Proof (Theorem 1)
The dual of \(\left({P}_{CDLP}\right)\) is
The dual of \(\left({P}_{DLP}\right)\) is
Let \(V,\beta\) be a feasible solution to \(\left({D}_{DLP}\right)\). By definition of \(d,p\), we obtain
Summing over \(\sum_{f=1}^{\overline{f}}\), by the definition of \(d,p\) and a telescoping sum, this yields
Therefore, \(V,\alpha\) is feasible to \(\left({D}_{CDLP}\right)\) and has the same objective value. On the other hand, let \(V,\alpha\) be a feasible solution to \(\left({D}_{CDLP}\right)\). The functions
are strictly concave and obtain a maximum at \({f}^{*}\left(j\right)\). Without loss of generality, we may assume that \({\alpha }_{j}={D}_{j,{f}^{*}\left(j\right)}\left({P}_{j,{f}^{*}\left(j\right)}\sum_{l}{A}_{l,j}{V}_{l}\right)\). By the above calculations (6), we therefore conclude that \(0\ge {d}_{j,f}\left({p}_{j,f}\sum_{l}{A}_{l,j}{V}_{l}\right)\) for \(f>{f}^{*}\left(j\right)\). Thus, we set \({\beta }_{j,f}:=0\) for \(f>{f}^{*}\left(j\right)\), and \({\beta }_{j,f}:={p}_{j,f}\sum_{l}{A}_{l,j}{V}_{l}\ge 0\) for \(f\le {f}^{*}\left(j\right)\). As above, we obtain \(\sum_{f=1}^{{f}^{*}\left(j\right)}{d}_{j,f}{\beta }_{j,f}={D}_{j,{f}^{*}\left(j\right)}\left({P}_{j,{f}^{*}\left(j\right)}\sum_{l}{A}_{l,j}{V}_{l}\right)={\alpha }_{j}\). Therefore, \(V,\beta\) is feasible to \(\left({D}_{DLP}\right)\) and has the same objective value. ◻
Proof (Lemma 1)
By construction, we have \({p}_{j,F}\le \cdots \le {p}_{j,1}\). If the condition \({p}_{j,f}\ge \sum_{l}{V}_{l}{A}_{l,j}\) holds for some \(f\mathrm{^{\prime}}\), then it also holds for \(f=1\). By definition of \(p\), we can write the condition \({p}_{j,f}\ge \sum_{l}{V}_{l}{A}_{l,j}\) as
Finding the largest \(f\) such that this condition holds is therefore equivalent to finding the maximum of \({D}_{j,f}\left({P}_{j,f}\sum_{l}{V}_{l}{A}_{l,j}\right)\).◻
Proof (Theorem 3)
The inequality \({v}_{T}\left(\overrightarrow{c}\right)\le {Z}_{AL}\) was proven by Adelman (2007). Therefore, we only have to show \({Z}_{AL}\le {Z}_{dDLP}\).
According to Vossen and Zhang (2015), we have the following reduction of the affine approximation (for the discrete pricing problem, an equivalent linear program can be found in Ke et al. (2019):
Let \(\rho ,\mu\) be feasible to \(\left({P}_{AL}\right)\), and define \({y}_{t,j,f}:={d}_{t,j,f}{\mu }_{t,j,f}\). The first constraint of \(\left({P}_{AL}\right)\) implies
From \({A}_{l,j}{\mu }_{1,j,f}\le {\rho }_{1,l}\), it follows that
Therefore, \(y\) is feasible to \(\left({P}_{dDLP}\right)\). This proves \({Z}_{AL}\le {Z}_{dDLP}\). ◻
Technical details
Capacity and timedependent bid prices based on static deterministic linear program
To obtain capacity and timedependent bid prices, we solve the deterministic linear program \(\left({P}_{DLP}\right)\) for different capacity levels and different time points. During a booking process, current bid prices can then be obtained by interpolation and be used directly in formula (4) to compute current prices.
We choose time points \(0={t}^{0}<{t}^{1}<{t}^{2}<\cdots <{t}^{M}=T\) and capacity levels \(0={x}^{0}<{x}^{1}<{x}^{2}<\cdots <{x}^{N}=C\). Then, consider the following collection of deterministic linear programs:
where \({d}^{m}\) and \({p}^{m}\) are the result of the transformation using \({D}_{t,j}=\sum_{t=1}^{{t}^{m}}{D}_{t,j,f}\), see ‘Transformation to revenue management with independent demand’. Let \({\pi }_{l}^{m,n}\) be the dual values of \(\left({P}_{DLP}^{m,n}\right),m=1,\dots M,n=1,\dots N\).
Let \(t\) and \({x}_{l}\) be the current time step and the remaining capacities during a booking process. Based on the values \({\pi }_{l}^{m,n}\), current capacity and timedependent bid prices \({\pi }_{l}\) can be computed as linear interpolations. First, we determine the current capacity and timelevels \(n\left({x}_{l}\right)\) and \(m\left(t\right)\) such that
Then, we interpolate between the capacitylevels \(n\left({x}_{l}\right)1\) and \(n\left({x}_{l}\right)\) as well as between the timelevels \(m\left(t\right)1\) and \(m\left(t\right)\) as follows:
Dynamic programming decomposition
In this section, we first recapitulate the standard dynamic programming decomposition method for revenue management and then suggest an approximation procedure to reduce the required memory capacity.
Let \({d}_{t,j,f}\) and \({p}_{t,j,f}\) be transformed demand and prices, see ‘Dynamic versions of the static DLPs’. Since these are the parameters of a classic network revenue management problem with independent demand, we can apply dynamic programming decomposition as outlined in Talluri and Van Ryzin (2004, Section 3.4). As a result, we obtain an approximate value function. A pricing policy is obtained by inserting this approximation into (3).
Let \({\pi }_{l}\) be the bid prices obtained as dual values of \(\left({P}_{DLP}\right)\). We separate the problem into \(L\) singleleg problems. To this end, we determine adjusted prices for all legs \(l\):
For each separate leg \(l\), we then compute the value function of the corresponding singleleg problem using dynamic programming (Bellman equation):
Finally, \(\sum_{l}{v}_{t,l}\left({x}_{l}\right)\) is used as an approximation for the exact value function \({v}_{t}\left(\overrightarrow{x}\right)\).
In order to apply the resulting pricing policy, all values \({v}_{t,l}\left({x}_{l}\right)\) must be stored. The number of these values is \(LTC\). To reduce storage space, we approximate the value function for each leg \(l\) piecewise linearly. To do so, let \({t}^{m}\) and \({x}_{l}^{n}\) be the same time and capacitylevels as in ‘Capacity and timedependent bid prices based on static deterministic linear program’. We define the following piecewise linear basis functions:
Then, by construction of these basis functions, the corresponding weights are determined using the slopes of secants connecting points of the value function graph at the predetermined capacity and timelevels:
An approximation of \({v}_{t,l}\left(x\right)\) is then given by
The number of values \({\epsilon }_{l,n,m}\) that now needs to be stored is reduced to \(LMN\). In our numerical experiments using the parametric data, see ‘Estimation and simulation of demand’, the numbers are
Consequently, the required memory capacity is reduced by a factor of \(\frac{5\cdot 170\cdot 46}{5\cdot 7\cdot 10}\approx 112\).
Rights and permissions
Open Access This article is licensed under a Creative Commons Attribution 4.0 International License, which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons licence, and indicate if changes were made. The images or other third party material in this article are included in the article's Creative Commons licence, unless indicated otherwise in a credit line to the material. If material is not included in the article's Creative Commons licence and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. To view a copy of this licence, visit http://creativecommons.org/licenses/by/4.0/.
About this article
Cite this article
Barz, C., Laumer, S., Freyschmidt, M. et al. Discrete dynamic pricing and application of network revenue management for FlixBus. J Revenue Pricing Manag 22, 16–33 (2023). https://doi.org/10.1057/s41272021003654
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1057/s41272021003654