


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机仿真单服务员单队列系统仿真实验班级:机设13-4班学 号:2013210360姓名:杨 尚 武授课教师: 翟华日 期:2016年4月13日实验二单服务员单队列系统仿真实验一、实验目的通过实验了解离散事件系统仿真一般过程,了解离散事件系统中典型的单服务员单队列系统的仿真一般过程,了解不同分布随机数的计算机实现过程,了解事件扫描法在离散事件系统中的应用。二、实验要求通过实验了解离散事件系统仿真一般过程,了解离散事件系统中典型的单服 务员单队列系统的仿真一般过程,了解不同分布随机数的计算机实现过程,了解事件扫描法在离散事件系统中的应用。同学能在参考源程序的基础上,独立编写C源程序,或其他高级语
2、言程序,能正 确计算仿真结果,并对结果进行分析。三、参考C语言程序#i nclude stdio.h#in elude math.hFILE * fp;float seed;int sstop,ip;float miat,msvt,svt;float tval,tlq,tme n;float sigma,time,lqt,lst,tle;float wkst100;float b,mq,s,f, nd,ts,is,ta,ia,clock,fel3;int imevt, nu mevs;void rptge n() /报告生成子程序 float rho,w,pc,amts,amta,lq,l,w
3、q;rho=b/clock;w=s/nd;pc=f/nd;amts=ts/is;amta=ta/ia;lq=tlq/clock;l=tme n/clock;wq=tlq/nd;if(fp=fope n( fz22,wb)=NULL)pri ntf(ca nnot ope n file n);prin tf(time=%fn,time);fprin tf(fp,miat=%f,msvt=%f,sigma=%f,time=%fn ,miat,msvt,sigma,time)Jfprin tf(fp,rho=%f,mq=%f,pc=%f,clock=%fn,rho,mq,pc,clock);fpri
4、n tf(fp, nd=%f,amts=%f,amta=%fn, nd,amts,amta);fprin tf(fp,lq=%f,l=%f,wq=%f,w=%fn,lq,l,wq,w);float rand() /随机数生成子程序float a,c,m;float ra nd1;a=25173.0;c=13849.0;m=65535.0;seed=(seed*a+c)-m*(i nt)(seed*a+c)/m);if(seed=0.0) seed=1.0;ran d1=seed/m;return ran d1;float normal(float ex,float stdx)/正态分布随机数生
5、成子程序/float ex,stdx;float sum,x;int i;float r;sum=0.0;for(i=1;i=12;i+)r=ra nd();sum=sum+r;x=stdx*(sum-6.0)+ex;printf=“normal=%n” ,x );return x;float expent(float ex)/指数分布随机数生成子程序float r,x;r=ran d();x=-ex*log(r);return x;void ini tlz() /系统初始化子程序float aat;clock=0.0; /置仿真时钟为.0imevt=0;/假定系统在时间为空闲lqt=0.0;
6、/置以下各统计量初值为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=expe nt(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=fmi n) con ti nue;fmi n=feli;i
7、mevt=i;if(imevt0)/判断有无将来事件clock=felimevt;/设定仿真时钟为下一事件时间,事件将在时间FEL(IMEVT发生tval=clock-tle;tlq=tlq+lqt*tval;tme n=tme n+(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
8、,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;Ioop3: aat=expent(miat);/产
9、生一个到达时间间隔并安排下一到达事件ta=ta+aat;ia=ia+1.0;fel1=clock+aat;goto Ioop31;Ioop4: prin tf(overflow in array wkst);rptge n();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+
10、1;个位置/记录(累计)停留时间大于等于的顾客数 /检查队列空否/此时至少有一个顾客在队列中,使每个顾客向前移动wksti=wksti1;lqt=lqt-1.0;/队列中的顾客数减svt=normal(msvt,sigma);/对将被服务的顾客产生一个新的服务,时间且安排下一个/离开事件fel2=clock+svt; else lst=0.0;fel2=1.0e+30;/队列空,服务员空闲,下一离开事件置在无穷大时间void mai n()ip=0;seed=2.0;miat=10.0; /主程序/输入随机数种子msvt=3.0;sigma=1.0;time=500.0;numevs=2; /
11、确定事件总数为initlz();/调用初始化子程序sstop=0;/程序终止变量,sstop=0,程序循环,sstop=1,程序终止loop: timadv(); /调用时间推进子程序if(sstop=1) goto loopp; if (imevt=1) arrvl();if(sstop=1) goto loopp; goto loop;if (imevt=2) dpart();if (clockvtime) goto loop; rptge n();loopp:retur n;/判断sstop=1,程序终止IMEVT=1为到达,IMEVT=2为离开/调用到达事件子程序/判断sstop=1,
12、程序终止/程序循环执行/调用离开事件子程序/判断仿真是否结束,若未结束继续循环执行/当仿真结束时生成报告输出四、实验报告1 给出RAN()子程序输出的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.579
13、93.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服务员忙度r
14、ho=0.482677到当前时间为止等待队列的最大长度 mq=2.000000停留4个小时单位以上的顾客比例 pc=0.454545仿真时钟当前时间clock=114.048820到当前时间为止离开的顾客数 nd=11.000000平均服务时间amts=4.362051平均到达间隔时间amta=9.973741队列中平均顾客数lq=1.026730系统中平均顾客数1=1.509407顾客在队列中平均时间 wq=10.645217顾客在系统中平均时间 w=3.600372(2)输入数据为:MIAT=10 MSVT=3 SIGMA=1 TIME=100计算结果为:平均到达间隔时间 miat=10.
15、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系统中平均顾客数1=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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工工程变更协议书
- 期中考试总结
- 提炼数学核心策略构建解题技巧:课件展示
- 《审计实务中的制度导向技术应用》课件
- 海报设计中的自我介绍
- 人教版九年级教学大纲
- 行政管理课程重点试题及答案
- 行政管理与国际发展经验的比较研究试题及答案
- 行政管理学理论创新试题及答案
- 行政管理难点分析试题及答案
- Q∕SY 13123-2017 物资仓储技术规范
- 合肥市不动产登记申请审批表-版本
- 防洪度汛检查表
- 手术通知单模板
- 招商合同范本4篇-合同范本
- 《西方音乐史》课件伯辽兹
- 关于互联网金融对商业银行风险影响的实证研究会计学专业
- 十八项电网重大反事故措施
- 液压缸常见故障类型及维修或排除方法
- 河北工业大学本科生体育课程考核管理办法-河北工业大学本科生院
- 数控车床四刀位免抬刀塔装调工艺卡
评论
0/150
提交评论