报童问题 (The Newsvendor Problem)

引言

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

1. 报童问题

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

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

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

2. 数学模型

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

参数

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

决策变量

  • 采购量: x

目标

  • 最大化期望收益\pi(x) := p \cdot \mathbb{E}[\min(x, D)] + s\cdot \mathbb{E}[\max(x-D, 0)] - cx

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

3. 求解

x^+ := \max(x, 0), x^-:=\min(x, 0). 因此x=x^+ + x^-, x^- = -(-x)^+. 利用\min(x, D) = D - (D-x)^+, 我们可以把\pi(x)表示成如下形式:

\pi(x) = (p-c)\mu - \alpha(x),

其中

\alpha(x) = (c-s)\mathbb{E}[(x-D)^+] + (p-c)\mathbb{E}[(D-x)^+].

因此 \max \pi(x) \Leftrightarrow \min \alpha(x). 记h = c-s, b=p-c. 则h, b分别代表采购过量(overage)和少量(underage)的单位成本.

f(z) = hz^+ - bz^-. \alpha(x)可以被写成

\alpha(x)=\mathbb{E}[f(x-D)].

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

\alpha'(x) = h\cdot \mathbb{E}[\delta(x-D)] - b\cdot \mathbb{E}[\delta(D-x)]

其中\delta(z)=1 如果z>0, 否则\delta(z)为0.

注意到\mathbb{E}[\delta(x-D)] = Pr(x-D>0)\mathbb{E}[\delta(D-x)] = Pr(D-x>0). 我们有

\alpha'(x)= h \cdot Pr(D < x) - b \cdot Pr(D>x).

\alpha'(x)=0, 我们得到

F(x) := Pr(D\leq x) = \frac{b}{b+h}.

临界分位数(Critical Fractile)
\gamma = \frac{b}{b+h}.

由于F是随机变量D的cdf(cumulative distribution function) (单调非递减), 因而存在逆函数. 设最优解为x^*, 因此
x^* = F^{-1}(\gamma).

4. 例子

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

4.1 正态分布

D\sim N(\mu,\sigma^2). 令Z\sim N(0, 1), \Phi(z) = Pr(Z\leq z)z_{\gamma} = \Phi^{-1}(\gamma).
由于
Pr\left(\frac{D-\mu}{\sigma}\leq z_{\gamma}\right) = \Phi(z_{\gamma}) = \gamma.
因此
x^* = \mu + z_{\gamma}\sigma.

D服从正态分布, \mu=100, \sigma=20. 设c=5, h=1, b=3. 我们的计算步骤如下:

  1. \gamma = \frac{b}{h+b} = 0.75
  2. z_{\gamma} = \Phi^{-1}(0.75) = 0.6745
    # python
    >>> from scipy.stats import norm
    >>> norm.ppf(0.75)
    0.6744897501960817
    
  3. x^*=\mu + z_{\gamma} \cdot \sigma = 100 + 0.6745 * 20 = 113.49

4.2 Poisson分布

Poisson分布的pmf (probability mass function)为

Pr(D=k) = e^{-\lambda}\frac{\lambda^k}{k!}.

由于Possion分布是离散分布(对任意的\gamma, F^{-1}(\gamma)不一定可计算), 我们令
x^* = \arg\min_x \{x\in \mathbb{N}\mid Pr(D\leq x) \geq \gamma\}.

D服从Poisson分布, \lambda=25. 设c=5, h=1, b=3. 我们的计算步骤如下:

  1. \gamma = \frac{b}{h+b} = 0.75
  2. 利用二分法找到最小的整数x^*使得F(x^*)\geq 0.75(其中F是随机变量D的cdf).
    # python
    >>> from scipy.stats import poisson
    >>> poisson(25).cdf(27)
    0.7001861449652768
    >>> poisson(25).cdf(28)
    0.763400741866402
    
  3. x^*=28

5. 总结

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

参考文献


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,547评论 4 374
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,787评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,175评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,752评论 0 223
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,169评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,056评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,195评论 2 321
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,980评论 0 214
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,724评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,872评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,344评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,667评论 3 264
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,379评论 3 245
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,202评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,992评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,189评论 2 286
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,987评论 2 279

推荐阅读更多精彩内容