存储论系列博文:
目录
3 有约束的确定型存贮模型
3.1 带有约束的经济订购批量存贮模型
现在考虑多物品、带有约束的情况。设有 m 种物品,采用下列记号:
类似于前面的推导,可以得到带有约束的多物品的 EOQ 模型。
3.1.1 具有资金约束的 EOQ 模型
3.1.2 具有库容约束的 EOQ 模型
3.1.3 兼有资金与库容约束的最佳批量模型
结合上述两种模型,得到兼有资金与库容约束的最佳批量模型
编写 LINGO 程序如下:
model:
sets:
kinds/1..5/:C_P,D,K,W,Q,N;
endsets
min=@sum(kinds:0.5*C_P*Q+C_D*D/Q);
@sum(kinds:K*Q)<J;
@sum(kinds:W*Q)<W_T;
@for(kinds:N=D/Q;@gin(n));
data:
C_D=1000;
D=600 900 2400 12000 18000;
K=300 1000 500 500 100;
C_P=60 200 100 100 20;
W=1.0 1.5 0.5 2.0 1.0;
J=400000;
W_T=1500;
enddata
end
求得总费用为 142272.8 元,订货资金还余 7271.694 元,库存余 4.035621 ,其余 计算结果整理在表 2 中。
上述计算采用整数规划,如果不计算年订货次数,而只有年订货周期,则不需要 整数约束。由于整数规划的计算较慢,因此,在有可能的情况下,应尽量避免求解整数 规划问题。
3.2 带有约束允许缺货模型
编写 LINGO 程序如下:
model:
sets:
kinds/1..5/:C_P,D,K,W,C_S,Q,S,N;
endsets
min=@sum(kinds:0.5*C_P*(Q-S)^2/Q+C_D*D/Q+0.5*C_S*S^2/Q);
@sum(kinds:K*Q)<J;
@sum(kinds:W*(Q-S))<W_T;
@for(kinds:N=D/Q;@gin(n));
data:
C_D=1000;
D=600 900 2400 12000 18000;
K=300 1000 500 500 100;
C_P=60 200 100 100 20;
W=1.0 1.5 0.5 2.0 1.0;
J=400000;
W_T=1500;
enddata
@for(kinds:C_S=2*C_P);
end
求得总费用为 124660.8 元,订货资金还余 88.46 元,库存余 343.317 ,其余计算 结果整理在表 3 中。
3.3 带有约束的经济生产批量存贮模型
与经济定购模型类似,对于经济生产批量存贮模型,也可以考虑带有不同情况的 约束条件和各种不同物品的综合情况。下面用一个例子来说明问题。
例 8 某公司生产并销售 A,B,C 三种商品,根据市场预测,三种商品每天需求量 分别是 400,300,300(件),三种商品每天的生产量分别是 1300,1100,900(件), 每安排一次生产,其固定费用(与生产量无关)分别为 10000,12000,13000(元), 生产费用每件分别为 1.0,1.1,1.4(元)。商品的生产速率、需求率和最大生产量满足 如下约束:
编写 LINGO 程序如下:
model:
sets:
kinds/1..3/:C_P,P,C_D,D,Q,T,T_P; !T_P表示生产时间;
endsets
min=@sum(kinds:0.5*(1-D/P)*Q*C_P+C_D*D/Q);
@sum(kinds:D/P+1.5*D/Q)<1;
@for(kinds:T=Q/D;T_P=Q/P);
data:
C_D=1000,1200,1300;
D=400,300,300;
C_P=1.0,1.1,1.4;
P=1300,1100,900;
enddata
end
求得 A,B,C 三种商品的生产、存贮周期分别为 51.05936,54.86175,50.79914 天, 其中生产天数分别为 15.71057,14.96229,16.93305 天。总的最优生产,存贮费用为 20832.10 元。
4 单周期随机库存模型
在许多情形中需求量是随机的。随机需求模型可以分为周期观测与连续观测两类。 周期观测模型又可分为单周期、多周期及无穷周期等模型。 本节仅讨论单周期随机库存模型。 单周期库存模型又称为单订货模型。模型假定周期末库存对下一个周期没有任何 价值。这个问题也称为报童问题,因为报童手中的报纸若卖不完,明天就没有用了。该 模型研究的是仅有一次机会的存贮与供需关系的产品。
4.1 模型的基本假设
本模型的基本假设如下:
(1)在整个需求期内只订购一次货物,订货量为Q ,订购费和初始库存均为 0, 每单位产品的购价(成本)为 K ;
(2)需求量 D 为一个连续的随机变量,且 D 的概率密度为 f (x) ,当货物出售时, 每单位产品的价格为U ;
(3)需求期结束时,没有卖出的货物不存贮而是折价卖出,单位价格为V 。
4.2 模型的推导
单周期随机库存模型的问题是求订购量Q 为多少时,使得总利润最大。 当需求量 D = x 时,物品的出售量取决于物品的订购量Q 和需求量 x ,即
对于销售价U 、成本价 K 和折扣价V ,应满足U > K >V 。令 g =U − K 是 物品出售后的利润,同时表示物品不足时,由于缺货造成的损失。令 h = K −V 是物品 折扣出售的损失,因此方程(56)也可写成
4.3 模型的求解
例 9(报童问题) 在街中有一报亭,平均每天出售报纸 500 份,出售报纸的数量, 与来往的人流有关,假设服从 Poisson 分布,每卖出一份报纸能盈利 0.15 元。如果卖不 出去,只能作为废纸处理,每份报纸亏损 0.40 元,问:报亭应如何安排报纸的订购量, 使得报亭的利润最大?
解 由题意知,均值 μ = 500 ;每份报纸的利润 g = 0.15 元;作为废纸处理时, 每份报纸亏损 h = 0.4 元。利用式(57)计算出Q 来,再利用式(59)计算出期望总利 润。
编写 LINGO 程序如下:
model:
data:
mu=500;g=0.15;h=0.40;
enddata
@pps(mu,Q)=g/(g+h);
E_G=g*mu-h*(Q-mu)-(g+h)*@ppl(mu,Q);
end
求得报亭每天订购报纸 486 份,每天盈利 70.93 元。
下面我们使用 MATLAB 求例 9 的解。实际上式(57)中的Q 是 Poisson 分布的 分位点。对于式(59)中的积分计算,首先定义被积函数,然后使用 MATLAB 中的积 分命令 QUADL 进行积分,注意在积分时必须把积分区间化成有限区间。MATLAB 中被积函数定义如下(其中文件名为 fun1.m)
function f=fun1(x);
global Q mu
f=(x-Q).*poisspdf(mu,x);
最后编写调用的程序如下:
global mu Q
mu=500;g=0.15;h=0.40;
Q=poissinv(g/(g+h),mu)
E_G=g*mu-h*(Q-mu)-(g+h)*(mu-Q-quadl(@fun1,0,Q))
求得报亭每天订购报纸 486 份,每天赢利 71.09 元。
例 10 设在某食品店内,每天对面包的需求服从 μ = 300,σ = 50的正态分布。 已知每个面包的售价为 1.50 元,成本 0.90 元,对当天未售出的其处理价为每个 0.60 元, 问该商店每天应生产多少面包,使预期的利润为最大?
解 根据题意 μ = 300,σ = 50,U =1.50,K = 0.9 ,V = 0.60。利用式(57) 计算出Q 来,再利用式(59)计算出期望总利润。但对于正态分布分布,LINGO 只提 供了标准正态分布函数@psn( Z ),即
编写 LINGO 程序如下
data:
mu = 300; sigma = 50; U = 1.50; K = 0.90; V = 0.60;
enddata
@psn(Z)=(U-K)/(U-V);
Z=(Q-mu)/sigma;
@free(Z);
E_G = U*mu-K*Q+V*(Q-mu)-(U-V)*sigma*@psl(Z);
求得商店每天生产 322 个面包,可以使总利润达到最大,预期的最大利润为 163.638 元。 同样地,我们使用 MATLAB 求例 10 的解。实际上,式(57)中的Q 是正态分布 的
分位点。式(59)中的被积函数的 MATLAB 定义如下(其中文件 名为 fun2.m):
function f=fun2(x);
global mu sigma Q
f=(x-Q).*normpdf(x,mu,sigma);
最后编写调用的程序如下:
global mu sigma Q
mu = 300; sigma = 50; U = 1.50; K = 0.90; V = 0.60;
Q=norminv((U-K)/(U-V),mu,sigma)
E_G=U*mu-K*Q+V*(Q-mu)-(U-V)*(mu-Q-quadl(@fun2,0,Q))
求得的结果和 LINGO 的计算结果完全一样。
例 11 (航空机票超订票问题) 某航空公司执行两地的飞行任务,已知飞机的 有效载客量为 150 人。按民用航空管理有关规定:旅客因有事或误机,机票可免费改签 一次,此外也可在飞机起飞前退票。航空公司为了避免由此发生的损失,采用超量订票 的方法,即每班售出票数大于飞机载客数。但由此会发生持票登机旅客多于座位数的情 况,在这种情况下,航空公司让超员旅客改乘其它航班,并给旅客机票价的 20%作为 补偿。现假设两地的机票价为 1500 元,每位旅客有 0.04 的概率发生有事、误机或退票 的情况,问航空公司多售出多少张票?使该公司的预期损失达到最小。
解 先对该问题进行分析。 设飞机的有效载客数为 N ,超订票数为 S (即售出票数为 N + S ),k 为每个座位 的赢利值,h 为改乘其它航班旅客的补偿值。设 x 是购票未登机的人数,是一个随机变 量,其概率密度为 f (x) 。当 x ≤ S 时,有 S − x 个人购票后,不能登机,航空公司要为这部分旅客进行补偿。当 x > S 时,有 x − S 个座位没有人坐,航空公司损失的是座位 应得的利润,因此,航空公司的损失函数为
下面给出具体的求解过程。
根据题意, N = 150 , p = 0.04,k =1500 (假设机票价就是航空公司的赢利), h =1500×0.2 = 300 。写出相应的 LINGO 程序如下:
data:
N = 150;p = 0.04;k = 1500;h = 300;
enddata
@pbn(p, N+S, S) = k/(k+h);
求得超订的票数 S = 8.222487 ,因而,超订的票数在 8~9 张之间,即每班售出的 票数在 158~159 张之间。
function f=fun3(s);
N = 150;p = 0.04;k = 1500;h = 300;
f=binocdf(s,s+N,p)-k/(k+h);
MATLAB 中求函数 g(S) 的零点时溢出(使用命令 FZERO),我们只能编写 MATLAB 的搜索算法如下:
for s=1:100
g(s)=fun3(s);
end
g
例 12(续例 11) 所有参数不变,问航空公司多售出多少张票,使该公司的预期 利润达到最大,并计算出相应的利润。
解 下面的计算希望达到以下目的:第一,得到超订票的整数解;第二,计算出 预期的利润值。
设飞机的有效载客数为 N ,超订票数为 S(即售出票数为 N + S ),k 为每个座位 的赢利值,h 为改乘其它航班旅客的补偿值,p 为每位旅客购票未登机的概率。设 x 是 购票未登机的人数,是一个随机变量,其概率密度为 f (x) 。当 x ≤ S 时,飞机满座, 有 S − x 个人购票后,不能登机,航空公司要为这部分旅客进行补偿。当 x > S 时,飞 机没有满座,有 N + S − x 名旅客乘机,因此,航空公司的利润函数为
编写的 MATLAB 程序如下:
clear,clc
N = 150;p = 0.04;k = 1500;h = 300;
for S=1:15
E_I(S)=k*(N+S-(N+S)*p)-(h+k)*quadl(@(x)binocdf(x,N+S,p),0,S);
end
E_I
上面的算法,我们实际上把二项分布看成是连续型的分布。下面从离散分布的角 度建立赢利期望值的递推公式。
因此,我们只要计算出超订票数 S = 0,1,2,....的期望值,并比较它们的大小,就可 以计算出最优的超订票数和最大赢利的期望值。编写 LINGO 程序如下:
sets:
seats/1..150/;
extra/1..15/: E_T;
endsets
data:
k = 1500; h = 300; p = 0.04;
enddata
N = @size(seats);
E_T0 = k*N*(1-p);
E_T(1) = E_T0+(1-p)*(k-(k+h)*@pbn(p,N,0));
@for(extra(i)|i #gt# 1:E_T(i) = E_T(i-1)+(1-p)*(k-(k+h)*@pbn(p,N+i-1, i-1)));
从计算结果可以看出,超订票数为9张时,航空公司获利利润最大,预期的期望值 达到223832.6。 下面我们写出递推运算的 MATLAB 程序如下:
clear,clc
k = 1500; h = 300; p = 0.04; n=150;
E_T0=k*n*(1-p)
E_T(1)=E_T0+(1-p)*(k-(k+h)*binocdf(0,n,p));
for i=2:15
E_T(i)=E_T(i-1)+(1-p)*(k-(k+h)*binocdf(i-1,n+i-1,p));
end
E_T
计算结果和 LINGO 的计算结果完全一致。
习题
1.企业生产某种产品,正常生产条件下可生产 10 件/天。根据供货合同,需按 7 件/天供货。存贮费每件 0.13 元/天,缺货费每件 0.5 元/天,每次生产准备费用(装配费) 为 80 元,求最优存贮策略。
2.某大型机械需要外购 3 种零件,其有关数据见表 4。若存贮费占单件价格的 25 %,不允许缺货。又限定外购零件的总费用不超过 240000 元,仓库总面积为 250 , 试确定每种外购零件的最优订货量、订货周期和最小费用。
3.(航空公司超订票问题) 已知飞机的有效载客量为 150 人,机票价为 1500 元。 根据公司的长期统计,每个航班旅客的退票和改签发生的人数如表 5 所示。在登机旅客 多于座位数的情况下,航空公司规定:超员旅客改乘本公司下一班机,机票免费(即退 回原机票款);若改乘其它航空公司的航班,按机票的 105%退款。据统计前一类旅客 占超员旅客的 80%,后一类旅客占 20%。问航空公司多售出多少张票,使该公司的预 期损失达到最小。
4.某工厂生产某种产品必须经过两道工序,第一道工序在甲车间进行,第二道工 序在乙车间进行,甲车间生产的产品作为乙车间生产的原料,工厂计划年生产 1200 件 产品,因而乙车间的生产速度为每月 100 件,而甲车间的生产速度为每月 500 件。由于 受到乙车间生产能力的限制,甲车间要进行等周期分批的有间断的生产,同时还必须保 证乙车间不停工待料。甲车间的产品运到乙车间时要包装,平均每批的包装费为 5 元。 若运到乙车间后暂时来不及加工,则要花费存贮费,每件存贮费为 0.4 元。试研究甲车 间的最优生产周期,生产时间和生产批量。
5. 其它相关习题(无答案)见 :随机模型-豆丁网
存储论系列博文: