Skip to main content

A model-based approximation of opportunity cost for dynamic pricing in attended home delivery


For online retailers with attended home delivery business models, the decisive factor for promising dynamic time slot pricing decisions is the quality of the opportunity cost approximation concerning incoming customer requests. For this purpose, we present a novel approximation approach based on mixed-integer linear programming that we integrate into the de facto standard dynamic pricing framework prevalent in the academic literature. Our approximation combines the most current information regarding the customers accepted to date with a forecast of expected customers to come that is adapted during the progress of the booking horizon. Thus, future customer requests demand management, i.e. the consequences of future pricing decisions, is anticipated. We approximate the retailer’s vehicle routes and thus delivery costs of expected customers by a dynamic seed-based scheme in which potential seeds’ locations as well as related distance approximations are dynamically adjusted under consideration of the locations of already accepted customers. In a computational study, we compare the approach to established pricing approaches in practice and to the state-of-the-art dynamic pricing policy. We show that our approach constantly yields the highest profit, specifically given a tight capacity level. We further provide implications for practical use. We show that, even for large-scale implementations in a real-time environment, our approach is applicable by using parallel computing and by only periodically recalculating opportunity cost. Even then, our approach leads to very good results.

This is a preview of subscription content, access via your institution.

Fig. 1
Fig. 2
Fig. 3


Download references

Author information

Authors and Affiliations


Corresponding author

Correspondence to Robert Klein.


Appendix A: Generation of price lists

The set of price lists \({{\mathcal {G}}}\) contains all \(\left| {{\bar{{\mathcal {G}}}} } \right| ^{S}\) possible combinations of prices in the set \({\bar{{\mathcal {G}}}} \). When defining set \({\bar{{\mathcal {G}}}} \), we have to find a good compromise between the number of prices y contained in \({\bar{{\mathcal {G}}}} \) (too many prices result in intractable computational complexity) and the fact that the prices must reflect real pricing decisions to a certain extent in order to obtain a good opportunity cost approximation. Since the availability of capacity is one of the crucial factors regarding opportunity cost of a customer request, we determine the set of prices \({\bar{{\mathcal {G}}}} \) depending on the expected number of customers who can be served at a given capacity level. Thus, the intuition behind the prices contained in set \({\bar{{\mathcal {G}}}} \) is that the resulting number of expected customers choosing a time slot at a given price fits to the overall capacity and at the same time the prices must reflect real pricing decisions.

For this purpose, we take the expected order size e per customer and we define an expected time \({\bar{z}} \) necessary to serve a customer (driving and service time). Given the overall service time \((V \mathop \sum \nolimits _{s\in {{\mathcal {S}}}} l_s)\) and capacity (VQ), we determine an approximation for the amount of customers \(\alpha \) which can possibly be served by

$$\begin{aligned} \alpha =\min \left\{ {\frac{V \mathop \sum \nolimits _{s\in {{\mathcal {S}}}} l_s }{{\bar{z}} };~\frac{V Q}{e}} \right\} . \end{aligned}$$

Further, we define the set \({{\mathcal {K}}}\) as the set of potential price points for \({\bar{{\mathcal {G}}}} \) (i.e. \({\bar{{\mathcal {G}}}} \subseteq {{\mathcal {K}}})\) and \(R_s (k)\) as the choice probability (derived from the MNL model) that a customer chooses time slot \(s\in {{\mathcal {S}}}\) when all slots are offered at a given price \(k\in {{\mathcal {K}}}\). The total expected number of customers \({\bar{\alpha }}_k \) who place an order if all time slots \(s\in {{\mathcal {S}}}\) are offered at the given price \(k\in {{\mathcal {K}}}\) is given by

$$\begin{aligned} {\bar{\alpha }}_k =T\lambda \mathop \sum \limits _{a\in {{\mathcal {A}}}} m_a \mathop \sum \limits _{s\in {{\mathcal {S}}}} R_s (k). \end{aligned}$$

To have a promising price range in \({\bar{{\mathcal {G}}}} \), the minimum difference \(\varepsilon \) between each pair of prices \(({\dot{k}},{\ddot{k}}) \in {\bar{{\mathcal {G}}}}\) with \({\dot{k}} \ne {\ddot{k}}\) has to be defined. Besides, the parameter \(\delta \in \left[ {0,1} \right] \) is used to define a share of \(\alpha \) in order to level out estimation mistakes (see explanation below). We can derive the set of prices \({\bar{{\mathcal {G}}}} \) for the anticipation of expected customer requests demand management by means of Algorithm 1.

In Step 0, we initialise the sets and parameters we need for the determination of set \({\bar{{\mathcal {G}}}} \). For our computational study, we initialised \({{\mathcal {K}}}=\left\{ {-10,-9.5,-9,\ldots ,10} \right\} \), \(y=5\), \(\varepsilon =1\) and \(\delta =0.75\). In Step 1, we determine the prices from set \({{\mathcal {K}}}\), which lead to a minimal difference between expected customers who place an order if all time slots \(s\in {{\mathcal {S}}}\) are offered at the given price \(k\in {{\mathcal {K}}}\) and who can be served at the given capacity level. \({\bar{{\mathcal {G}}}} \) contains only prices that differ at least by \(\varepsilon \) to get a broader price range (if condition). In our computational study, this yields, for instance, in the case of 8 delivery vans, the price set \(\left\{ {1.5,2.5,3.5,4.5} \right\} \). At the end, we also add one price for which only the share \(\delta \) of the customers who can possibly be served at the given capacity level would choose a time slot. This allows for realistic pricing decisions in case the capacity of a delivery time slot becomes tight at the end of the booking horizon owing to uncertainty in expectations. Regarding the price set for 8 delivery vans in our computational study, we add the price 9 which results in the complete price set  \({\bar{{\mathcal {G}}}} _{8vans} =\left\{ {1.5,2.5,3.5,4.5,9} \right\} \).

figure a

Appendix B: Generation of expected delivery schedules

The application of ICP as dynamic pricing benchmark policy necessitates several expected delivery schedules. In line with Yang et al. (2016), we generate 10 schedules by simulating several booking horizons represented by \(\upomega \in {\Omega }\) in Algorithm 2. We randomly draw the sets of customer streams for the booking horizons from the generated grid of potential customers (cf. Sect. 4.1).

In Step 1 of Algorithm 2, customers are made price offers based on insertion cost without any expectations of future customers at all [Hindsight Policy (Yang et al. 2016), cf. Sect. 1]. In Step 2 of Algorithm 2, we use the resulting schedules of the first simulation as expected schedules, which allows the application of the Foresight Policy of Yang et al. (2016) (cf. Sect. 1) in order to determine a request’s insertion cost. We repeat this several times using the resulting delivery schedules of the last simulation as expected schedules for the current one. This repetition is necessary to eliminate the inaccuracy resulting from the very first set of past schedules, which can only be generated by applying the Hindsight Policy.

figure b

Rights and permissions

Reprints and Permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Klein, R., Mackert, J., Neugebauer, M. et al. A model-based approximation of opportunity cost for dynamic pricing in attended home delivery. OR Spectrum 40, 969–996 (2018).

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: