报童问题 (The Newsvendor Problem)

引言

本文介绍了一个经典的商品采购模型(报童问题)及其解法. 该模型通过考虑需求的不确定性来最大化销售利润. 注: 本文的主要内容参考Gallego[1].

1. 报童问题

这是一个关于卖报商人采购报纸的问题. 每天早上, 卖报商以批发价0.3元(每份)向报社采购当天的报纸, 然后以零售价1元(每份)进行售卖. 如果报纸在当天没有卖完, 他会把报纸以0.05元(每份)的价格卖给废品回收站. 那么卖报商应该如何确定报纸的采购数量?

我们先简单分析一下这个问题的特点:

  1. 采购一个商品.
  2. 在一个采购周期内仅采购一次.
  3. 采购之时不知道准确的需求.
  4. 商品会过期.

2. 数学模型

下面我们用数学语言把这个问题再描述一下.

参数

  • 单位采购成本(cost per unit):
  • 零售价(sale price):
  • 残值(salvage value), 即商品过期之后的售价:
  • 需求(demand): 随机变量服从分布, 均值和标准差分别记为

决策变量

  • 采购量:

目标

  • 最大化期望收益

不失一般性, 我们假设, 否则问题的最优解是显而易见的.

3. 求解

记. 因此, . 利用, 我们可以把表示成如下形式:

其中

因此 . 记, . 则分别代表采购过量(overage)和少量(underage)的单位成本.

令. 可以被写成

由于是凸函数, 它的线性变换也是凸函数, 当是连续分布时, 最优解的一阶导数为0. 我们可以通过交换积分号导, 即

其中 如果, 否则为0.

注意到且. 我们有

令, 我们得到

临界分位数(Critical Fractile)

由于是随机变量的cdf(cumulative distribution function) (单调非递减), 因而存在逆函数. 设最优解为, 因此

4. 例子

本节考虑两个具体的例子. 一个是服从正态分布(连续分布), 可以按照前文的公式计算最优解; 另一个例子是服从Poisson分布, 我们介绍如何把计算方法适配到离散分布的情形.

4.1 正态分布

. 令, 且.
由于

因此

服从正态分布, , . 设, , . 我们的计算步骤如下:

  1. # python
    >>> from scipy.stats import norm
    >>> norm.ppf(0.75)
    0.6744897501960817
    

4.2 Poisson分布

Poisson分布的pmf (probability mass function)为

由于Possion分布是离散分布(对任意的, 不一定可计算), 我们令

服从Poisson分布, . 设, , . 我们的计算步骤如下:

  1. 利用二分法找到最小的整数使得(其中是随机变量的cdf).
    # python
    >>> from scipy.stats import poisson
    >>> poisson(25).cdf(27)
    0.7001861449652768
    >>> poisson(25).cdf(28)
    0.763400741866402
    

5. 总结

  1. 报童问题是商品采购问题的一个例子. 对该问题的研究和求解可以指导我们在实际中优化采购计划, 从而提高商品的销售利润.
  2. 但在实际中制定商品的采购计划时, 我们的目标与约束一般会比报童问题复杂(例如考虑库存成本), 因此需要根据实际问题进行建模和求解, 不能盲目照搬已有的模型.
  3. 制定采购计划之前可以采用需求预测(销量预测), 但同时也要考虑销量的随机性(详情见《如何在商品采购中考虑销量的随机性?》).

参考文献


  1. Guillermo Gallego. "IEOR 4000 Production Management Lecture 7". Columbia University, 2005. ↩

你可能感兴趣的:(报童问题 (The Newsvendor Problem))