完整合肥工业大学单服务员单队列系统仿真.docx

上传人:b****1 文档编号:13222139 上传时间:2023-06-12 格式:DOCX 页数:13 大小:30.46KB
下载 相关 举报
完整合肥工业大学单服务员单队列系统仿真.docx_第1页
第1页 / 共13页
完整合肥工业大学单服务员单队列系统仿真.docx_第2页
第2页 / 共13页
完整合肥工业大学单服务员单队列系统仿真.docx_第3页
第3页 / 共13页
完整合肥工业大学单服务员单队列系统仿真.docx_第4页
第4页 / 共13页
完整合肥工业大学单服务员单队列系统仿真.docx_第5页
第5页 / 共13页
完整合肥工业大学单服务员单队列系统仿真.docx_第6页
第6页 / 共13页
完整合肥工业大学单服务员单队列系统仿真.docx_第7页
第7页 / 共13页
完整合肥工业大学单服务员单队列系统仿真.docx_第8页
第8页 / 共13页
完整合肥工业大学单服务员单队列系统仿真.docx_第9页
第9页 / 共13页
完整合肥工业大学单服务员单队列系统仿真.docx_第10页
第10页 / 共13页
完整合肥工业大学单服务员单队列系统仿真.docx_第11页
第11页 / 共13页
完整合肥工业大学单服务员单队列系统仿真.docx_第12页
第12页 / 共13页
完整合肥工业大学单服务员单队列系统仿真.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

完整合肥工业大学单服务员单队列系统仿真.docx

《完整合肥工业大学单服务员单队列系统仿真.docx》由会员分享,可在线阅读,更多相关《完整合肥工业大学单服务员单队列系统仿真.docx(13页珍藏版)》请在冰点文库上搜索。

完整合肥工业大学单服务员单队列系统仿真.docx

完整合肥工业大学单服务员单队列系统仿真

(完整)合肥工业大学-单服务员单队列系统仿真

编辑整理:

 

尊敬的读者朋友们:

这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)合肥工业大学-单服务员单队列系统仿真)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)合肥工业大学-单服务员单队列系统仿真的全部内容。

计算机仿真

单服务员单队列系统仿真实验

 

班级:

机设13—4班

学号:

2013210360

姓名:

杨尚武

授课教师:

翟华

日期:

2016年4月13日

实验二单服务员单队列系统仿真实验

一、实验目的

通过实验了解离散事件系统仿真一般过程,了解离散事件系统中典型的单服务员单队列系统的仿真一般过程,了解不同分布随机数的计算机实现过程,了解事件扫描法在离散事件系统中的应用。

二、实验要求

通过实验了解离散事件系统仿真一般过程,了解离散事件系统中典型的单服务员单队列系统的仿真一般过程,了解不同分布随机数的计算机实现过程,了解事件扫描法在离散事件系统中的应用.

同学能在参考源程序的基础上,独立编写C源程序,或其他高级语言程序,能正确计算仿真结果,并对结果进行分析。

三、参考C语言程序

#include”stdio。

h”

#include”math.h"

FILE*fp;

floatseed;

intsstop,ip;

floatmiat,msvt,svt;

floattval,tlq,tmen;

floatsigma,time,lqt,lst,tle;

floatwkst[100];

floatb,mq,s,f,nd,ts,is,ta,ia,clock,fel[3];

intimevt,numevs;

voidrptgen()//报告生成子程序

{floatrho,w,pc,amts,amta,lq,l,wq;

rho=b/clock;

w=s/nd;

pc=f/nd;

amts=ts/is;

amta=ta/ia;

lq=tlq/clock;

l=tmen/clock;

wq=tlq/nd;

if((fp=fopen("fz22","wb"))==NULL)

{printf("cannotopenfile\n”);

}

printf("time=%f\n",time);

fprintf(fp,”miat=%f,msvt=%f,sigma=%f,time=%f\n”,miat,msvt,sigma,time);

fprintf(fp,”rho=%f,mq=%f,pc=%f,clock=%f\n”,rho,mq,pc,clock);

fprintf(fp,"nd=%f,amts=%f,amta=%f\n",nd,amts,amta);

fprintf(fp,"lq=%f,l=%f,wq=%f,w=%f\n",lq,l,wq,w);

floatrand()//随机数生成子程序

{floata,c,m;

floatrand1;

a=25173.0;

c=13849。

0;

m=65535.0;

seed=(seed*a+c)-m*(int)((seed*a+c)/m);

if(seed==0。

0)seed=1。

0;

rand1=seed/m;

returnrand1;

}

floatnormal(floatex,floatstdx)//正态分布随机数生成子程序

//floatex,stdx;

{floatsum,x;

inti;

floatr;

sum=0。

0;

for(i=1;i<=12;i++)

{r=rand();

sum=sum+r;}

x=stdx*(sum-6。

0)+ex;

printf=(“normal=%\n",x);

returnx;

}

floatexpent(floatex)//指数分布随机数生成子程序

{floatr,x;

r=rand();

x=-ex*log(r);

returnx;

}

voidinitlz()//系统初始化子程序

{floataat;

clock=0.0;//置仿真时钟为.0

imevt=0;//假定系统在时间为空闲

lqt=0。

0;//置以下各统计量初值为

lst=0.0;

tle=0.0;

b=0。

0;

mq=0.0;

s=0。

0;

f=0.0;

nd=0。

0;

ts=0。

0;

is=0.0;

ta=0。

0;

ia=0。

0;

tlq=0。

0;

tmen=0.0;

aat=expent(miat);

fel[1]=clock+aat;//产生第一次到达,并安排在FEL()

fel[2]=1。

0e+30;//置FEL()为无穷大,表示系统空闲时,不会发生离开事件

}

voidtimadv()//时间推进子程序

{floatfmin;

inti;

fmin=1。

0e+29;

imevt=0;

for(i=1;i<=numevs;i++)//搜索FEL以找出下一事件

{

if(fel[i]〉=fmin)continue;

fmin=fel[i];

imevt=i;

if(imevt>0)//判断有无将来事件

{clock=fel[imevt];//设定仿真时钟为下一事件时间,事件将在时间FEL(IMEVT)发生

tval=clock—tle;

tlq=tlq+lqt*tval;

tmen=tmen+(lqt+lst)*tval;

else

rptgen();//若将来事件为空,调用报告子程序

sstop=1;

}

voidarrvl()//到达事件子程序

{

floataat,svt;

if(lst==1.0)gotoloop2;//检查服务员是否被占

lst=1.0;//若服务员空闲,修改系统状态并记录新的顾客的到达时间

wkst[ip]=clock;

svt=normal(msvt,sigma);//为新到达顾客产生服务时间并安排离开事件

fel[2]=clock+svt;

ts=ts+svt;

is=is+1。

0;//修改累积统计量

tle=clock;

if(lqt>mq)mq=lqt;

gotoloop3;

loop2:

lqt=lqt+1.0;//若服务员被占,修改系统状态,记录新的顾客到达时间及系统中顾客数

ip=lqt+lst;

if(ip>100)gotoloop4;//现设系统容量为人,若超过即给出报告

wkst[ip]=clock;

b=b+(clock—tle);//修改累积统计量

tle=clock;

if(lqt>mq)mq=lqt;

loop3:

aat=expent(miat);//产生一个到达时间间隔并安排下一到达事件

ta=ta+aat;

ia=ia+1。

0;

fel[1]=clock+aat;

gotoloop31;

loop4:

printf(”overflowinarraywkst");

rptgen();

sstop=1;

loop31:

return;

voiddpart()//离开事件子程序

{inti,i1;

floatrt,svt;

b=b+(clock—tle);//修改累积统计量

tle=clock;

rt=clock-wkst[ip];

s=s+rt;

nd=nd+1.0;

if(rt〉=4。

0)f=f+1。

0;//记录(累计)停留时间大于等于的顾客数

if(lqt〉1.0)//检查队列空否

for(i=1;i<=lqt;i++)

{i1=i+1;//此时至少有一个顾客在队列中,使每个顾客向前移动一个位置

wkst[i]=wkst[i1];

}

lqt=lqt—1.0;//队列中的顾客数减

svt=normal(msvt,sigma);//对将被服务的顾客产生一个新的服务,时间且安排下一个

//离开事件

fel[2]=clock+svt;

}

else

{//队列空,服务员空闲,下一离开事件置在无穷大时间

lst=0.0;

fel[2]=1.0e+30;}

}

voidmain()//主程序

{

ip=0;

seed=2.0;//输入随机数种子

miat=10.0;//

msvt=3。

0;

sigma=1.0;

time=500.0;

numevs=2;//确定事件总数为

initlz();//调用初始化子程序

sstop=0;//程序终止变量,sstop=0,程序循环,sstop=1,程序终止

loop:

timadv();//调用时间推进子程序

if(sstop==1)gotoloopp;//判断sstop=1,程序终止

if(imevt==1)//IMEVT=1为到达,IMEVT=2为离开

{arrvl();//调用到达事件子程序

if(sstop==1)gotoloopp;//判断sstop=1,程序终止

gotoloop;//程序循环执行

if(imevt==2)dpart();//调用离开事件子程序

if(clock〈time)gotoloop;//判断仿真是否结束,若未结束继续循环执行

rptgen();//当仿真结束时生成报告输出

loopp:

return;

四、实验报告

1.给出RAND()子程序输出的10个数据,以及对应的符合正态分布和指数分布的随机数。

1

2

3

4

5

RAND()

0。

979553

0。

664057

0。

504250

0。

527916

0。

193561

NORMAL()

2。

9767

2。

4904

3。

0001

2.6499

3.2569

EXPENT()

0.2066

4。

0939

6。

8468

6.3882

16.4216

6

7

8

9

10

RAND()

0.959777

0.683238

0.084337

0.162432

0。

080400

NORMAL()

2.9658

4.5799

3.7783

1.6343

6.6180

EXPENT()

0.4105

3。

8091

24。

7294

18.1749

25。

2074

2。

分别输入下列三组数据,给出相应的计算结果(包括服务员忙度、平均服务时间、平均到达间隔时间、顾客在系统中平均时间、系统中平均顾客数、队列中平均顾客数、停留4个小时单位以上的顾客比例等),并加以文字说明。

(1)输入数据为:

MIAT=10,MSVT=5,SIGMA=2,TIME=100

计算结果为:

平均到达间隔时间miat=10。

000000

平均服务时间msvt=5.000000

服务时间标准差sigma=2.000000

仿真停止时间time=100。

000000

服务员忙度rho=0.482677

到当前时间为止等待队列的最大长度mq=2.000000

停留4个小时单位以上的顾客比例pc=0。

454545

仿真时钟当前时间clock=114.048820

到当前时间为止离开的顾客数nd=11.000000

平均服务时间amts=4.362051

平均到达间隔时间amta=9.973741

队列中平均顾客数lq=1。

026730

系统中平均顾客数l=1.509407

顾客在队列中平均时间wq=10.645217

顾客在系统中平均时间w=3.600372

(2)输入数据为:

MIAT=10,MSVT=3,SIGMA=1,TIME=100

计算结果为:

平均到达间隔时间miat=10。

000000

平均服务时间msvt=3。

000000

服务时间标准差sigma=1。

000000

仿真停止时间time=100.000000

服务员忙度rho=0。

242204

到当前时间为止等待队列的最大长度mq=1。

000000

停留4个小时单位以上的顾客比例pc=0.111111

仿真时钟当前时间clock=108.105759

到当前时间为止离开的顾客数nd=9.000000

平均服务时间amts=2.909301

平均到达间隔时间amta=11.269994

队列中平均顾客数lq=0.682092

系统中平均顾客数l=0。

924297

顾客在队列中平均时间wq=8.193123

顾客在系统中平均时间w=2。

863684

(3)输入数据为:

MIAT=10,MSVT=30,SIGMA=2,TIME=100

计算结果为:

平均到达间隔时间miat=10。

000000

平均服务时间msvt=30.000000

服务时间标准差sigma=2.000000

仿真停止时间time=100。

000000

服务员忙度rho=0.998272

到当前时间为止等待队列的最大长度mq=8.000000

停留4个小时单位以上的顾客比例pc=1。

000000

仿真时钟当前时间clock=119。

530281

到当前时间为止离开的顾客数nd=4.000000

平均服务时间amts=29.953489

平均到达间隔时间amta=9.972269

队列中平均顾客数lq=5.037513

系统中平均顾客数l=6.035784

顾客在队列中平均时间wq=150.533829

顾客在系统中平均时间w=15。

594049

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

当前位置:首页 > 自然科学 > 物理

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

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