报童模型( The Newsvendor Problem)及其拓展(加入惩罚成本)

1报童模型的定义和阐述

每天早上,报童以批发价 c c c元/份采购当天的报纸,然后以零售价 p p p元/份售卖。如果当天报纸没有卖完,则以 s s s元/份的价格卖给废品回收站。不失一般性,假设 p > c > s p > c > s p>c>s。用随机变量 D D D表示当天的需求量,并已知其概率分布函数和密度分布函数分别为 F ( d ) 和 f ( d ) F(d)和f(d) F(d)f(d)。求使得期望收益最大的采购量 x x x

拓展:未满足需要将支付惩罚成本 r r r

2求解过程

推导可得:
m a x ( x , D ) + m i n ( x , D ) = x + D ; m i n ( x , 0 ) = − m a x ( − x , 0 ) max(x,D)+min(x,D)=x+D; min(x,0)=-max(-x,0) max(x,D)+min(x,D)=x+D;min(x,0=max(x,0)

2.1利润函数

将上述公式带入利润函数求解:
π ( x , D ) π(x,D) π(x,D)
= p ⋅ m i n ( x , D ) + s ⋅ m a x ( x − D , 0 ) − c ⋅ x =p⋅min(x,D)+s⋅max(x−D,0)−c⋅x =pmin(x,D)+smax(xD,0)cx
= p ⋅ m i n ( x , D ) + s ⋅ [ m a x ( x , D ) − D ] − c ⋅ x =p⋅min(x,D)+s⋅[max(x,D)−D]−c⋅x =pmin(x,D)+s[max(x,D)D]cx
= p ⋅ m i n ( x , D ) + s ⋅ [ x + D − m i n ( x , D ) − D ] − c ⋅ x =p⋅min(x,D)+s⋅[x+D−min(x,D)−D]−c⋅x =pmin(x,D)+s[x+Dmin(x,D)D]cx
= ( p − s ) ⋅ m i n ( x , D ) − ( c − s ) ⋅ x =(p−s)⋅min(x,D)−(c−s)⋅x =(ps)min(x,D)(cs)x

拓展的利润函数求解:
π ( x , D ) π(x,D) π(x,D)
= p ⋅ m i n ( x , D ) + s ⋅ m a x ( x − D , 0 ) − r ⋅ m a x ( D − x , 0 ) − c ⋅ x =p⋅min(x,D)+s⋅max(x−D,0)-r⋅max(D-x,0)-c⋅x =pmin(x,D)+smax(xD,0)rmax(Dx,0)cx
= p ⋅ m i n ( x , D ) + s ⋅ [ m a x ( x , D ) − D ] − r ⋅ [ − m i n ( x − D , 0 ) ] − c ⋅ x =p⋅min(x,D)+s⋅[max(x,D)−D]−r⋅[-min(x-D,0)]-c⋅x =pmin(x,D)+s[max(x,D)D]r[min(xD,0)]cx
= p ⋅ m i n ( x , D ) + s ⋅ [ x + D − m i n ( x , D ) − D ] − r ⋅ [ − m i n ( x , D ) + D ] − c ⋅ x =p⋅min(x,D)+s⋅[x+D−min(x,D)−D]-r⋅[-min(x,D)+D]−c⋅x =pmin(x,D)+s[x+Dmin(x,D)D]r[min(x,D)+D]cx
= p ⋅ m i n ( x , D ) + s ⋅ [ x + D − m i n ( x , D ) − D ] − r ⋅ [ m a x ( x , D ) − x − D + D ] − c ⋅ x =p⋅min(x,D)+s⋅[x+D−min(x,D)−D]-r⋅[max(x,D)-x-D+D]−c⋅x =pmin(x,D)+s[x+Dmin(x,D)D]r[max(x,D)xD+D]cx
= ( p − s ) ⋅ m i n ( x , D ) − r ⋅ m a x ( x , D ) − ( c − s − r ) ⋅ x =(p−s)⋅min(x,D)-r⋅max(x,D)−(c−s-r)⋅x =(ps)min(x,D)rmax(x,D)(csr)x

2.2期望利润函数

原模型的期望利润函数:
E [ π ( x , D ) ] E[π(x,D)] E[π(x,D)]
= ( p − s ) ⋅ E [ m i n ( x , D ) ] − ( c − s ) ⋅ x =(p−s)⋅E[min(x,D)]−(c−s)⋅x =(ps)E[min(x,D)](cs)x
= ( p − s ) ∫ 0 ∞ m i n ( x , d ) f ( d ) d d   − ( c − s ) ⋅ x . = (p-s)\int_0^\infty min(x,d)f(d)dd\,−(c−s)⋅x. =(ps)0min(x,d)f(d)dd(cs)x.

拓展的期望利润函数:
E [ π ( x , D ) ] E[π(x,D)] E[π(x,D)]
= ( p − s ) ⋅ m i n ( x , D ) − r ⋅ m a x ( x , D ) − ( c − s − r ) ⋅ x =(p−s)⋅min(x,D)-r⋅max(x,D)−(c−s-r)⋅x =(ps)min(x,D)rmax(x,D)(csr)x
= ( p − s ) ∫ 0 ∞ m i n ( x , d ) f ( d ) d d   − r ∫ 0 ∞ m a x ( x , d ) f ( d ) d d   − ( c − s − r ) ⋅ x . = (p-s)\int_0^\infty min(x,d)f(d)dd\,-r\int_0^\infty max(x,d)f(d)dd\,−(c−s-r)⋅x. =(ps)0min(x,d)f(d)ddr0max(x,d)f(d)dd(csr)x.

2.3求解期望收益最大时的采购量

为使原函数期望收益最大,对期望收益求采购量的偏导,并令其值为 0 0 0,即

∂ E [ π ( x , D ) ] ∂ x = 0 \frac{∂ E [ π ( x , D ) ] }{∂ x} = 0 xE[π(x,D)]=0

∂ E [ π ( x , D ) ] ∂ x \frac{∂ E [ π ( x , D ) ] }{∂ x} xE[π(x,D)]

= ( p − s ) ⋅ ∂ ∂ x ( ∫ 0 ∞ m i n ⁡ ( x , d ) f ( d ) d d   ) − ( c − s ) = ( p − s ) ⋅ \frac{∂} {∂x} ( \int_0^\infty min ⁡ ( x , d ) f ( d ) d d\, ) − ( c − s ) =(ps)x(0min(x,d)f(d)dd)(cs)
= ( p − s ) ⋅ ∂ ∂ x ( ∫ 0 x d ⋅ f ( d ) d d + ∫ x ∞ x ⋅ f ( d ) d d ) − ( c − s ) = ( p − s ) ⋅ \frac{∂} {∂x} (\int_0^x d ⋅ f ( d ) d d +\int_x^\infty x ⋅ f ( d ) d d ) − ( c − s ) =(ps)x(0xdf(d)dd+xxf(d)dd)(cs)
= ( p − s ) ⋅ [ ∫ 0 x ∂ ( d ⋅ f ( d ) ) ∂ x d d + ∫ x ∞ ∂ ( x ⋅ f ( d ) ) ∂ x d d ] − ( c − s ) = ( p − s ) ⋅ [ \int_0^x \frac{∂ ( d ⋅ f ( d ) ) }{∂ x} d d +\int_x^\infty \frac{∂ ( x ⋅ f ( d ) ) }{∂ x} d d ] − ( c − s ) =(ps)[0xx(df(d))dd+xx(xf(d))dd](cs)
= ( p − s ) ⋅ ∫ x ∞ f ( d ) d d − ( c − s ) = ( p − s ) ⋅ [ 1 − F ( x ) ] − ( c − s ) = ( p − s ) ⋅ \int_x^\infty f ( d ) d d − ( c − s ) = ( p − s ) ⋅ [ 1 − F ( x ) ] − ( c − s ) =(ps)xf(d)dd(cs)=(ps)[1F(x)](cs)

显然,上式 = 0 =0 =0时, F ( x ) = p − c p − s = γ F(x)=\frac{p−c}{p−s}=γ F(x)=pspc=γ,则

x = F − 1 ( γ ) x=F^{-1}(γ) x=F1(γ)

同理,我们使拓展利润函数期望收益最大:

∂ E [ π ( x , D ) ] ∂ x = 0 \frac{∂ E [ π ( x , D ) ] }{∂ x}=0 xE[π(x,D)]=0

= ( p − s ) ⋅ ∂ ∂ x ( ∫ 0 ∞ m i n ⁡ ( x , d ) f ( d ) d d   ) − r ⋅ ∂ ∂ x ( ∫ 0 ∞ m a x ( x , d ) f ( d ) d d   ) − ( c − s − r ) = ( p − s ) ⋅ \frac{∂} {∂x} ( \int_0^\infty min ⁡ ( x , d ) f ( d ) d d\, ) -r⋅\frac{∂} {∂x} ( \int_0^\infty max(x,d)f(d)dd\, ) − ( c − s -r) =(ps)x(0min(x,d)f(d)dd)rx(0max(x,d)f(d)dd)(csr)
= ( p − s ) ⋅ ∂ ∂ x ( ∫ 0 x d ⋅ f ( d ) d d + ∫ x ∞ x ⋅ f ( d ) d d   ) − r ⋅ ∂ ∂ x ( ∫ 0 x x ⋅ f ( d ) d d + ∫ x ∞ d ⋅ f ( d ) d d ) − ( c − s − r ) = ( p − s ) ⋅ \frac{∂} {∂x} (\int_0^x d ⋅ f ( d ) d d +\int_x^\infty x ⋅ f ( d ) d d \, )-r ⋅ \frac{∂} {∂x} (\int_0^x x⋅ f ( d ) d d +\int_x^\infty d ⋅ f ( d ) d d ) − ( c − s-r ) =(ps)x(0xdf(d)dd+xxf(d)dd)rx(0xxf(d)dd+xdf(d)dd)(csr)
= ( p − s ) ⋅ [ ∫ 0 x ∂ ( d ⋅ f ( d ) ) ∂ x d d + ∫ x ∞ ∂ ( x ⋅ f ( d ) ) ∂ x d d ] − r ⋅ [ ∫ 0 x ∂ ( x ⋅ f ( d ) ) ∂ x d d + ∫ x ∞ ∂ ( d ⋅ f ( d ) ) ∂ x d d ] − ( c − s − r ) = ( p − s ) ⋅ [ \int_0^x \frac{∂ ( d ⋅ f ( d ) ) }{∂ x} d d +\int_x^\infty \frac{∂ ( x ⋅ f ( d ) ) }{∂ x} d d ] -r ⋅ [ \int_0^x \frac{∂ ( x ⋅ f ( d ) ) }{∂ x} d d +\int_x^\infty \frac{∂ ( d ⋅ f ( d ) ) }{∂ x} d d ] − ( c − s-r ) =(ps)[0xx(df(d))dd+xx(xf(d))dd]r[0xx(xf(d))dd+xx(df(d))dd](csr)
= ( p − s ) ⋅ ∫ x ∞ f ( d ) d d − r ⋅ ∫ 0 x f ( d ) d d − ( c − s ) = ( p − s ) ⋅ [ 1 − F ( x ) ] − r ⋅ F ( x ) − ( c − s − r ) = ( p − s ) ⋅ \int_x^\infty f ( d ) d d-r ⋅ \int_0^x f ( d ) d d− ( c − s ) = ( p − s ) ⋅ [ 1 − F ( x ) ] - r ⋅ F(x) − ( c − s-r ) =(ps)xf(d)ddr0xf(d)dd(cs)=(ps)[1F(x)]rF(x)(csr)

显然,上式 = 0 =0 =0时, F ( x ) = p − c + r p − s + r = γ F(x)=\frac{p−c+r}{p−s+r}=γ F(x)=ps+rpc+r=γ,则 x = F − 1 ( γ ) x=F^{-1}(γ) x=F1(γ)


参考博客:
报童问题(3)-深入分析
报童问题的简单解法
报童问题 (The Newsvendor Problem)

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
报童模型是一种用于库存管理的经典模型,它用于确定在需求不确定的情况下,报纸或杂志等商品的订货量。在 MATLAB 中,你可以实现报童模型来优化库存管理决策。 以下是一个简单的报童模型的 MATLAB 代码示例: ```matlab % 报童模型 demand = [10 15 12 18 20 14 16]; % 每天的需求量 cost_per_unit = 2; % 单位商品成本 selling_price = 5; % 单位售价 min_cost = Inf; % 初始化最小成本为无穷大 best_order = 0; % 初始化最佳订货量为0 for order = 1:max(demand) inventory = order; total_cost = 0; for day = 1:length(demand) sales = min(demand(day), inventory); % 当天销售量取决于需求和库存量 lost_sales = demand(day) - sales; % 当天丢失的销售量 inventory = inventory - sales; % 更新库存量 total_cost = total_cost + cost_per_unit * (order - inventory) + selling_price * sales; % 计算总成本 end if total_cost < min_cost min_cost = total_cost; best_order = order; end end disp(['最佳订货量为:' num2str(best_order)]); disp(['最小成本为:' num2str(min_cost)]); ``` 以上代码中,`demand` 表示每天的需求量,`cost_per_unit` 表示单位商品成本,`selling_price` 表示单位售价。代码通过遍历不同的订货量,计算总成本,并记录最小成本和对应的最佳订货量。 你可以根据自己的需求修改代码中的输入参数,运行代码即可得到最佳订货量和最小成本。希望对你有所帮助!如有需要,请继续提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值