資源描述:
《排隊(duì)系統(tǒng)仿真 包含c》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、排隊(duì)系統(tǒng)仿真實(shí)驗(yàn)1.實(shí)驗(yàn)?zāi)康碾x散事件系統(tǒng)大量存在于現(xiàn)實(shí)生活中。離散事件系統(tǒng)往往是隨機(jī)的,具有復(fù)雜的變化關(guān)系,難以用常規(guī)的微分方程、差分方程等模型來描述,計(jì)算機(jī)仿真技術(shù)是解決這類問題的有效手段。排隊(duì)系統(tǒng)是一種非常重要的離散事件系統(tǒng),也是最早研究的離散事件系統(tǒng)。本實(shí)驗(yàn)通過設(shè)計(jì)一種最簡(jiǎn)單的單服務(wù)臺(tái)排隊(duì)系統(tǒng)仿真程序,深入理解排隊(duì)系統(tǒng)的建模與仿真方法,掌握排隊(duì)系統(tǒng)仿真的基本步驟和程序設(shè)計(jì)技術(shù),了解離散事件系統(tǒng)仿真的一般原理。2.排隊(duì)系統(tǒng)仿真程序功能模擬一個(gè)單服務(wù)臺(tái)單隊(duì)列排隊(duì)系統(tǒng)的運(yùn)行過程,完成一定數(shù)量活動(dòng)實(shí)體的服務(wù)過程,輸出排隊(duì)系統(tǒng)的常用統(tǒng)計(jì)指標(biāo)。仿真運(yùn)行
2、時(shí)間(可由活動(dòng)實(shí)體數(shù)確定)、活動(dòng)實(shí)體到達(dá)平均時(shí)間間隔、平均服務(wù)時(shí)間作為參數(shù)在程序運(yùn)行時(shí)輸入。3.關(guān)鍵技術(shù)(1)隨機(jī)數(shù)發(fā)生器——乘同余法遞推公式:程序中采用:(2)隨機(jī)變量的產(chǎn)生——變換抽樣法指數(shù)分布隨機(jī)變量的產(chǎn)生:其中,λ為到達(dá)(或服務(wù))速率,1/λ到達(dá)時(shí)間平均間隔(或平均服務(wù)時(shí)間),u為隨機(jī)數(shù)。(3)排隊(duì)、到達(dá)、服務(wù)模式排隊(duì)規(guī)則:先到先服務(wù)(FIFO);到達(dá)模式:泊松到達(dá),即相鄰兩個(gè)顧客到達(dá)的時(shí)間間隔服從指數(shù)分布;服務(wù)模式:服務(wù)臺(tái)為活動(dòng)實(shí)體提供服務(wù)的時(shí)間是隨機(jī)的,服從指數(shù)分布。(4)常用統(tǒng)計(jì)性能指標(biāo)計(jì)算平均延誤時(shí)間:其中,Di為第i個(gè)活動(dòng)實(shí)體在
3、隊(duì)列中耽誤的時(shí)間。平均滯留時(shí)間:其中,Wi為第i個(gè)活動(dòng)實(shí)體在系統(tǒng)中滯留的時(shí)間,Si為第i個(gè)活動(dòng)實(shí)體接受服務(wù)臺(tái)服務(wù)的時(shí)間。平均隊(duì)長(zhǎng):其中,Q(t)為t時(shí)刻系統(tǒng)中隊(duì)列的長(zhǎng)度。平均實(shí)體數(shù):其中,L(t)為t時(shí)刻系統(tǒng)中的活動(dòng)實(shí)體數(shù),Q(t)為t時(shí)刻隊(duì)列的長(zhǎng)度,S(t)為t時(shí)刻接受服務(wù)臺(tái)服務(wù)的活動(dòng)實(shí)體數(shù)。4.程序架構(gòu)(1)基本模塊voidinitialize(void);/*變量初始化*/voidtiming(void);/*時(shí)間調(diào)度*/voidarrive(void);/*到達(dá)事件處理*/voiddepart(void);/*離開事件處理*/voidre
4、port(void);/*統(tǒng)計(jì)量輸出*/voidupdate_time_avg_stats(void);/*統(tǒng)計(jì)量的更新*/floatexpon(floatmean);/*指數(shù)分布隨機(jī)變量的變換抽樣法*/(2)程序流程(main()函數(shù))(3)到達(dá)事件處理流程(arrive()函數(shù))(4)離開事件處理流程(depart()函數(shù))5.程序設(shè)計(jì)(1)定義#include#include/*#include"lcgrand.h"Headerfileforrandom-numbergenerator.*/#defineQ
5、_LIMIT100/*Limitonqueuelength.*/#defineBUSY1/*Mnemonicsforserver'sbeingbusy*/#defineIDLE0/*andidle.*/intnext_event_type,num_custs_delayed,num_delays_required,num_events,num_in_q,server_status;floatarea_num_in_q,area_server_status,mean_interarrival,mean_service,sim_time,time_a
6、rrival[Q_LIMIT+1],time_last_event,time_next_event[3],total_of_delays;FILE*infile,*outfile;floatlcgrand(intstream);voidinitialize(void);voidtiming(void);voidarrive(void);voiddepart(void);voidreport(void);voidupdate_time_avg_stats(void);floatexpon(floatmean);(2)主程序main()/*Mainf
7、unction.*/{/*Openinputandoutputfiles.*/infile=fopen("mm1.in","r");outfile=fopen("mm1.out","w");/*Specifythenumberofeventsforthetimingfunction.*/num_events=2;/*Readinputparameters.*/fscanf(infile,"%f%f%d",&mean_interarrival,&mean_service,&num_delays_required);/*Writereporthead
8、ingandinputparameters.*/fprintf(outfile,"Single-serverqueueingsystem