超市收费系统问题.docx
- 文档编号:10527047
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:13
- 大小:29.03KB
超市收费系统问题.docx
《超市收费系统问题.docx》由会员分享,可在线阅读,更多相关《超市收费系统问题.docx(13页珍藏版)》请在冰豆网上搜索。
超市收费系统问题
超市收费系统问题
一、实验目的与意义
1.练习模拟模型的建立过程;
2.进一步熟悉模拟算法的设计、编程问题。
二、实验要求
1.熟练应用Matlab的随机变量的模拟函数;
2.加强离散系统模拟算法的分析和设计训练;
3.提高Matlab的编程应用技能。
三、题目内容描述:
一小超级市场有4个付款柜,每个柜台为一位顾客计算货款数的时间与顾客所购商品件数成正比(大约每件费时1s),20%的顾客用支票或信用卡支付,这需要1.5min,付款则仅需0.5min。
有人倡议设一个快速服务台专为购买8个或8个以下商品的顾客服务,指定另外两个为“现金支付柜”。
请你建立一个模拟模型,用于比较现有系统和倡议的系统的运转。
假设顾客到达平均间隔时间是0.5min,顾客购买商品件数按如下频率表分布。
件数
9~19
20~29
30~39
40~49
相对频率
0.12
0.10
0.18
0.28
0.20
0.12
四、问题分析
这是一个机理较复杂的随机问题,是遵循“先到先服务”的随机排队问题。
解决方法:
采用模拟模型方法。
因此需考虑以下问题:
(1)应该怎样安排摩托车?
(2)下一辆到达的车是什么类型?
(3)怎样描述一辆车的车身长度?
(4)如何安排到达车辆加入甲板上两列车队中的哪一列中去?
本实验主要模拟装载车辆的情况,暂时不考虑渡船的安全。
五、建立模型
设到达的卡车、轿车长度分别为随机变量
。
结合实际,这里不妨假设卡车、轿车的车身长度
均服从正态分布。
由于卡车车身长为8~10m,所以卡车车长
的均值为
m,由概率知识中的“
”原则,其标准差为
,所以得到
。
同理可得
。
六、模拟方法介绍
1、步骤
(1)分析问题,收集资料。
需要搞清楚问题要达到的目标,根据问题的性
质收集有关随机性因素的资料。
这里用得较多的知识为概率统计方面。
在这个阶段,还应当估计一下待建立的模拟系统的规模和条件,说明哪些是可以控制的变量,哪些是不可控制的变量。
(2)建立模拟模型,编制模拟程序。
按照一般的建模方法,对问题进行适当的假设。
也就是说,模拟模型未必要将被模拟系统的每个细节全部考虑。
模拟
模型的优劣将通过与实际系统有关资料的比较来评价。
如果一个“粗糙”的模拟模型已经比较符合实际系统的情况,也就没有必要建立费时、复杂的模型。
当然,如果开始建立的模型比较简单,与实际系统相差较大,那么可以在建立了简单模型后,逐步加入一些原先没有考虑的因素,直到模型达到预定的要求为止。
编写模拟程序之前,要现画出程序框图或写出算法步骤。
然后选择合适的计算机语言,编写模拟程序。
(3)运行模拟程序,计算结果。
为了减小模拟结果的随机性偏差,一般要
多次运行模拟程序,还有就是增加模拟模型的时段次数。
(4)分析模拟结果,并检验。
模拟结果一般说来反映的是统计特性,结果
的合理性、有效性,都需要结合实际的系统来分析,检验。
以便提出合理的对策、方案。
以上步骤是一个反复的过程,在时间和步骤上是彼此交错的。
比如模型的修
改和改进,都需要重新编写和改动模拟程序。
模拟结果的不合理,则要求检查模型,并修改模拟程序。
2.控制模拟时间的方法:
(1)固定时间增量法,是选用一段合适的时间作单位,然后每隔一个单位时间就计算一次有关参数的值,到达预定的模拟时间后,模拟程序结束。
在编写这种程序时,一般可以建立一个“模拟时钟”变量。
程序的主体框架一般是个大的循环,循环变量,则为模拟时间;在每个循环体内,就是对每个时段作处理。
例如,有些排队论模型,可能就是以每隔一段时间(一天或者一个月)进行处理。
(2)可变时间增量法,模拟也有一个“模拟时钟”变量,但它是在一个事件发生时,“模拟时钟”才向前推进。
需要注意的是,该模拟方法每一步经过的时间是可变的,而且会自动寻找下一个最早使系统状态发生变化的事件。
整个模拟直到“模拟时钟”到达指定的时间长度为止。
可以参考有关离散系统仿真的内容。
七、模拟程序设计
由以上的分析,程序设计时的应划分的主要模块(函数)如下:
1.确定下一辆到达车辆的类型;
2.根据车的类型确定到达车辆的长度;
3.根据一定的停放规则,确定放在哪一列。
八、模拟程序
functionsim_dukou %渡口模型的模拟
n=input('输入模拟次数:
');
ifisempty(n)|(n<500)
n=500;
end
N=zeros(1,3);%依次为摩托车数量、卡车数量、轿车数量
fori=1:
n
isfull=0;
L=[0,0]; %第一列长度,第二列长度
while~isfull
t=rand;%模拟下一辆到达车的类型
ift<=0.55,
id=1;%到达卡车
elseift<0.95,
id=2;%到达轿车
else
id=3;%到达摩托车
end
N(id)=N(id)+1;
newlen=getlength(id);
[isfull,pos]=getiffull(L,newlen);
if~isfull
L(pos)=L(pos)+newlen;
end%if
end%while
end%for
disp('平均每次渡船上的车数')
mean_n=N/n
functionlen=getlength(id) %根据车的类型,产生车长随机数
switchid
case1
len=min([4.5+randn*(1/3),5.5]);
case2
len=min([9+randn*(1/3),10]);
case3
len=0;%根据放置方法,可以不予考虑
end
function[full,pos]=getiffull(L,newlen) %增加车长为len后是否可行(是否满),pos表示加到那一列去
full=0;
pos=0;
ifL
(1)>L
(2)
ifL
(1)+newlen<32
pos=1;
elseifL
(2)+newlen<32
pos=2;
else
full=1;
end
else
ifL
(2)+newlen<32
pos=2;
elseifL
(1)+newlen<32
pos=1;
else
full=1;
end
end
九、模型求解结果及分析
(一)运行结果
程序名为sim_dukou,运行程序,输出结果如下:
sim_dukou
输入模拟次数:
1000
平均每次渡船上的车数
mean_n=
5.48403.91800.5160
(二)结果分析
上面为运行一次模拟程序,模拟次数为1000次的模拟结果。
从模拟结果,你能得出什么结论?
发现摩托车的平均数量不到1辆,因此从另外一方面看,忽略摩托车的长度是合理的。
统计结果显示平均每次渡口时船上卡车、轿车、摩托车数量分别为5.484、3.918、0.516辆。
参考代码:
clear
gds
(1)=ceil(exprnd(30));
fw
(1)=time;
fwjs=zeros(4,3000);
fwjs(1,1)=gds
(1)+fw
(1);
dh
(1)=fw
(1);
fori=2:
4
gds(i)=gds(i-1)+ceil(exprnd(30));
fw(i)=time;
fwjs(i,1)=gds(i)+fw(i);
dh(i)=fw(i);
end
i=5;
gds(i)=gds(i-1)+ceil(exprnd(30));
whilegds(i)<=8*60*60
fw(i)=time;
[dh(i),fwjs2]=paidui(fwjs,gds(i),fw(i));
fwjs=fwjs2;
i=i+1;
gds(i)=gds(i-1)+ceil(exprnd(30));
end
js1.m文件:
t=rand;
ift<0.12
a=randperm(8);
js=a
(1);
elseift<0.22
a=randperm(11);
js=a
(1)+8;
elseift<0.4
a=randperm(10);
js=a
(1)+19;
elseift<0.68
a=randperm(10);
js=a
(1)+29;
elseift<0.88
a=randperm(10);
js=a
(1)+39;
else
t1=rand;
ift1<0.5
js=50;
elseift1<0.5+0.5^2;
js=51;
elseift1<0.5+0.5^2+0.5^3;
js=52;
elseift1<0.5+0.5^2+0.5^3+0.5^4;
js=53;
elseift1<0.5+0.5^2+0.5^3+0.5^4+0.5^5;
js=54;
elseift1<0.5+0.5^2+0.5^3+0.5^4+0.5^5+0.5^6;
js=55;
elseift1<0.5+0.5^2+0.5^3+0.5^4+0.5^5+0.5^6+0.5^7;
js=56;
elseift1<0.5+0.5^2+0.5^3+0.5^4+0.5^5+0.5^6+0.5^7+0.5^8;
js=57;
elseift1<0.5+0.5^2+0.5^3+0.5^4+0.5^5+0.5^6+0.5^7+0.5^8+0.5^9;
js=58;
elseift1<0.5+0.5^2+0.5^3+0.5^4+0.5^5+0.5^6+0.5^7+0.5^8+0.5^9+0.5^10;
js=59;
else
js=60;
end
end
js
paidui.m文件:
function[dh,fwjs]=paidui(fwjs,gds,fw)
forl=1:
4
fwjs1=fwjs(l,find(fwjs(l,:
)>0));
j=1;
whilej ifgds>=fwjs1(j)&gds dc(l)=length(fwjs1)-j; break end j=j+1; end ifgds>fwjs1(length(fwjs1)) dc(l)=0; end iflength(fwjs1)==1 ifgds>fwjs1 (1) dc(l)=0; else dc(l)=1; end end end [k,s]=min(dc); fwjs2=fwjs(s,find(fwjs(s,: )>0)); fwjs(s,length(fwjs2)+1)=max(fwjs(s,length(fwjs2))-gds,0)+gds+fw; dh=fwjs(s,length(fwjs2)+1)-gds; time.m文件: functiont0=time t=rand; ift<0.12 a=randperm(8); js=a (1); elseift<0.22 a=randperm(11); js=a (1)+8; elseift<0.4 a=randperm(10); js=a (1)+19; elseift<0.68 a=randperm(10); js=a (1)+29; elseift<0.88 a=randperm(10); js=a (1)+39; else t1=rand; ift1<0.5 js=50; elseift1<0.5+0.5^2; js=51; elseift1<0.5+0.5^2+0.5^3; js=52; elseift1<0.5+0.5^2+0.5^3+0.5^4; js=53; elseift1<0.5+0.5^2+0.5^3+0.5^4+0.5^5; js=54; elseift1<0.5+0.5^2+0.5^3+0.5^4+0.5^5+0.5^6; js=55; elseift1<0.5+0.5^2+0.5^3+0.5^4+0.5^5+0.5^6+0.5^7; js=56; elseift1<0.5+0.5^2+0.5^3+0.5^4+0.5^5+0.5^6+0.5^7+0.5^8; js=57; elseift1<0.5+0.5^2+0.5^3+0.5^4+0.5^5+0.5^6+0.5^7+0.5^8+0.5^9; js=58; elseift1<0.5+0.5^2+0.5^3+0.5^4+0.5^5+0.5^6+0.5^7+0.5^8+0.5^9+0.5^10; js=59; else js=60; end end t=rand; ift<=0.2 t2=90; else t2=30; end t0=js+t2; 参考文献 [1]杨启凡,数学建模[M].杭州: 浙江大学出版社,2000 [2] 姜启源.谢金星.叶俊. 数学模型.高等教育出版社 2003 [3]雷功炎. 数学模型讲义. 北京大学出版社. 2009 [4] 韩中庚.马晓军.胡宗云.数学建模竞赛—获奖论文精选与点评(第二卷).科学出版社2013
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 超市 收费 系统 问题