超市收费系统问题.docx

上传人:b****8 文档编号:10527047 上传时间:2023-02-21 格式:DOCX 页数:13 大小:29.03KB
下载 相关 举报
超市收费系统问题.docx_第1页
第1页 / 共13页
超市收费系统问题.docx_第2页
第2页 / 共13页
超市收费系统问题.docx_第3页
第3页 / 共13页
超市收费系统问题.docx_第4页
第4页 / 共13页
超市收费系统问题.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

超市收费系统问题.docx

《超市收费系统问题.docx》由会员分享,可在线阅读,更多相关《超市收费系统问题.docx(13页珍藏版)》请在冰豆网上搜索。

超市收费系统问题.docx

超市收费系统问题

超市收费系统问题

 

一、实验目的与意义

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 

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1