数学实验8

  • 格式:doc
  • 大小:36.50 KB
  • 文档页数:4

实验8 连续系统与离散系统的计算机模拟
1、定货策略问题
在物资的供应过程中, 由于到货与销售不可能做到同步、同量, 故总要保持一定的库存储备. 如果库存过多,就会造成积压浪费以及保管费用的上升;如果库存过少,会造成缺货。

如何选择库存和订货策略,就是一个需要研究的问题。

现要研究以下问题:某自行车商店的仓库管理人员采取一种简单的订货策略, 当库存降低到P辆自行车时就向厂家订货Q辆, 如果某一天的需求量超过了库存量, 商店就有销售损失和信誉损失, 但如果库存量过多, 将会导致资金积压和保管费增加. 若现在已有如表9.1中的五种库存策略, 试比较选择一种策略以使花费最少. 已知该问题的条件
1)从发出订货到收到货物需隔3天;
2)每辆自行车保管费为0.75元/天,每辆自行车的缺货损失为1.80元/天,每次的订货费为75元;
3)每天自行车的需求量服从0到99之间的均匀分布;
4)原始库存为115辆,并假设第一天没有发出订货.
表9.1
解:对一年的情况进行模拟,写出伪代码如下:
% 初始化数据,
P=175; % 策略参数
Q=150;
Stock=115; % 初始库存
demand(1:365)=0; % 初始化存储数据的变量
stock(1:365)=0;
dcost(1:365)=0;
order(1:365)=0;
for k=1: 365 % 模拟一年365天
生成随机需求; % 产生随机数是模拟的核心思想
计算销售前库存;
根据策略计算当天费用,销售后库存,订货数;
End
计算总费用;
其他数据处理;
--------------------------------------------------------------------------------------------------------
详细代码见后。

----------------------------------------模拟一个策略------------------------------------------------- % 初始数据
clear;
P=175;
Q=50;
Stock=115; % 初始库存数
demand=zeros(365,1); % 每天需求数
order=zeros(365,1); % 每天到货数
stock=zeros(365,1); % 每天实际库存数
dcost=zeros(365,1); % 每天费用
stock(1)=Stock; % 第一天销售前库存数
for k=1:365 % 模拟一年365天
demand(k)=floor(unifrnd(0,100)); % 生成随机需求量
if(k>1) % 从第二天起
stock(k)=stock(k-1)+order(k); % 销售前库存数=前一天库存数+到货数end
% 调用函数calcu 计算费用, 销售后库存数,订货数(第四天到货)
[dcost(k), stock(k), order(k+4)]=calcu(stock(k), demand(k), P, Q);
end
tcost=sum(dcost) % 总费用
plot(stock); % 库存图
hold on;
plot(demand,'r'); % 需求图
结果如下:
tcost =
1.2757e+006
050100150200250300350400
050
100150
200
250300
function [dcost, lstock, order]=calcu(stock, demand, p, q);
% calcu 函数:计算费用,库存及订货数
% 输入参数:stock 当天销售前库存, demand 当天需求, p, q 均为策略参数
% 返回值:dcost 当天费用, lstock 当天销售后库存, order 当天订货数
if(stock<demand) % 缺货 缺货损失+订货费
dcost=1.8*(demand-stock)+75*q;
lstock=0;
order=q; % 订货数q
elseif(stock-demand<p) % 库存低 保管费+订货费
dcost=0.75*(stock-demand)+75*q;
lstock=stock-demand;
order=q; % 订货数q
else % 库存充足 保管费
dcost=0.75*(stock-demand);
lstock=stock-demand;
order=0; % 订货数0
end
end
-------------------------五个策略一起模拟------------------------------
如果对五个策略做五次模拟,每次得到的随机需求数是不一样的,不好比较,因此五个策略一起模拟。

由于Matlab处理向量的优势,我们可以很容易地改变程序来实现一次模拟五个策略。

--------------------------------------------------------------------
MATLAB代码如下:
% 初始化数据,
P=[125 125 150 175 175];
Q=[150 250 250 250 300];
Stock=115*ones(1,5);
demand=zeros(365,5); % 每天需求数
order=zeros(365,5); % 每天到货数
stock=zeros(365,5); % 每天实际库存数
dcost=zeros(365,5); % 每天费用
stock(1,:)=Stock; % 第一天销售前库存数
for k=1:365 % 模拟一年365天
demand(k)=floor(unifrnd(0,100)); % 生成每天随机需求量, 与策略无关
for m=1:5 % m 种策略对同一需求分别模拟
if(k>1) % 从第二天起
stock(k,m)=stock(k-1,m)+order(k,m); % 销售前库存数=前一天库存数+到货数
end
% 计算费用, 销售后库存数,订货数(第四天到货)
[dcost(k,m), stock(k,m), order(k+4,m)]=calcu(stock(k,m), demand(k), P(m), Q(m)); end
end
tcost=sum(dcost)
得结果:
tcost =
1.0e+006 *
1.3168 1.3856 1.4595 1.4512 1.4937
则由计算结果知,第一种库存策略所花费用最少,费用为1316800元.。