合肥工業(yè)大學_第1頁
合肥工業(yè)大學_第2頁
合肥工業(yè)大學_第3頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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() /系統(tǒng)初始化子程序float aat;clock=0.0; /置仿真時鐘為.0imevt=0;/假定系統(tǒng)在時間為空閑lqt=0.0;

6、/置以下各統(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=expe nt(miat);fel1=clock+aat; /產生第一次到達,并安排在 FEL()fel2=1.0e+30;/置FEL ()為無窮大,表示系統(tǒng)空閑時,不會發(fā)生離開事件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發(fā)生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;/若服務員空閑,修改系統(tǒng)狀態(tài)并記錄新的顧客的到達時間wkstip=clock;svt=normal(msvt

8、,sigma);/為新到達顧客產生服務時間并安排離開事件fel2=clock+svt;ts=ts+svt;is=is+1.0;/修改累積統(tǒng)計量tle=clock;if(lqtmq)mq=lqt;goto loop3;loop2: lqt=lqt+1.0; /若服務員被占,修改系統(tǒng)狀態(tài),記錄新的顧客到達時間及系統(tǒng)中顧客數ip=lqt+lst;if(ip100) goto loop4;/現設系統(tǒng)容量為人,若超過即給出報告wkstip=clock;b=b+(clock-tle);/修改累積統(tǒng)計量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); /修改累積統(tǒng)計量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,程序循環(huán),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、程序終止/程序循環(huán)執(zhí)行/調用離開事件子程序/判斷仿真是否結束,若未結束繼續(xù)循環(huán)執(zhí)行/當仿真結束時生成報告輸出四、實驗報告1 給出RAN()子程序輸出的10個數據,以及對應的符合正態(tài)分布和指數分 布的隨機數。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.分別輸入下列三組數據,給出相應的計算結果(包括服務員忙度、平均服務時 間、平均到達間隔時間、顧客在系統(tǒng)中平均時間、系統(tǒng)中平均顧客數、隊列中平 均顧客數、停留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系統(tǒng)中平均顧客數1=1.509407顧客在隊列中平均時間 wq=10.645217顧客在系統(tǒng)中平均時間 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系統(tǒng)中平均顧客數1=0.924297顧客在隊列中平均時間 wq=8.193123顧客在系統(tǒng)中平均時間 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. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論