合肥工業(yè)大學-單服務員單隊列系統(tǒng)仿真講述_第1頁
合肥工業(yè)大學-單服務員單隊列系統(tǒng)仿真講述_第2頁
合肥工業(yè)大學-單服務員單隊列系統(tǒng)仿真講述_第3頁
合肥工業(yè)大學-單服務員單隊列系統(tǒng)仿真講述_第4頁
合肥工業(yè)大學-單服務員單隊列系統(tǒng)仿真講述_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、計算機仿真單服務員單隊列系統(tǒng)仿真實驗班 級: 機設13-4班 學 號: 2013210360 姓 名: 楊 尚 武 授課教師: 翟 華 日 期: 2016年4月13日 實驗二 單服務員單隊列系統(tǒng)仿真實驗1、 實驗目的通過實驗了解離散事件系統(tǒng)仿真一般過程,了解離散事件系統(tǒng)中典型的單服務員單隊列系統(tǒng)的仿真一般過程,了解不同分布隨機數(shù)的計算機實現(xiàn)過程,了解事件掃描法在離散事件系統(tǒng)中的應用。二、實驗要求通過實驗了解離散事件系統(tǒng)仿真一般過程,了解離散事件系統(tǒng)中典型的單服務員單隊列系統(tǒng)的仿真一般過程,了解不同分布隨機數(shù)的計算機實現(xiàn)過程,了解事件掃描法在離散事件系統(tǒng)中的應用。同學能在參考源程序的基礎上,獨立

2、編寫C源程序,或其他高級語言程序,能正確計算仿真結(jié)果,并對結(jié)果進行分析。三、參考C語言程序#include "stdio.h"#include "math.h"FILE * 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()/報告生成子程序 flo

3、at 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,m

4、svt,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()/隨機數(shù)生成子程序float a,c,m;float rand1;a=25173.0;c=13849.0;m=65535.0;seed=(seed*a+c)-m*(int)

5、(seed*a+c)/m);if(seed=0.0) seed=1.0;rand1=seed/m;return rand1;float normal(float ex,float stdx)/正態(tài)分布隨機數(shù)生成子程序/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)/指數(shù)分布隨機數(shù)生成子程序float r,x;r=rand(

6、);x=-ex*log(r);return x;void initlz()/系統(tǒng)初始化子程序float aat;clock=0.0;/置仿真時鐘為.0imevt=0;/假定系統(tǒng)在時間為空閑lqt=0.0;/置以下各統(tǒng)計量初值為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;/產(chǎn)生第一次到達,并安排在FEL()fel2=1.0e+30;/置FEL()為無窮大,表示系統(tǒng)空閑時,不會發(fā)生離開事件voi

7、d timadv()/時間推進子程序 float fmin;int i;fmin=1.0e+29;imevt=0;for (i=1;i<=numevs;i+)/搜索FEL以找出下一事件if(feli>=fmin) continue;fmin=feli;imevt=i;if(imevt>0)/判斷有無將來事件clock=felimevt;/設定仿真時鐘為下一事件時間,事件將在時間FEL(IMEVT)發(fā)生tval=clock-tle;tlq=tlq+lqt*tval;tmen=tmen+(lqt+lst)*tval;elserptgen();/若將來事件為空,調(diào)用報告子程序sst

8、op=1;void arrvl()/到達事件子程序float aat,svt;if(lst=1.0) goto loop2;/檢查服務員是否被占lst=1.0;/若服務員空閑,修改系統(tǒng)狀態(tài)并記錄新的顧客的到達時間wkstip=clock;svt=normal(msvt,sigma);/為新到達顧客產(chǎn)生服務時間并安排離開事件fel2=clock+svt;ts=ts+svt;is=is+1.0;/修改累積統(tǒng)計量tle=clock;if(lqt>mq)mq=lqt;goto loop3;loop2: lqt=lqt+1.0;/若服務員被占,修改系統(tǒng)狀態(tài),記錄新的顧客到達時間及系統(tǒng)中顧客數(shù)ip=

9、lqt+lst;if(ip>100) goto loop4;/現(xiàn)設系統(tǒng)容量為人,若超過即給出報告wkstip=clock;b=b+(clock-tle);/修改累積統(tǒng)計量tle=clock;if(lqt>mq) mq=lqt;loop3: aat=expent(miat);/產(chǎn)生一個到達時間間隔并安排下一到達事件ta=ta+aat;ia=ia+1.0;fel1=clock+aat;goto loop31;loop4: printf("overflow in array wkst");rptgen();sstop=1;loop31:return;void dpar

10、t()/離開事件子程序 int i,i1;float rt,svt;b=b+(clock-tle);/修改累積統(tǒng)計量tle=clock;rt=clock-wkstip;s=s+rt;nd=nd+1.0;if(rt>=4.0)f=f+1.0;/記錄(累計)停留時間大于等于的顧客數(shù)if(lqt>1.0)/檢查隊列空否for(i=1;i<=lqt;i+)i1=i+1;/此時至少有一個顧客在隊列中,使每個顧客向前移動一個位置wksti=wksti1;lqt=lqt-1.0;/隊列中的顧客數(shù)減svt=normal(msvt,sigma);/對將被服務的顧客產(chǎn)生一個新的服務,時間且安排下

11、一個/離開事件fel2=clock+svt;else/隊列空,服務員空閑,下一離開事件置在無窮大時間lst=0.0;fel2=1.0e+30; void main()/主程序ip=0;seed=2.0;/輸入隨機數(shù)種子miat=10.0;/msvt=3.0;sigma=1.0;time=500.0;numevs=2;/確定事件總數(shù)為initlz();/調(diào)用初始化子程序sstop=0;/程序終止變量,sstop=0,程序循環(huán),sstop=1,程序終止loop: timadv();/調(diào)用時間推進子程序if(sstop=1) goto loopp;/判斷sstop=1,程序終止if (imevt=1

12、)/IMEVT=1為到達,IMEVT=2為離開arrvl();/調(diào)用到達事件子程序if(sstop=1) goto loopp; /判斷sstop=1,程序終止goto loop;/程序循環(huán)執(zhí)行if (imevt=2) dpart();/調(diào)用離開事件子程序if (clock<time) goto loop;/判斷仿真是否結(jié)束,若未結(jié)束繼續(xù)循環(huán)執(zhí)行rptgen();/當仿真結(jié)束時生成報告輸出loopp:return;四、實驗報告1給出RAND()子程序輸出的10個數(shù)據(jù),以及對應的符合正態(tài)分布和指數(shù)分布的隨機數(shù)。12345RAND()0.9795530.6640570.5042500.527

13、9160.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.分別輸入下列三組數(shù)據(jù),給出相應的計算結(jié)果(包括服務員忙度、平均服務時間、平均到達間隔時間、顧客在系統(tǒng)中平均時間、系統(tǒng)中平均顧客數(shù)、隊列中平均顧客數(shù)、停留4個小

14、時單位以上的顧客比例等),并加以文字說明。(1)輸入數(shù)據(jù)為:MIAT=10,MSVT=5,SIGMA=2,TIME=100計算結(jié)果為:平均到達間隔時間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到當前時間為止離開的顧客數(shù)nd=11.000000平均服務時間amts=4.362051平均到達間隔時間amta

15、=9.973741隊列中平均顧客數(shù)lq=1.026730系統(tǒng)中平均顧客數(shù)l=1.509407顧客在隊列中平均時間wq=10.645217顧客在系統(tǒng)中平均時間w=3.600372(2)輸入數(shù)據(jù)為:MIAT=10,MSVT=3,SIGMA=1,TIME=100計算結(jié)果為:平均到達間隔時間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到當前時間為止離開的顧客數(shù)nd=9.000000平均服務時間amts=2.909301平均到達間隔時間amta=11.269994隊列中平均顧客數(shù)lq=0.682092系統(tǒng)中平均顧客數(shù)l=0.924297顧客在隊列中平均時間wq=8.193123顧客在系統(tǒng)中平均時間w=2.863684(3)輸入數(shù)據(jù)為:MIAT=10,MSVT=30,SIGMA=2,TIME=100計算結(jié)果為:平均到達間隔時間miat=10.000000平均服務時間msvt=30.000000服務時間標準差sigma=2.000000仿真停止時間time

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論