数学建模之超市收费系统问题文档格式.docx

上传人:b****4 文档编号:8249202 上传时间:2023-05-10 格式:DOCX 页数:12 大小:28.99KB
下载 相关 举报
数学建模之超市收费系统问题文档格式.docx_第1页
第1页 / 共12页
数学建模之超市收费系统问题文档格式.docx_第2页
第2页 / 共12页
数学建模之超市收费系统问题文档格式.docx_第3页
第3页 / 共12页
数学建模之超市收费系统问题文档格式.docx_第4页
第4页 / 共12页
数学建模之超市收费系统问题文档格式.docx_第5页
第5页 / 共12页
数学建模之超市收费系统问题文档格式.docx_第6页
第6页 / 共12页
数学建模之超市收费系统问题文档格式.docx_第7页
第7页 / 共12页
数学建模之超市收费系统问题文档格式.docx_第8页
第8页 / 共12页
数学建模之超市收费系统问题文档格式.docx_第9页
第9页 / 共12页
数学建模之超市收费系统问题文档格式.docx_第10页
第10页 / 共12页
数学建模之超市收费系统问题文档格式.docx_第11页
第11页 / 共12页
数学建模之超市收费系统问题文档格式.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数学建模之超市收费系统问题文档格式.docx

《数学建模之超市收费系统问题文档格式.docx》由会员分享,可在线阅读,更多相关《数学建模之超市收费系统问题文档格式.docx(12页珍藏版)》请在冰点文库上搜索。

数学建模之超市收费系统问题文档格式.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

【设计任务】

根据题目要求建立模型并求解。

附录

计算机模拟方法介绍

1.步骤

(1)分析问题,收集资料。

需要搞清楚问题要达到的目标,根据问题的性质收集有关随机性因素的资料。

这里用得较多的知识为概率统计方面。

在这个阶段,还应当估计一下待建立的模拟系统的规模和条件,说明哪些是可以控制的变量,哪些是不可控制的变量。

(2)建立模拟模型,编制模拟程序。

按照一般的建模方法,对问题进行适当的假设。

也就是说,模拟模型未必要将被模拟系统的每个细节全部考虑。

模拟模型的优劣将通过与实际系统有关资料的比较来评价。

如果一个“粗糙”的模拟模型已经比较符合实际系统的情况,也就没有必要建立费时、复杂的模型。

当然,如果开始建立的模型比较简单,与实际系统相差较大,那么可以在建立了简单模型后,逐步加入一些原先没有考虑的因素,直到模型达到预定的要求为止。

编写模拟程序之前,要现画出程序框图或写出算法步骤。

然后选择合适的计算机语言,编写模拟程序。

(3)运行模拟程序,计算结果。

为了减小模拟结果的随机性偏差,一般要多次运行模拟程序,还有就是增加模拟模型的时段次数。

(4)分析模拟结果,并检验。

模拟结果一般说来反映的是统计特性,结果的合理性、有效性,都需要结合实际的系统来分析,检验。

以便提出合理的对策、方案。

以上步骤是一个反复的过程,在时间和步骤上是彼此交错的。

比如模型的修改和改进,都需要重新编写和改动模拟程序。

模拟结果的不合理,则要求检查模型,并修改模拟程序。

2.控制模拟时间的方法:

(1)固定时间增量法,是选用一段合适的时间作单位,然后每隔一个单位时间就计算一次有关参数的值,到达预定的模拟时间后,模拟程序结束。

在编写这种程序时,一般可以建立一个“模拟时钟”变量。

程序的主体框架一般是个大的循环,循环变量,则为模拟时间;

在每个循环体内,就是对每个时段作处理。

例如,有些排队论模型,可能就是以每隔一段时间(一天或者一个月)进行处理。

(2)可变时间增量法,模拟也有一个“模拟时钟”变量,但它是在一个事件发生时,“模拟时钟”才向前推进。

需要注意的是,该模拟方法每一步经过的时间是可变的,而且会自动寻找下一个最早使系统状态发生变化的事件。

整个模拟直到“模拟时钟”到达指定的时间长度为止。

可以参考有关离散系统仿真的内容。

参考案例:

渡口模型

一个渡口的渡船营运者拥有一只甲板长32米,可以并排停放两列车辆的渡船。

他在考虑怎样在甲板上安排过河车辆的位置,才能安全地运过最多数量的车辆。

分析:

怎样安排过河车辆,关心一次可以运多少辆各类车。

准备工作:

观察数日,发现每次情况不尽相同,得到下列数据和情况:

(1)车辆随机到达,形成一个等待上船的车列;

(2)来到车辆,轿车约占40%,卡车约占55%,摩托车约占5%;

(3)轿车车身长为3.5~5.5米,卡车车身长为8~10米。

问题分析

这是一个机理较复杂的随机问题,是遵循“先到先服务”的随机排队问题。

解决方法:

采用模拟模型方法。

因此需考虑以下问题:

(1)应该怎样安排摩托车?

(2)下一辆到达的车是什么类型?

(3)怎样描述一辆车的车身长度?

(4)如何安排到达车辆加入甲板上两列车队中的哪一列中去?

本实验主要模拟装载车辆的情况,暂时不考虑渡船的安全。

模型建立

设到达的卡车、轿车长度分别为随机变量

结合实际,这里不妨假设卡车、轿车的车身长度

均服从正态分布。

由于卡车车身长为8~10m,所以卡车车长

的均值为

m,由概率知识中的“

”原则,其标准差为

,所以得到

同理可得

模拟程序设计

由以上的分析,程序设计时的应划分的主要模块(函数)如下:

(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;

%到达摩托车

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;

%根据放置方法,可以不予考虑

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<

pos=2;

else

full=1;

end

ifL

(2)+newlen<

elseifL

(1)+newlen<

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);

i=5;

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));

js1.m文件:

t=rand;

0.12

a=randperm(8);

js=a

(1);

0.22

a=randperm(11);

js=a

(1)+8;

0.4

a=randperm(10);

js=a

(1)+19;

0.68

js=a

(1)+29;

0.88

js=a

(1)+39;

t1=rand;

ift1<

0.5

js=50;

elseift1<

0.5+0.5^2;

js=51;

0.5+0.5^2+0.5^3;

js=52;

0.5+0.5^2+0.5^3+0.5^4;

js=53;

0.5+0.5^2+0.5^3+0.5^4+0.5^5;

js=54;

0.5+0.5^2+0.5^3+0.5^4+0.5^5+0.5^6;

js=55;

0.5+0.5^2+0.5^3+0.5^4+0.5^5+0.5^6+0.5^7;

js=56;

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;

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;

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;

js=60;

js

paidui.m文件:

function[dh,fwjs]=paidui(fwjs,gds,fw)

forl=1:

fwjs1=fwjs(l,find(fwjs(l,:

)>

0));

j=1;

whilej<

length(fwjs1)

ifgds>

=fwjs1(j)&

gds<

fwjs1(j+1);

dc(l)=length(fwjs1)-j;

break

j=j+1;

fwjs1(length(fwjs1))

dc(l)=0;

iflength(fwjs1)==1

fwjs1

(1)

dc(l)=1;

[k,s]=min(dc);

fwjs2=fwjs(s,find(fwjs(s,:

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

=0.2

t2=90;

t2=30;

t0=js+t2;

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

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2