存储论——经济订货批量的R实现

存储论又称库存理论,是运筹学中发展较早的分支。早在 1915 年,哈李斯(F.Harris)针对银行货币的储备问题进行了详细的研究,建立了一个确定性的存储费用模型,并求得了最佳批量公式。1934 年威尔逊(R.H.Wilson)重新得出了这个公式,后来人们称这个公式为经济订购批量公式(简称为 EOQ 公式)。这是属于存储论的早期工作。存储论真正作为一门理论发展起来还是在二十世纪 50 年代的事。1958 年威汀 (T.M.Whitin)发表了《存储管理的理论》一书,随后阿罗(K.J.Arrow) 等发表了《存储和生产的数学理论研究》,毛恩(P.A.Moran)在 1959 年写了《存储理论》。此后,存储论成了运筹学中的一个独立的分支,有关学者相继对随机或非平稳需求的存储模型进行了广泛深入的研究。

一、存储论概述

现代经济活动的生产和经营活动都离不开存储,为了使生产和经营活动有条不紊地进行,都需要一定数量的储备物资来支持。所谓存贮实质上是将供应与需求两个环节以存储中心联结起来,起到协调与缓和供需之间矛盾的作用。存储模型的基本形式如下图所示:

1.1 库存管理的基本要素

(1)需求率:单位时间内对某种物品的需求量,用 D 表示。
(2)订货批量:一次订货中,包含某种货物的数量,用Q 表示。
(3)订货间隔期:两次订货之间的时间间隔,用 T 表示。

1.2 库存管理的基本费用

(1)购置费:购置物品时花费的费用,即因购置物品而支出的货款,等于物品的单价乘以需求量。由于供应商一般会给一次订购某一数量的商品折扣价格,因此购置费可能会随着每次订购商品批量不同而改变。
(2)存储费C1C1。指为保存物品而支付的费用,如利息、折旧、损耗、财产税、保险等。现代管理把库存占用资金的机会成本(即这些资金若投资于他处所能获得的收益)也计入保管费中,而机会成本占保管费的比例在40%以上。保管费用可占到库存价值的20%~35%。保管费用往往用占库存价值的百分比来估算。
(3)订货费C3C3。指为补充而需要订购物品时支付的费用。其构成有两类,一是与订货次数有关的费用,如准备订单、洽商等。二是与订货次数无关的费用,如运费,办公管理等费用。
(4)缺货费C2C2。由于存储不能满足需求而造成的损失。为补充订货往往比正常订货要增加额外的开支,为补足短缺造成加班加点的额外支出,未按期交货引起客户索赔、撤消合同甚至丧失市场等经济损失。

1.3 库存管理策略

所谓一个管理策略,是指决定什么情况下对存贮进行补充,以及补充数量的多少。 下面是一些比较常见的库存管理策略。
(1)t 循环策略:不论实际的存贮状态如何,总是每隔一个固定的时间t ,补充 一个固定的存储量Q 。
(2)(t,S) 策略:每隔一个固定的时间 t 补充一次,补充数量以补足一个固定的最大存储量 S 为准。因此,每次补充的数量是不固定的,要视实际存储量而定。当存储(余额)为 I 时,补充数量为Q = S − I 。
(3)(s,S) 策略:当存储(余额)为 I ,若 I > s ,则不对存储进行补充;若 I ≤ s , 则对存储进行补充,补充数量Q = S − I 。补充后达到最大存储量 S。s 称为订货点(或 保险存贮量、安全存贮量、警戒点等)。
在很多情况下,实际存储量需要通过盘点才能 得知。若每隔一个固定的时间t 盘点一次,得知当时存储 I ,然后根据 I 是否超过订货点 s,决定是否订货、订货多少,这样的策略称为(t,s,S)策略。

二、确定性存储模型

存储论的数学模型一般分成两类:一类是确定性模型,它不包含任何随机因素,另一类是带有随机因素的随机存贮模型,这里主要总结确定性存储模型。

2.1 经典的EOQ订货模型
模型1模型2模型3模型4
模型假设需求是连续的、均匀的,需求速度是常数 R(单位时间的需求量);补充可以瞬间实现,补充时间 t 近似为 0;单位 C1 存储费不变;每次订货量 Q 不变,订购费 C3 不变,货物单价 K 不变;单位缺货成本 C2 为无穷大在模型1假设基础上,补货需要一定时间,不考虑拖延时间,只考虑生产(装配)时间,生产速度是连续均匀的周期的,生产速度为常数 P(P>R)与模型一相比,允许缺货!!!,补货时间极短与模型一相比,补货时间较长,容许缺货
模型状态图

单位时间的总平均费用C(t)=C3t+KR+12C1RtC(t)=C3t+KR+12C1RtC(t)=1t[12C1(P−R)Rt2P+C3]C(t)=1t[12C1(P−R)Rt2P+C3]C(t,S)=1t[C1S22R+C2(Rt−S)22R+C3]C(t,S)=1t[C1S22R+C2(Rt−S)22R+C3]C(t,t2)=12(P−R)RP[C1t−2C1t2+(C1+C2)t22t]+C3tC(t,t2)=12(P−R)RP[C1t−2C1t2+(C1+C2)t22t]+C3t
最佳定货周期t∗=2C3C1R−−−√t∗=2C3C1Rt∗=2C3C1R−−−√⋅PP−R−−−−√t∗=2C3C1R⋅PP−Rt∗=2C3C1R−−−√⋅C2C1+C2−−−−−√t∗=2C3C1R⋅C2C1+C2t∗=2C3C1R−−−√⋅C1+C2C2−−−−−√⋅PP−R−−−−√t∗=2C3C1R⋅C1+C2C2⋅PP−R
最大缺货量00

B∗=2C1C3RC2(C1+C2)−−−−−−−−−−−√B∗=2C1C3RC2(C1+C2)

B∗=2C1C3R(C1+C2)C2−−−−−−−√⋅P−RP−−−−√B∗=2C1C3R(C1+C2)C2⋅P−RP
最佳定货量Q∗=Rt∗=2C3RC1−−−−√Q∗=Rt∗=2C3RC1Q∗=2C3RC1−−−−√⋅P−RP−−−−√Q∗=2C3RC1⋅P−RPQ∗=2C3RC1−−−−√⋅C1+C2C2−−−−−√Q∗=2C3RC1⋅C1+C2C2Q∗=2C3RC1−−−−√⋅C1+C2C2−−−−−√⋅PP−R−−−−√Q∗=2C3RC1⋅C1+C2C2⋅PP−R
最大存储量Q∗=2C3RC1−−−−√Q∗=2C3RC1S∗=2C3RC1−−−−√⋅P−RP−−−−√S∗=2C3RC1⋅P−RPS∗=2C3RC1−−−−√⋅C2C1+C2−−−−−√S∗=2C3RC1⋅C2C1+C2S∗=2C3RC1−−−−√⋅C2C1+C2−−−−−√⋅P−RP−−−−√S∗=2C3RC1⋅C2C1+C2⋅P−RP
最小费用C∗=2C1C3R−−−−−−−√C∗=2C1C3RC∗=2C1C3R−−−−−−−√⋅PP−R−−−−√C∗=2C1C3R⋅PP−RC∗=2C1C3R−−−−−−−√⋅C2C1+C2−−−−−√C∗=2C1C3R⋅C2C1+C2C∗=2C1C3R−−−−−−−√⋅C2C1+C2−−−−−√⋅P−RP−−−−√C∗=2C1C3R⋅C2C1+C2⋅P−RP
2.2 经济订购批量的折扣模型

经济订购批量折扣模型是经济订购批量存贮模型的一种发展,即商品的价格 是不固定的,是随着订货量的多少而改变的。就一半情况而论,物品订购的越多,物品的单价也就越低,因此折扣模型就是讨论这种情况下物品的订购数量。 一年花费的总费用由三个方面组成:年平均存贮费、年平均订货费和商品的购买费用,即

C=12QC1++C3DQ+Dk(Q)C=12QC1++C3DQ+Dk(Q)

比如说订购量为 QQ, 其单价 K(Q)K(Q) :

K(Q)=⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪K1K2⋮Kj⋮Km0≤Q<Q1Q1≤Q<Q2Qj−1≤Q<QjQm−1≤QK(Q)={K10≤Q<Q1K2Q1≤Q<Q2⋮KjQj−1≤Q<Qj⋮KmQm−1≤Q

对应的平均单位货物所需费用为:

Cj(Q)=12C1QR+C3Q+Kj(j=1,2,⋯,m)Cj(Q)=12C1QR+C3Q+Kj(j=1,2,⋯,m)

对 C1(Q)C1(Q) 求得极值点为 Q0Q0, 若 Qj−1≤Q0<QjQj−1≤Q0<Qj, 求

min{Cj(Q0),Cj+1(Qj),⋯,Cm(Qm−1)}min{Cj(Q0),Cj+1(Qj),⋯,Cm(Qm−1)}

设从此式得到的最小值为 Cl(Ql−1)Cl(Ql−1), 则取 Q∗=Ql−1Q∗=Ql−1 。

三、存储策略的R计算

3.1 模型4经济订货批量

例1:对某产品的需求量为350件/年(设一年以300工作日计),已知每次订货费为50元,该产品的存贮费为13.75元/(件·年),缺货时的损失为25元/(件·年),订货提前期为5天。该种产品由于结构特殊,需用专门车辆运送,在向订货单位发货期间,每天发货量为10件。试求:(1)经济订货批量及最大缺货量;(2)年最小费用。

#输出四位数字
options(digits=4)
#初始化,时间单位为年
C1=13.75     #存储成本
C2=25        #缺货成本
C3=50        #订购费用
P=3000       #年生产量
R=350        #年需求量
#计算程序
T<-(2*C3/(C1*R))^0.5 *(P/(P-R))^0.5 *((C1+C2)/C2)^0.5 
Q=(2*C3*R/C1)^0.5 *  ((C1+C2)/C2)^0.5 *(P/(P-R))^0.5
S=(2*C3*R/C1)^0.5 * (C2/(C1+C2))^0.5 * ((P-R)/P)^0.5
C=(2*C1*C3*R)^0.5 * ((P-R)/P)^0.5* (C2/(C1+C2))^0.5
cat("最佳定货周期:",T*300,'\n')
cat("最佳定货量:",Q,'\n')
cat("最大存储量:",S,'\n')
cat("最小费用:",C,'\n')
最佳定货周期: 57.28 (天) 
最佳定货量: 66.83 
最大存储量: 38.09 
最小费用: 523.7 
3.2 折扣下的经济订货批量

例2:某公司计划订购一种商品用于销售。该商品的年销售量为 40000 件,每次订货费为 9000 元,商品的价格与订货量的大小有关,为

K(Q)=⎧⎩⎨⎪⎪⎪⎪35.22534.52534.17533.8250≤Q<1000010000≤Q<2000020000≤Q<3000030000≤QK(Q)={35.2250≤Q<1000034.52510000≤Q<2000034.17520000≤Q<3000033.82530000≤Q

每年的单位存储成本为6元,问如何安排订购量和订购时间。

#经济订货批量折扣模型
#初始化,时间单位为年
#D=96000
k=35.225       #价格折扣初始值
C1=6           #存储成本
C3=9000        #订购费用
R=40000        #年需求量

l=c(0,10000,20000,30000)   #订货数量分段值
Q=(2*C3*R/C1)^0.5          #EOQ订货批量

#定义数量折扣分段函数
fun1=function(x){
  if (x>0 & x<10000) a=35.225
  else if (x>=10000 & x<20000) a=34.525  
      else if (x>20000 & x<=30000) a=34.175  
        else if (x>=30000) a=33.825
          else  a=0
 return (a)
}

#定义成本函数
fun2=function(x) {0.5*C1*x/R +C3/x +fun1(x)}

#最佳订货批量Q1
b=fun2(Q)
for (i in 1:length(l)) {if (fun2(l[i])<=b) b=fun2(l[i])}
l[1]=Q
for (i in 1:length(l)) {if (fun2(l[i])==b) Q1=l[i]}
#订货时间T
T=Q1/R
Q1=20000(个);T=0.5(年)  #计算结果

例3:某厂每年需某种元件 30000 个,每次订购费 1000 元,保管费每件每年100元,不允许缺货。元件单价 K 随采购数量不同而有变化。

K(Q)={2001980≤Q<15001500≤QK(Q)={2000≤Q<15001981500≤Q

求最佳订货批量。

经济订货批量折扣模型
#初始化,时间单位为年

k=200       #价格折扣初始值
C1=100       #存储成本
C3=1000        #订购费用
R=30000        #单位时间需求

l=c(0,1500)   #数量分段值
Q=(2*C3*R/C1)^0.5          #EOQ订货批量


#数量折扣分段函数
fun1=function(x){
  if (x>0 & x<1500) a=200
  else if (x>=1500) a=198
  else  a=0
  return (a)
}

#成本函数
fun2=function(x) {0.5*C1*x/R +C3/x +fun1(x)}

#最佳订货批量Q1
b=fun2(Q)
for (i in 1:length(l)) {if (fun2(l[i])<=b) b=fun2(l[i])}
l[1]=Q
for (i in 1:length(l)) {if (fun2(l[i])==b) Q1=l[i]}
Q1
Q1=1500(个)

四、综合思考

例4:甲公司是一家标准件分销商,主要业务是采购并向固定客户供应某种标准件产品。有关资料如下:(1)该标准件上一年订货次数为60次,全年订货成本为80万元,其中固定成本总额为26万元,其余均为变动成本。单位变动成本和固定成本总额不变;(2)该标准件仓储总费用中,每年固定租金成本为120万元,每增加一件标准价就增加1元仓储费。每件标准件的占用资金为50元,资金利息率为6%;(3)该标准件年需要量为180万件。一年按照360天计算;(4)该标准件从发出订单到货物送达需要5天。
要求:(1)计算每次订货变动成本;(2)计算单位变动储存成本;(3)根据经济订货模型,计算该标准件的经济订货批量和最佳订货周期(按天表示);(4)计算再订货点。

(1) 每次订货变动成本=(80-26)10000/60=9000(元)
【解析】订货总成本80万,其中固定成本26万,可知变动成本总额是80-26=54万元,全年订货60次,总订货变动成本54万元,则每次订货变动成本=54万元/60次=0.9万元=9000元
(2)单位变动储存成本=1+50
6%=4(元/件)
【解析】储存成本包括固定储存成本+变动储存成本。每增加一件标准价就增加1元仓储费,这不就是变动成本的定义吗?可知1元为单位变动成本。以往的客观题也练习过存货的机会成本也是变动储存成本,单位机会成本=占用资金资金利息率=506%。综上,单位变动储存成本由上述两部分构成。
(3)经济订货批量= =90000(件)
每年最佳订货次数=1800000/90000=20(次)
最佳订货周期=360/20=18(天)
【解析】经济订货批量套公式就是了,没什么好说的。
最佳订货次数=全年需要量/经济订货批量
最佳订货周期=360/最佳订货次数
(4)每日平均需用量=1800000/360=5000(件)
再订货点=55000=25000(件)
【解析】再订货点=每日需要量
送货期

总结

存储系统可以用“供-存-销”三个活动来描述,通过订货以及货后的存储与销售来满足顾客的需求,或者说由于生产或销售的需求,从存储系统中取出一定量的库存货物,这就是存储系统的输出。存储的货物由于不断的输出而减少,必须及时的补充,补充就是存储系统的输入,补充可以通过外部订货,采购等活动来进行,也可以通过内部的生产活动来进行,在这个系统中,决策者可以通过控制订货时间的间隔和订货量的多少来调节系统的运行,使得在某种准则下系统运行达到最优。因此,存储论中研究的主要问题可以概括为,何时订货(补充存贮),每次订多少货(补充多少库存)这两个问题,文中给出了数学模型化解决方案。 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
希尔纸箱ERP软件是根据纸箱行业特点设计开发的,专用于各类纸箱生产的企业。整合纸箱报价、客户订单、纸板采购、生产单、仓库管理、辅料管理和月结对帐于一体,解决了纸箱企业日常工作中繁琐的纸箱单价计算和纸板算料问题,并以客户订单为导向,自动完成纸板订购、生产下单等作业。使用希尔纸箱软件,不仅减轻纸箱企业管理人员的工作,降低成本,提高生产效率,也使得纸箱企业管理工作规范化、科学化、信息化,加快其市场反应速度,提升企业形象,增强企业核心竞争力。 希尔纸箱ERP软件优势 基于SAP平台开发,多窗口并发,灵活简洁,可满足不同规模的纸箱企业的管理需求 1、本系统功能全面、操作简单易学,3日内可完全掌握全部操作; 2、强大的灵活多样的报表功能:从报价单、生产单、采购单、送货单、物料标签、对账单、报表随时修改; 3、支持多抬头打印打印送货单,多种送货单格式; 4、支持多种报价模式,按纸质报价(平米报价、千平方英寸报价)及按固定款式报价; 5、支持订单导入功能-销售订单可按EXCEL格式导入系统; 6、支持单据及明细复制功能包括:报价单复制、订单复制、单款复制等; 7、可按不同客户设置不同的盒式公式来自动计算单价、重量、面积、体积及纸板用料; 8、支持特殊箱型算料设置,比如L型箱、T型箱等特殊箱型; 9、可按客户料号(货号)调出常用箱型包括:箱型、纸质、尺寸、单位、单价、用料、生产工序及印刷唛头等信息; 10、可按不同客户及连接方式(打钉或粘箱)设置不同的钉口大小,可满足精细化生产需求; 11、可按客户(供应商)设置不同的单价、金额,单重、重量小数位及是否四舍五入; 12、支持按送货单收款、按月结但收款及预收款等多种收款方式; 13、支持多仓库管理(纸板仓、成品仓、辅料仓、废品仓)及送货扣库存管理; 14、系统权限设置,审核权限、作废权限,查看权限、修改权限、删除权限、根据不同级别的人员可单独设置操作权限; 15、系统单据或报表均可导出为EXCEL 或 PDF 文件; 16、销售统计、订单统计、送货统计、逾期未送货单统计、送货未对账统计、对账未收款统计、利润分析统计、采购(纸板及辅料)统计、采购未收货统计、入库(成品、纸板、辅料)统计、库存统计、每月应收应付统计、到期应收应付统计及整体经营报表; 17、系统支持多用户操作及外网访问功能; 希尔纸箱ERP软件截图
Kendall相关系数是一种用于衡量两个变量之间的关联程度的非参数方法。它通常用于衡量两个变量的排序一致性。在这里,我将提供一个用C++编写的基于类的Kendall相关系数计算程序的实现。 首先,我们需要定义一个类来表示我们要计算的相关系数。这个类应该包含两个变量(可以是数组或向量),以及一个成员函数来计算它们之间的Kendall相关系数。下面是一个可能的实现: ```cpp #include <vector> using std::vector; class KendallCorrelation { public: KendallCorrelation(const vector<int>& x, const vector<int>& y) : x_(x), y_(y) {} double compute() const { int n = x_.size(); int concordant_pairs = 0, discordant_pairs = 0; for (int i = 0; i < n; ++i) { for (int j = i+1; j < n; ++j) { if ((x_[i] < x_[j] && y_[i] < y_[j]) || (x_[i] > x_[j] && y_[i] > y_[j])) { ++concordant_pairs; } else if ((x_[i] < x_[j] && y_[i] > y_[j]) || (x_[i] > x_[j] && y_[i] < y_[j])) { ++discordant_pairs; } } } return (concordant_pairs - discordant_pairs) / static_cast<double>((n*(n-1))/2); } private: vector<int> x_, y_; }; ``` 在这个实现中,我们使用了两个向量来存储我们要计算的变量。构造函数接受这两个向量作为参数,并将它们存储在类的成员变量中。`compute`函数实现了计算Kendall相关系数的算法。它首先计算两个变量中所有可能的配对组合,然后计算这些配对的一致和不一致数量。最后,它返回一致数量和不一致数量之间的差异除以可行配对的总数。 下面是一个示例程序,演示了如何使用这个类来计算两个变量之间的Kendall相关系数: ```cpp #include <iostream> using std::cout; using std::endl; int main() { vector<int> x = {1, 2, 3, 4, 5}; vector<int> y = {5, 4, 3, 2, 1}; KendallCorrelation kendall(x, y); cout << "Kendall correlation: " << kendall.compute() << endl; return 0; } ``` 在这个示例中,我们使用了两个向量x和y,它们分别包含1到5的整数,但是它们是反向排序的。我们创建了一个KendallCorrelation对象,并将x和y向量传递给构造函数。然后,我们调用compute函数来计算它们之间的Kendall相关系数,并将结果打印到控制台上。 这就是一个基于类的Kendall相关系数计算程序的实现和使用示例。如果你有其他问题或需要更多信息,请随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2301_77550592

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值