Model: Newsvendor under Dynamic Consumer Substitution (DYNAMNEWS)

Description:

A retailer sells \(n\) substitutable products \(j = 1, \ldots, n\), each with price \(p^j\) and cost \(c^j\). The initial inventory levels are denoted by \(x = (x_1, \ldots, x_n)\).

Unlike in the classical newsvendor problem, the demand is not given by a predetermined distribution, but depends on the initial inventory levels \(x\) as well. The customers \(t = 1, \ldots, T\) arrive in order and each can choose one product that is in-stock when he/she arrives, namely any element in \(S(x_t) = \{j : x^j_t > 0\} \cup \{0\}\) where \(0\) denotes the no-purchase option.

Each customer \(t\) assigns a utility \(U^j_t\) to option \(j = 0, \ldots, n\), and thus \(U_t = (U^0_t, U^1_t, \ldots, U^n_t)\) is his/her vector of utilities. Note that \(U^j_t\) is the utility of product \(j\) net of the price \(p^j\), and therefore could be negative. Since the no-purchase option \(0\) incurs neither utility nor cost, one can assume \(U^0_t = 0\). Customer \(t\) makes their choice to maximize his/her utility

\[d(x_t,U_t) = \argmax_{j\in S(x_t)} U^j_t\]

Sources of Randomness:

1. Use the Multinomial Logit (MNL) model. \(U^0_t, U^1_t, \ldots, U^n_t\) are mutually independent random variables of the form

\[U^j_t = u^j + \epsilon^j_t\]

where \(u^j\) is a constant and \(\epsilon^j_t\), \(j = 0, 1, \ldots, n\) are mutually independent Gumbel random variables with \(P(\epsilon^j_t \leq z) = \exp(-e^{-(z/\mu+\gamma)})\) (\(\gamma\) is Euler’s constant, \(\gamma \approx 0.5772\).)

Model Factors:

  • num_prod: Number of Products

    • Default: 2

  • num_customer: Number of Customers

    • Default: 5

  • c_utility: Constant of each product’s utility

    • Default: (1.0, 1.0)

  • mu: Mu for calculating Gumbel random variable

    • Default: 1.0

  • init_level: Initial inventory level

    • Default: (2, 3)

  • price: Sell price of products

    • Default: (9, 9)

  • cost: Cost of prodcuts

    • Default: (5, 5)

An alternative setting has 10 products, 30 customers, linearly increasing utilities (\(u^j = 5 + j\)) and initial inventory levels \((3, 3, \ldots, 3)\).

Respones:

  • profit: profit in this scenario

  • n_prod_stockout: number of products which are out of stock

References:

This model is adapted from the article Mahajan, S., & van Ryzin, G. (2001). Stocking Retail Assortments under Dynamic Consumer Substitution. Operations Research, 49(3), 334-351. (https://pubsonline.informs.org/doi/abs/10.1287/opre.49.3.334.11210)

Optimization Problem: Maximize Profit (<DYNAMNEWS-1)

Decision Variables:

  • init_level

Objectives:

Let \(\omega = \{U_t : t = 1, \ldots, T\}`denote the sample path, and assume that `\omega\) follows the probability distribution \(P\). We consider a one-period inventory model and assume \(P(T < +\infty) = 1\). The retailer knows the probability measure \(P\). His/her objective is to choose the initial inventory level \(x\) that maximizes profit.

Constraints:

  • Initial inventory levels must be non-negative.

Problem Factors:

  • budget: Max # of replications for a solver to take.

    • Default: 1000

Fixed Model Factors:

  • N/A

Starting Solution:

  • initial_solution: (2, 3) or \((3, 3, \ldots, 3)\)

Random Solutions:

Sample uniformly from (0, 10) in the dimension of num_prod.

Optimal Solution:

Unknown

Optimal Objective Function Value:

Unknown