合肥工业大学-单服务员单队列系统仿真.doc_第1页
合肥工业大学-单服务员单队列系统仿真.doc_第2页
合肥工业大学-单服务员单队列系统仿真.doc_第3页
合肥工业大学-单服务员单队列系统仿真.doc_第4页
合肥工业大学-单服务员单队列系统仿真.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机仿真单服务员单队列系统仿真实验班 级: 机设13-4班 学 号: 2013210360 姓 名: 杨 尚 武 授课教师: 翟 华 日 期: 2016年4月13日 实验二 单服务员单队列系统仿真实验1、 实验目的通过实验了解离散事件系统仿真一般过程,了解离散事件系统中典型的单服务员单队列系统的仿真一般过程,了解不同分布随机数的计算机实现过程,了解事件扫描法在离散事件系统中的应用。二、实验要求通过实验了解离散事件系统仿真一般过程,了解离散事件系统中典型的单服务员单队列系统的仿真一般过程,了解不同分布随机数的计算机实现过程,了解事件扫描法在离散事件系统中的应用。同学能在参考源程序的基础上,独立编写C源程序,或其他高级语言程序,能正确计算仿真结果,并对结果进行分析。三、参考C语言程序#include stdio.h#include math.hFILE * fp;float seed;int sstop,ip;float miat,msvt,svt;float tval,tlq,tmen;float sigma,time,lqt,lst,tle;float wkst100;float b,mq,s,f,nd,ts,is,ta,ia,clock,fel3;int imevt,numevs;void rptgen()/报告生成子程序 float rho,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(cannot open filen);printf(time=%fn,time);fprintf(fp,miat=%f,msvt=%f,sigma=%f,time=%fn,miat,msvt,sigma,time);fprintf(fp,rho=%f,mq=%f,pc=%f,clock=%fn,rho,mq,pc,clock);fprintf(fp,nd=%f,amts=%f,amta=%fn,nd,amts,amta);fprintf(fp,lq=%f,l=%f,wq=%f,w=%fn,lq,l,wq,w);float rand()/随机数生成子程序float a,c,m;float rand1;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;return rand1;float normal(float ex,float stdx)/正态分布随机数生成子程序/float ex,stdx;float sum,x;int i;float r;sum=0.0;for(i=1;i=12;i+)r=rand();sum=sum+r;x=stdx*(sum-6.0)+ex;printf=(“normal=%n”,x);return x;float expent(float ex)/指数分布随机数生成子程序float r,x;r=rand();x=-ex*log(r);return x;void initlz()/系统初始化子程序float aat;clock=0.0;/置仿真时钟为.0imevt=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);fel1=clock+aat;/产生第一次到达,并安排在FEL()fel2=1.0e+30;/置FEL()为无穷大,表示系统空闲时,不会发生离开事件void timadv()/时间推进子程序 float fmin;int i;fmin=1.0e+29;imevt=0;for (i=1;i=fmin) continue;fmin=feli;imevt=i;if(imevt0)/判断有无将来事件clock=felimevt;/设定仿真时钟为下一事件时间,事件将在时间FEL(IMEVT)发生tval=clock-tle;tlq=tlq+lqt*tval;tmen=tmen+(lqt+lst)*tval;elserptgen();/若将来事件为空,调用报告子程序sstop=1;void arrvl()/到达事件子程序float aat,svt;if(lst=1.0) goto loop2;/检查服务员是否被占lst=1.0;/若服务员空闲,修改系统状态并记录新的顾客的到达时间wkstip=clock;svt=normal(msvt,sigma);/为新到达顾客产生服务时间并安排离开事件fel2=clock+svt;ts=ts+svt;is=is+1.0;/修改累积统计量tle=clock;if(lqtmq)mq=lqt;goto loop3;loop2: lqt=lqt+1.0;/若服务员被占,修改系统状态,记录新的顾客到达时间及系统中顾客数ip=lqt+lst;if(ip100) goto loop4;/现设系统容量为人,若超过即给出报告wkstip=clock;b=b+(clock-tle);/修改累积统计量tle=clock;if(lqtmq) mq=lqt;loop3: aat=expent(miat);/产生一个到达时间间隔并安排下一到达事件ta=ta+aat;ia=ia+1.0;fel1=clock+aat;goto loop31;loop4: printf(overflow in array wkst);rptgen();sstop=1;loop31:return;void dpart()/离开事件子程序 int i,i1;float rt,svt;b=b+(clock-tle);/修改累积统计量tle=clock;rt=clock-wkstip;s=s+rt;nd=nd+1.0;if(rt=4.0)f=f+1.0;/记录(累计)停留时间大于等于的顾客数if(lqt1.0)/检查队列空否for(i=1;i=lqt;i+)i1=i+1;/此时至少有一个顾客在队列中,使每个顾客向前移动一个位置wksti=wksti1;lqt=lqt-1.0;/队列中的顾客数减svt=normal(msvt,sigma);/对将被服务的顾客产生一个新的服务,时间且安排下一个/离开事件fel2=clock+svt;else/队列空,服务员空闲,下一离开事件置在无穷大时间lst=0.0;fel2=1.0e+30; void main()/主程序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) goto loopp;/判断sstop=1,程序终止if (imevt=1)/IMEVT=1为到达,IMEVT=2为离开arrvl();/调用到达事件子程序if(sstop=1) goto loopp; /判断sstop=1,程序终止goto loop;/程序循环执行if (imevt=2) dpart();/调用离开事件子程序if (clocktime) goto loop;/判断仿真是否结束,若未结束继续循环执行rptgen();/当仿真结束时生成报告输出loopp:return;四、实验报告1给出RAND()子程序输出的10个数据,以及对应的符合正态分布和指数分布的随机数。12345RAND()0.9795530.6640570.5042500.5279160.193561NORMAL()2.97672.49043.00012.64993.2569EXPENT()0.20664.09396.84686.388216.4216678910RAND()0.9597770.6832380.0843370.1624320.080400NORMAL()2.96584.57993.77831.63436.6180EXPENT()0.41053.809124.729418.174925.20742.分别输入下列三组数据,给出相应的计算结果(包括服务员忙度、平均服务时间、平均到达间隔时间、顾客在系统中平均时间、系统中平均顾客数、队列中平均顾客数、停留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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论