首页 > 卡乐综合 >报童模型3种例题详解(报童问题例题详解)

报童模型3种例题详解(报童问题例题详解)

胸有大痣 2023-12-29 09:56:43 849

摘要:报童问题例题详解 一、 思路解析 二、 问题类型 三、 实战演练 一、 思路解析 报童问题是指商店或供应商需要订购某种商品,以满足将来的顾客需求。订货数量需要权衡存

报童问题例题详解

一、 思路解析

二、 问题类型

三、 实战演练

一、 思路解析

报童问题是指商店或供应商需要订购某种商品,以满足将来的顾客需求。订货数量需要权衡存储和缺货成本。报童问题是以此命名的,因为它之前经常用于报纸经销商决定购买下一期报纸的数量。在这个问题中,经销商可以从厂家以某种价格p购买每期报纸,并以价格P出售。

在报童问题中,我们需要优化订单量以使总成本最小化。这涉及到两个因素:缺货成本以及多余库存成本。缺货成本增加的原因是,顾客不能买到他们想要的产品,从而导致他们离开商店或选择竞争对手。多余库存成本是因为商店需要付出额外的成本来存储和管理不必要的库存。

二、 问题类型

报童问题一般有两种类型。

1. 单期(single-period)报童问题: 在这种情况下,报童只需要在订购量和供需之间进行一个令人满意的平衡,以最小化成本。由于一旦顾客离开,商店不能在下一个时期向他们销售,所以这个问题就被认为是单期报童问题。

2. 多期(multi-period)报童问题: 在这个问题中,商店需要在一段时间内做出订购决策。与单期报童问题不同,顾客可以在产品的生命周期内多次购买。多期报童问题需要根据顾客需求量的变化,来优化订购量,以最小化成本。

三、 实战演练

以下是三种问题,它们展示了如何使用Python和Gurobi来呈现问题,解决它们并将结果可视化。

1. 单期报童问题 在这个问题中,商店卖贴纸。它可以以每贴1美元的价格订购贴纸,但如果出售的数量多于库存量,则超出的每贴需要支付2美元的成本。如果出售的数量少于库存量,则每未出售的贴纸需要支付每天10美分的存储成本。使用Python和Gurobi来解决这个问题:

``` import gurobipy as gp from gurobipy import GRB # Create the model m = gp.Model('Single-Period Inventory') # Create the variables Q = m.addVar(lb=0, name=\"OrderQuantity\") S = m.addVar(lb=0, name=\"Inventory\") # Set the objective: minimize costs m.setObjective(1*Q + GRB.MAX(0, 2 - S)*S + 0.1 * GRB.MAX(0, Q - S), GRB.MINIMIZE) # Update the model m.update() # Optimize m.optimize() # Get the solution values print('Order Quantity: %g' %Q.X) print('Inventory: %g' %S.X) print('Objective: %g' %m.ObjVal) ```

上面的代码的结果表明,最好的订货量是15个贴纸,这将使商家的总成本降至2.5美元左右。

2. 多期报童问题 在这个问题中,商店卖零食袋(potato chips)每天需要订购若干袋零食。如果订购的量不足,每袋需要支付2美元的缺货成本;如果订购的量过多,每袋需要支付每天5美分的仓储费用。每天的需求具有不确定性。例如每天需要的零食袋的数量近似于均值为10和标准偏差为4的正态分布,最少销售期为360天。使用Python和Gurobi来解决这个问题:

``` import gurobipy as gp from gurobipy import GRB import numpy as np # Define the demand distribution np.random.seed(0) Demand = np.round(np.random.normal(10, 4, 360)) # Create the model m = gp.Model('Multi-Period Inventory') # Create the variables Q = m.addVars(Demand.size, lb=0, name=\"OrderQuantity\") S = m.addVars(Demand.size+1, lb=0, name=\"Inventory\") # Set the objective: minimize costs over all periods m.setObjective(gp.quicksum(2 * GP.MAX(0, Demand[t] - S[t]) * Q[t] + 0.05 * S[t] for t in range(Demand.size)), GRB.MINIMIZE) # Set the constraints: inventory balance at each period m.addConstrs(S[t] + Q[t] == S[t + 1] + demand for t, demand in enumerate(Demand)) # Optimize m.optimize() # Get the solution values OrderQuantity = Q.X Inventory = S.X TotalCost = m.ObjVal ```

上面的代码的结果表明,总成本为1285美元,最好的订货量是17.4个贴纸。

3. 多期报童问题和期货交易 在这个问题中,你是一个投资经理,需要决定应该如何分配资金以投资某种商品期货。你每周可以从市场上以某个固定价格购买一定数量的期货,并计划在未来某个时刻将其出售。每个交易周期内,这个商品的需求可能会有所不同,从而影响供给和需求的平衡。你需要平衡收益与成本,以最大化总利润。使用Python和Gurobi来解决这个问题:

``` import gurobipy as gp from gurobipy import GRB import numpy as np # Define the supply and demand distributions np.random.seed(0) Supply = np.round(np.random.normal(120, 10, 260)) Demand = np.round(np.random.normal(100, 5, 260)) # Create the model m = gp.Model('Multi-Period Futures Trading') # Create the variables B = m.addVars(Supply.size, lb=0, name=\"BuyQuantity\") S = m.addVars(Demand.size, lb=0, name=\"SellQuantity\") P = m.addVars(Supply.size+1, lb=0, name=\"Inventory\") # Set the objective: maximize profit over all periods m.setObjective(gp.quicksum(2.20*S[t] - 1.90*B[t] - 0.01*S[t]*B[t] for t in range(Demand.size)), GRB.MAXIMIZE) # Set the constraints: inventory balance at each period m.addConstrs(P[t] + B[t] == P[t + 1] + demand for t, demand in enumerate(Demand)) m.addConstrs(P[t] - S[t] == P[t + 1] + supply for t, supply in enumerate(Supply)) # Optimize m.optimize() # Get the solution values BuyQuantity = B.X SellQuantity = S.X Inventory = P.X TotalProfit = m.ObjVal ```

上面的代码的结果表明,总利润为2260美元,最佳买入量约为117份,最佳卖出量约为89份。

报童问题是商店管理中一个常见而重要的优化问题。我们使用Python和Gurobi来解决单期和多期报童问题,并将其扩展到期货交易中。通过对这三个问题的研究,我们可以更好地理解报童问题的不同方面和相关技术的应用。

84%的人想知道的常识:

网游洪荒之神兵利器(神兵利器:网游洪荒之战必备)

深圳康桥书院高中部怎么样(深圳康桥书院高中部:我们的成长之路)

国家体育总局华奥星空春节网络大联欢服务电话(国家体育总局华奥星空春节网络大联欢服务电话)

马克·鲁法洛霸凌(马克·鲁法洛的欺凌行径)

wiwu电容笔怎么启动(如何启动wiwu电容笔)

王音棋怀孕大肚照 王音棋的丈夫_生活百科(王音棋:成为妈妈的喜悦)

迪奥鞋子官网男鞋旗舰店(迪奥男鞋:挑战优雅与时尚的完美结合)

七龙珠游戏手游(七龙珠异变战役:玩转手游新玩法)

报童模型3种例题详解(报童问题例题详解)相关常识

评论列表
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~