引言
本文介绍了一个经典的商品采购模型(报童问题)及其解法. 该模型通过考虑需求的不确定性来最大化销售利润. 注: 本文的主要内容参考Gallego[1].
1. 报童问题
这是一个关于卖报商人采购报纸的问题. 每天早上, 卖报商以批发价0.3元(每份)向报社采购当天的报纸, 然后以零售价1元(每份)进行售卖. 如果报纸在当天没有卖完, 他会把报纸以0.05元(每份)的价格卖给废品回收站. 那么卖报商应该如何确定报纸的采购数量?
我们先简单分析一下这个问题的特点:
- 采购一个商品.
- 在一个采购周期内仅采购一次.
- 采购之时不知道准确的需求.
- 商品会过期.
2. 数学模型
下面我们用数学语言把这个问题再描述一下.
参数
- 单位采购成本(cost per unit):
- 零售价(sale price):
- 残值(salvage value), 即商品过期之后的售价:
- 需求(demand): 随机变量
服从分布
, 均值和标准差分别记为
决策变量
- 采购量:
目标
- 最大化期望收益
不失一般性, 我们假设, 否则问题的最优解是显而易见的.
3. 求解
记. 因此
,
. 利用
, 我们可以把
表示成如下形式:
其中
因此 . 记
,
. 则
分别代表采购过量(overage)和少量(underage)的单位成本.
令.
可以被写成
由于是凸函数, 它的线性变换
也是凸函数, 当
是连续分布时, 最优解的一阶导数为0. 我们可以通过交换积分号导, 即
其中 如果
, 否则
为0.
注意到且
. 我们有
令, 我们得到
临界分位数(Critical Fractile)
由于是随机变量
的cdf(cumulative distribution function) (单调非递减), 因而存在逆函数. 设最优解为
, 因此
4. 例子
本节考虑两个具体的例子. 一个是服从正态分布(连续分布), 可以按照前文的公式计算最优解; 另一个例子是
服从Poisson分布, 我们介绍如何把计算方法适配到离散分布的情形.
4.1 正态分布
. 令
,
且
.
由于
因此
例 服从正态分布,
,
. 设
,
,
. 我们的计算步骤如下:
-
# python >>> from scipy.stats import norm >>> norm.ppf(0.75) 0.6744897501960817
4.2 Poisson分布
Poisson分布的pmf (probability mass function)为
由于Possion分布是离散分布(对任意的,
不一定可计算), 我们令
例 服从Poisson分布,
. 设
,
,
. 我们的计算步骤如下:
- 利用二分法找到最小的整数
使得
(其中
是随机变量
的cdf).
# python >>> from scipy.stats import poisson >>> poisson(25).cdf(27) 0.7001861449652768 >>> poisson(25).cdf(28) 0.763400741866402
5. 总结
- 报童问题是商品采购问题的一个例子. 对该问题的研究和求解可以指导我们在实际中优化采购计划, 从而提高商品的销售利润.
- 但在实际中制定商品的采购计划时, 我们的目标与约束一般会比报童问题复杂(例如考虑库存成本), 因此需要根据实际问题进行建模和求解, 不能盲目照搬已有的模型.
- 制定采购计划之前可以采用需求预测(销量预测), 但同时也要考虑销量的随机性(详情见《如何在商品采购中考虑销量的随机性?》).
参考文献
-
Guillermo Gallego. "IEOR 4000 Production Management Lecture 7". Columbia University, 2005. ↩
网友评论