首页 > 其他分享 >存储论——报童问题(单周期)订货模型精解

存储论——报童问题(单周期)订货模型精解

时间:2024-09-21 13:23:50浏览次数:10  
标签:订货 报童 订购 收益 问题 报纸 精解 lambda

报童问题(Newsvendor Problem),最早由哈维·莫德里格利亚尼(Harvey M. Wagner)和托马斯·M·怀特(Thomas M. Whitin)于1958年提出,是运筹学中经典的库存管理问题。其名称源于报童的情境描述,即一个报童每天需要决定订购多少份报纸以最大化利润。报童每天面对报纸需求的不确定性,若订购量太少,可能错失潜在利润;订购量太多,又可能因未售出的报纸带来损失。因此,报童需根据历史销售数据和需求分布,权衡订购量与收益间的关系。报童问题的基本模型非常简单,却能捕捉复杂的库存管理思想。其主要目标是确定最优的订购量,使得期望收益最大化。这个问题是库存控制和供应链管理理论的基础,涉及的不确定性和随机性为许多后续的管理决策问题提供了范式。

一、报童问题概述

问题描述:一报童从报刊发行处订报后零售,每卖出一分可获利a元,若订报后卖不出去,则退回发行处,每分将要赔钱b元.问:报童如何根据以往的卖报情况(每天卖出k份的概率pk)来推算出每天收益达到最大的订报量Q。

1.1 报童问题的发展

报童问题的基本模型非常简单,却能捕捉复杂的库存管理思想。其主要目标是确定最优的订购量,使得期望收益最大化。这个问题是库存控制和供应链管理理论的基础,涉及的不确定性和随机性为许多后续的管理决策问题提供了范式。随着研究的深入,报童问题的模型得到了不断的发展和扩展。从最初的单周期、单商品问题,逐步演化出多周期、多商品以及涉及供应链管理的复杂版本。例如:

多周期报童问题:扩展了报童问题的时间维度,报童可以多次订购商品,并根据之前的销售情况调整后续的订购量。
多商品报童问题:涉及多种商品的订购,每种商品有不同的成本结构和需求分布,报童需要在多商品之间进行综合考虑。
供应链环境中的报童问题:报童问题被应用于供应链管理中,研究如何协调供应商、制造商和零售商的库存管理决策。

1.2 报童问题的应用

报童问题作为经典库存管理问题,广泛应用于实际生活中的多种场景,尤其在零售、制造、物流和供应链管理领域具有重要应用。

零售业:在零售行业中,报童问题被用来帮助零售商决定每个销售周期应订购多少商品。特别是在面临季节性商品、限时促销活动等情况下,商品的需求具有较大的不确定性,零售商需要根据历史销售数据估计需求,并据此确定库存量。
报纸和杂志销售:正如其名字所示,报童问题可以直接应用于报纸和杂志销售中。由于报纸是一种快速贬值的商品,未售出的报纸几乎没有残值,因此报童面临的订购决策至关重要。
餐饮业:餐饮行业中,一些易腐产品(如每日烘焙的面包、蛋糕、寿司等)的生产和销售也可以使用报童模型。餐馆需要决定每天的备货量,过多的备货会导致浪费,而备货不足会导致顾客流失。
医疗资源管理:在医疗行业中,医院或诊所可以利用报童模型来确定库存水平,如疫苗、血液或其他医疗物资的库存。这些物资有一定的保质期,过度备货可能导致浪费,库存不足则可能影响患者的治疗。
电商与物流:电商平台经常需要根据历史销售数据和促销活动等因素来预测商品的需求,并决定仓库中的备货量。物流企业也可利用报童问题优化快递包裹、库存和运输资源的调配。

1.3 报童问题带来的价值

报童问题的核心在于处理需求不确定性带来的风险管理。通过合理的模型和分析,企业能够在不确定的需求环境中做出更加科学的库存决策。它具有以下几方面的重要意义:

帮助决策者平衡成本与收益:报童问题本质上是一个风险管理问题,要求决策者在不确定需求下,在短缺成本(订购不足带来的损失)和过量成本(订购过多带来的损失)之间做出权衡。这种方法为现实中的库存管理提供了强有力的理论支持。
降低库存管理成本:在库存管理中,过多或过少的库存都会带来额外的成本。通过合理使用报童问题的分析结果,企业可以在需求不确定的情况下,制定更为合理的库存策略,从而有效降低库存管理成本。
提高供应链效率:在供应链管理中,报童问题帮助企业提高整个供应链的协调性,减少供应链中各环节的浪费和延误,提高整体运营效率。例如,供应链上的零售商可以利用报童问题的决策方法来确定最优订货量,进而与上游供应商协同工作,实现供应链中的有效库存管理。
促进管理科学的发展:报童问题是运筹学和管理科学的一个经典问题,它为后续的很多研究问题奠定了理论基础。通过扩展和优化,报童问题衍生出了众多复杂的供应链管理模型和算法。今天的企业可以借助这些更为复杂的模型来应对日益复杂的市场环境和供应链挑战。

二、报童问题最优订货量

报童问题的核心在于如何确定最优订报量 \(Q\) 使得预期收益最大化。问题可以描述如下:

  • 设 \(a\) 是每卖出一份报纸的利润,$ b $ 是未卖出的报纸带来的损失;
  • 设 $ D $ 为每天的需求量(服从某一概率分布),报童订购 $ Q $ 份报纸,则:
    • 如果 $ D \leq Q $,那么报童卖出 $ D $ 份报纸,收益为 $ D \times a $,没有卖出去的部分 $ Q - D $ 带来损失 $ (Q - D) \times b $;
    • 如果 $ D > Q $,报童卖出 $ Q $ 份报纸,收益为 $ Q \times a $,无损失。

报童问题的核心目标是选择订购量 $ Q $ 以使得期望收益 $ E[R(Q)] $ 最大化。

期望收益法

\[E[R(Q)] = \sum_{k=0}^{Q} p_k \cdot \left( k \cdot a - (Q - k) \cdot b \right) + \sum_{k=Q+1}^{\infty} p_k \cdot (Q \cdot a) \]

其中,$ p_k $ 是每天卖出 $ k $ 份报纸的概率。

边际分析法
为了使收益最大化,可以用边际分析法。根据条件:

  • $F(Q) = P(D \leq Q) $,即需求不超过 $ Q $ 的概率累积分布函数;
  • 最优订购量 $ Q^* $ 满足: $ F(Q^*) = \frac{a}{a + b} $。
    上面公式称为 报童公式

基本符号与定义

  • Q:报童的订购量。
  • D:随机需求量,假设 D 是一个随机变量,有概率分布 F(D) 和概率密度函数 f(D)
  • a:每售出一份报纸的利润。
  • b:每未售出一份报纸的损失(相当于报纸的成本)。
  • F(Q) = P(D ≤ Q):需求量 D 不超过订购量 Q 的概率累积分布函数。

收益的计算
根据报童的订购量 Q 和需求 D 的不同情况,报童的总收益可以分为以下两种情况:

  • 当需求 D ≤ Q 时:报童能够满足全部需求,售出 D 份报纸,利润为 a × D,剩余的 Q - D 份报纸没有卖出,会产生损失 b × (Q - D)。因此,当 D ≤ Q 时,总收益为:

    \[R(Q, D) = a × D - b × (Q - D) = (a + b) × D - b × Q \]

  • 当需求 D > Q 时:报童订购的报纸不足以满足需求,全部 Q 份报纸都卖出,总利润为 a × Q。因此,当 D > Q 时,总收益为:

    \[R(Q, D) = a × Q \]

期望收益
根据上述两种情况,报童的期望收益可以表示为:

\[E[R(Q)] = \int_{0}^{Q} R(Q, D) \cdot f(D) \, dD + \int_{Q}^{\infty} R(Q, D) \cdot f(D) \, dD \]

代入收益函数 R(Q, D) 的具体形式,可以分两部分求期望:

  • 当 D ≤ Q 时,收益为:

    \[E[R(Q)] = \int_{0}^{Q} \left[(a + b) × D - b × Q\right] \cdot f(D) \, dD \]

  • 当 D > Q 时,收益为:

    \[E[R(Q)] = \int_{Q}^{\infty} a × Q \cdot f(D) \, dD \]

报童公式的推导
对于连续型分布,要使报童的期望收益最大化,可以对 Q 求导,得到最优订购量 Q^* 的条件。期望收益对 Q 的导数为:

\[\frac{dE[R(Q)]}{dQ} = (a + b) \cdot F(Q) - b \]

要使期望收益最大化,设置导数等于0,即:

\[(a + b) \cdot F(Q) - b = 0 \]

解得:$$F(Q^) = \frac{b}{a + b}$$
此时,**F(Q^
) = P(D ≤ Q^*)** 表示需求小于或等于 Q^ 的概率,这就给出了最优订购量 Q^ 所满足的条件。

对于离散型分布可用边际分析法,报童每多订购一份报纸,就会面临两个边际效益的权衡:

  • 边际收益:如果多订购的报纸可以被需求满足,报童将获得每份报纸 a 元的边际利润。
  • 边际损失:如果多订购的报纸没有被需求满足,报童将承担每份报纸 b 元的边际损失。
    因此,在最优订购量 Q^ 处,边际收益与边际损失的预期是相等的,即:

\[P(D ≤ Q^*) \cdot a = P(D > Q^*) \cdot b \]

将其整理为累积分布函数形式,即:

\[F(Q^*) = \frac{a}{a + b} \]

三、报童问题的仿真分析

3.1 连续型需求分布函数仿真

假设参数与分布

  • 每天需求$D $服从离散型分布,如泊松分布:

    \[P(D = k) = \frac{\lambda^k e^{-\lambda}}{k!}, \quad k = 0, 1, 2, \ldots \]

    其中\(\lambda\)是需求的期望值。
  • 假设 \(a = 5\) 元,\(b = 2\)元,需求的期望\(\lambda = 10\)。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import poisson

# 参数设置
a = 5  # 每卖出一份报纸的利润
b = 2  # 每未卖出一份报纸的损失
lambda_ = 10  # 泊松分布的需求均值
max_Q = 30  # 最大订购量

# 泊松分布概率质量函数
def demand_probability(k, lambda_):
    return poisson.pmf(k, lambda_)

# 计算期望收益
def expected_profit(Q, a, b, lambda_):
    expected_profit = 0
    for k in range(Q + 1):
        p_k = demand_probability(k, lambda_)
        profit_if_k_sold = k * a - (Q - k) * b
        expected_profit += p_k * profit_if_k_sold
    for k in range(Q + 1, max_Q + 1):
        p_k = demand_probability(k, lambda_)
        profit_if_all_sold = Q * a
        expected_profit += p_k * profit_if_all_sold
    return expected_profit

# 模拟不同订购量的期望收益
Qs = np.arange(0, max_Q + 1)
profits = [expected_profit(Q, a, b, lambda_) for Q in Qs]

# 找到期望收益最大的订购量
optimal_Q = Qs[np.argmax(profits)]
print(f"最优订购量 Q*: {optimal_Q}")

# 绘制期望收益曲线
plt.plot(Qs, profits, marker='o')
plt.title('期望收益随订购量的变化')
plt.xlabel('订购量 Q')
plt.ylabel('期望收益')
plt.grid(True)
plt.show()
仿真图1 仿真图2
import simpy
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import poisson

# 参数设置
a = 5  # 每卖出一份报纸的利润
b = 2  # 每未卖出一份报纸的损失
lambda_ = 10  # 泊松分布的需求均值
num_days = 1000  # 仿真的天数
max_Q = 30  # 最大订购量

# 需求分布(泊松分布)
def demand(lambda_):
    return poisson.rvs(lambda_)

# 报童过程
def newspaper_selling(env, Q, a, b, lambda_, total_profits):
    while True:
        D = demand(lambda_)  # 每天的需求
        if D <= Q:
            profit = D * a - (Q - D) * b  # 卖出的量少于或等于订购量
        else:
            profit = Q * a  # 卖出的量多于订购量
        total_profits.append(profit)
        yield env.timeout(1)  # 每天的时间间隔为1天

# 仿真不同订购量下的收益
def simulate(Q, a, b, lambda_, num_days):
    env = simpy.Environment()
    total_profits = []
    env.process(newspaper_selling(env, Q, a, b, lambda_, total_profits))
    env.run(until=num_days)
    return np.mean(total_profits)  # 返回平均收益

# 模拟不同订购量的期望收益
Qs = np.arange(0, max_Q + 1)
profits = [simulate(Q, a, b, lambda_, num_days) for Q in Qs]

# 找到期望收益最大的订购量
optimal_Q = Qs[np.argmax(profits)]
print(f"最优订购量 Q*: {optimal_Q}")

# 绘制期望收益曲线
plt.plot(Qs, profits, marker='o')
plt.title('期望收益随订购量的变化 (SimPy仿真)')
plt.xlabel('订购量 Q')
plt.ylabel('平均收益')
plt.grid(True)
plt.show()

3.2 离散型需求分布函数仿真


总结

报童问题从其简单的模型出发,逐渐发展成为库存管理、供应链管理领域中的基础工具。它不仅帮助企业解决了实际生产生活中的订购和库存管理问题,还在管理科学领域产生了广泛而深远的影响。通过解决需求不确定性带来的挑战,报童问题的应用提高了供应链效率,降低了成本,并为企业的运营决策提供了强有力的理论支持。在现代商业社会中,它仍然具有广泛的应用前景。

参考文献

  1. 随机规划 | 报童问题(The Newsvendor Problem,附MATLAB代码)
  2. 【数学建模】基于matlab模拟报童问题仿真

标签:订货,报童,订购,收益,问题,报纸,精解,lambda
From: https://www.cnblogs.com/haohai9309/p/18423543

相关文章

  • 排队论——随机服务系统仿真精解
    排队论作为研究随机服务系统的重要工具,专门研究系统中客户到达、排队、服务和离开的过程。排队论的核心目的是通过数学建模和分析,研究系统的性能指标,如平均等待时间、队列长度、系统的吞吐量等。虽然排队论提供了强大的数学工具来分析随机服务系统,但在许多复杂的实际问题中,精确的......
  • 决策论——马尔科夫决策模型精解
    马尔可夫过程(Markovprocess)由俄国数学家A.A.马尔可夫于1907年提出,是一类重要的随机过程,广泛应用于自然科学、社会科学、工程及机器学习等领域。其核心特性是“无后效性”,即未来的状态仅依赖于当前的状态,而与过去的状态无关。这种“记忆无关性”使得马尔可夫过程在研究复杂系统时......
  • 存储论——经济订货批量模型精解
    运筹学中的存储问题主要研究如何通过优化库存管理,确保在满足需求的同时,尽可能降低与库存相关的成本。这一问题在生产制造、物流运输、仓储等各个领域具有重要应用。核心目标是通过合理规划进货、存货和出货策略,实现成本最小化和资源的高效利用。在实际应用中,由于需求的不确定性、......
  • 数模原理精解【11】
    文章目录logistic模型多元回归分析多元回归分析概览1.多元回归的概念与重要性2.多元回归在实际应用中的例子3.多元回归在预测和解释数据中的优势和局限性4.多元回归的优缺点及改进建议多元线性回归分析详解一、原理二、性质三、计算四、例子与例题五、应用场景六、......
  • 排队论——数学模型和绩效指标精解
    排队论最早由丹麦工程师AgnerKrarupErlang于1910年提出,旨在解决自动电话系统的问题,成为话务理论的奠基石。Erlang通过研究电话呼叫的随机到达和服务时间,推导出著名的埃尔朗电话损失率公式,用于计算电话系统的呼叫阻塞率,揭示了排队现象的本质。Erlang之后,排队论得到进一步发展。瑞......
  • 动态规划——数学模型精解
    动态规划是运筹学的一个分支,主要用于求解多阶段决策过程的优化问题。1950年代初,R.E.Bellman提出了最优性原理,将复杂的多阶段问题分解为一系列单阶段问题逐步求解,开创了动态规划这一方法。1957年,他出版了《DynamicProgramming》,成为该领域的经典著作。动态规划自问世以来,在经济管......
  • 决策论——决策模型三要素精解
    运筹学中的决策论主要针对不确定环境下的决策问题,提供数学化和系统化的工具,帮助决策者在复杂情境中选择最优方案。相比一般的决策分析,运筹学更注重定量分析,借助模型、损益表等工具,将不确定性和风险因素纳入考虑。决策模式可以分为确定性、风险性和不确定性三种,每种模式都有相应的......
  • 网络计划技术——关键路线法精解
    网络计划技术最早由美国杜邦公司于1957年开发的“关键路径法(CPM)”和美国海军在1958年发明的“计划评审技术(PERT)”推动。网络计划技术(NetworkPlanningTechniques)是一种用于项目管理和调度的科学方法,其核心思想是通过构建网络图来描述项目中各个任务之间的逻辑关系,进而分析和优化......
  • 图与网络——TSP问题精解
    旅行商问题(TravellingSalesmanProblem,TSP)是组合优化领域中的经典问题之一。TSP的概念最早可以追溯到18世纪,瑞士数学家欧拉在解决柯尼斯堡七桥问题时首次提出了关于图中遍历的问题。不过,作为一个优化问题,TSP在19世纪才开始形成系统的研究。1920年代,TSP被德国数学家卡尔·孟格尔......
  • 图与网路——最大流问题精解
    容量网络(CapacityNetwork)是一种特殊的有向图结构,其中每条边都有一个容量(Capacity),表示该边上可以通过的最大流量。在这种网络中,流量(Flow)是指从源点(Source)通过边到达汇点(Sink)的实际传输量。容量网络中的边具有方向性,且每条边的流量不能超过其容量。最大流问题(MaximumFlowProblem)......