




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、系統(tǒng)模擬實驗的三個案例實驗案例 趕上火車的概率 1實驗案例 1.1 趕上火車的概率 1.1.1 問題描述 如圖,一列火車從A站開往B站,某人每天趕往B站上這趟火車。他已了解到: (1) 火車從A站到B站的運行時間是均值為30分鐘,標(biāo)準(zhǔn)差為2分鐘的隨機(jī)變量; (2) 火車在下午大約1點離開A站,離開時刻的頻率分布如下: 出發(fā)時刻 午后1:00 午后1:05 午后1:10 頻率 0.7 0.2 0.1 &
2、#160; 此人到達(dá)B站的時刻頻率分布為: 時刻 午后1:28 午后1:30 午后1:32 午后1:34 頻率 0.3 0.4 0.2 0.1 問他能趕上火車的概率是多少? 1.1.2 變量說明 :火車從A站出發(fā)的時刻; :火車從A站到B站的運行時間;單位:分鐘 :他到達(dá)B站的時刻 1.1.3 問題分析與假設(shè) 此問題包含多個隨機(jī)因素。 這里假設(shè),都是隨機(jī)變量,其中服從正態(tài)分布。 1.1.4 模型建立 很顯然,他能及時趕上火車的條件是:。為了簡化計算,將下午1點記為初始時刻。
3、和的分布律如下: /min 0 5 10 0.7 0.2 0.1 /min 28 30 32 34 0.3 0.4 0.2 0.1 為了模擬隨機(jī)變量。如果為在均勻分布的隨機(jī)數(shù),為了模擬隨機(jī)變量,可以通過如下方法。 ,。 其中,和分別用來模擬隨機(jī)變量和。 1.1.5 模擬算法 變量說明: k 臨時變量,存儲當(dāng)前累計模擬次數(shù) count 存儲趕上火車的次數(shù) 第 1 步 輸入模擬次數(shù)n 第 2 步
4、0; k=1,count=0 第 3 步 當(dāng)k<=n,執(zhí)行第4步,否則執(zhí)行第12步 第 4 步 生成均勻分布隨機(jī)數(shù)賦給r 第 5 步 由r及公式確定T1模擬火車出發(fā)時刻 第 6 步 生成均勻分布隨機(jī)數(shù)賦給r; 第 7 步 &
5、#160; 由r及公式確定T3模擬人達(dá)到時刻 第 8 步 生成正態(tài)分布隨機(jī)數(shù)T2模擬火車運行時間 第 9 步 IF T1+T2 > T3, count=count+1,END 第 10 步 k = k + 1 第 11 步 執(zhí)行第3步 第 12 步 輸出趕上火車頻率p=count/n 1.1.6 模擬程序 %sim_train
6、.m total=input('輸入模擬次數(shù):'); count=0; for i=1:total, %模擬隨機(jī)變量t1(火車從A站出發(fā)的時刻) rt1=rand; if rt1<0.7 T1=0; elseif rt1>=0.7 & rt1<0.9
7、60; T1=5; else T1=10; end %模擬隨機(jī)變量t2(火車的運行時間) T2=30+randn*2; %模擬隨機(jī)變量t3(他到達(dá)B站的時刻) rt3=rand; if rt3<0.3&
8、#160; T3=28; elseif rt3>=0.3 & rt3<0.7 T3=30; elseif rt3>=0.7 & rt3<0.9 T3=32; else
9、0; T3=34; end if T3 < T1 + T2,%趕上了 count=count+1; end end%for prob=count/total 1.1.7 模擬結(jié)果 命令行中輸入以下語句: sim_trai
10、n 運行結(jié)果輸出: 輸入模擬次數(shù):100 prob = 0.6302 此次運行結(jié)果顯示趕上火車的近似概率為0.6左右。下面列表給出多次運行模擬程序的結(jié)果。 序號 模擬次數(shù) 近似概率p 1 500 0.6280 2 500 0.6920 3 1000 0.6530 4 1000 0.6490 5 5000 0.6260 6 5000 0.6288 1.1.8 評價與改進(jìn)方向 為了計算趕上火車的概率,本文采用了隨機(jī)系統(tǒng)模擬的方法。如果能夠從模型出發(fā),對趕上火車的概率進(jìn)行近似計算,
11、然后與模擬結(jié)果進(jìn)行對比,這樣模擬會更有說明力。 1.1.9 思考題 (1) 請思考用其它方法計算趕上火車的概率或近似概率。 (2) 如果要使得他趕上火車的概率大于95%,你有什么辦法?結(jié)合上面的數(shù)學(xué)模型及模擬程序來思考。 (3) 通過該問題的建模求解,你能歸納出一般系統(tǒng)模擬的方法步驟么? 實驗案例 理發(fā)店模擬 1
12、160; 實驗案例 1.1 案例:理發(fā)店模擬 例子:一個理發(fā)店有兩位服務(wù)員A和B,顧客們隨機(jī)到達(dá)店內(nèi),其中60的顧客僅需剪發(fā),每位花5分鐘時間,另外40顧客既要剪發(fā)又要洗發(fā),每位用時8分鐘。 理發(fā)店是個含有多種隨機(jī)因素的系統(tǒng),請對該系統(tǒng)進(jìn)行模擬,并對其進(jìn)行評判。(準(zhǔn)備怎么做)可供參考內(nèi)容“排隊論”,“系統(tǒng)模擬”,“離散系統(tǒng)模擬”,“事件調(diào)度法” 1.1.1 問題分析 理發(fā)店系統(tǒng)包含諸多隨機(jī)因素,為了對其進(jìn)行評判就是要研究其運行效率,從理發(fā)店自身利益來說,要看服務(wù)員工作負(fù)荷是否合理,是否需要增加員工等考慮。從顧客角度講,還要
13、看顧客的等待時間,顧客的等待隊長,如等待時間過長或者等待的人過多,則顧客會離開。理發(fā)店系統(tǒng)是一個典型的排隊系統(tǒng),可以用排隊論有關(guān)知識來研究。 1.1.2 模型假設(shè) 1 60的顧客只需剪發(fā),40的顧客既要剪發(fā),又要洗發(fā); 2 每個服務(wù)員剪發(fā)需要的時間均為5分鐘,既剪發(fā)又洗發(fā)則花8分鐘; 3
14、 顧客的到達(dá)間隔時間服從指數(shù)分布;4 服務(wù)中服務(wù)員不休息。1.1.3 變量說明 u:剪發(fā)時間(單位:分鐘),u=5m; v: 既剪發(fā)又理發(fā)花的時間(單位:分鐘),v=8m; T: 顧客到達(dá)的間隔時間,是隨機(jī)變量,服從參數(shù)為 的指數(shù)分布,(單位:分鐘)T0:顧客到達(dá)的平均間隔時間(單位:秒
15、),T0 ; 1.1.4 模型建立 由于該系統(tǒng)包含諸多隨機(jī)因素,很難給出解析的結(jié)果,因此可以借助計算機(jī)模擬對該系統(tǒng)進(jìn)行模擬??紤]一般理發(fā)店的工作模式,一般是上午9:00開始營業(yè),晚上10:00左右結(jié)束,且一般是連續(xù)工作的,因此一般營業(yè)時間為13小時左右。 這里以每天運行12小時為例,進(jìn)行模擬。 這里假定顧客到達(dá)的平均間隔時間T0服從均值3分鐘的指數(shù)分布, 則有3小時到達(dá)人數(shù)約為 人,6小時到達(dá)人數(shù)約為 人,10小時到達(dá)人數(shù)約為 人,這里模擬顧客到達(dá)數(shù)為60人的情況。 (如何選擇模擬的總?cè)藬?shù)或模擬總時間)1.1.5
16、; 系統(tǒng)模擬 根據(jù)系統(tǒng)模擬的一般方法,需要考慮系統(tǒng)的如下數(shù)據(jù)、參數(shù)。1. 狀態(tài)(變量) (1) 等待服務(wù)的顧客數(shù);(2) A 是否正在服務(wù); (3) B 是否正在服務(wù); 2. 實體:兩名服務(wù)員、顧客們3.
17、60; 事件: (1) 一名新顧客的到達(dá);(2) A 開始服務(wù); (3) A 結(jié)束服務(wù); (4) B 開始服務(wù); (5) B 結(jié)束服務(wù); 4. 活動:(1) 顧客排隊時間(2) 顧客們到達(dá)的間隔時間(3) A 的
18、服務(wù)時間 (4) B 的服務(wù)時間; 在系統(tǒng)模擬時,為了研究系統(tǒng)的整體情況,這里考慮顧客到達(dá)后不離開,且等待隊長不限。要考慮如果服務(wù)員均空閑時,顧客先選擇誰服務(wù)?要考慮模擬的時間設(shè)置還有顧客數(shù)目。模擬終止條件是根據(jù)顧客數(shù)目還是根據(jù)營業(yè)時間終止? 1.1.6 計算機(jī)模擬算法設(shè)計 自行設(shè)計finished=0; 初始化運行時鐘 while finished=0 if
19、160; 產(chǎn)生的顧客數(shù)不到規(guī)定數(shù)目時 then, 產(chǎn)生該顧客的有關(guān)數(shù)據(jù); 將顧客加入等待隊列; else 運行時鐘繼續(xù); endif 處理服務(wù)員的狀態(tài)(包括工作狀態(tài),空閑時間); 獲得服務(wù)員的服務(wù)優(yōu)先順序; 根據(jù)服務(wù)員優(yōu)先順序從等待隊列中安排服務(wù); endwhile 有無參考算法? 離散系統(tǒng)仿真算法:事件調(diào)度法 1.1.7 計算機(jī)模擬程序 顧客到達(dá)的間隔時間T的計算機(jī)產(chǎn)生方法,利用T=, %理發(fā)店系統(tǒng)的模擬(案例分析之一) %關(guān)鍵詞:面向事件的計算機(jī)模擬技術(shù) clear all curclock=0;%當(dāng)前時刻,動態(tài)變
20、化 totalcustomer=0;%總共服務(wù)的顧客數(shù) numsrv=2; srvstatus=zeros(numsrv,5);%服務(wù)員有關(guān)數(shù)據(jù) %srvstatus 第1列:服務(wù)狀態(tài)(0空閑,1正在服務(wù));第2列:當(dāng)前服務(wù)顧客編號; % 第3列:當(dāng)前服務(wù)結(jié)束時刻;第4列:服務(wù)員空閑時間;第5列:服務(wù)的顧客總數(shù) endtime =0;%結(jié)束時間 waiting=;%等待隊列數(shù)據(jù) %waiting 第1列:顧客編號;第2列:顧客到達(dá)時刻;第3列:顧客開始接受服務(wù)時刻; % 第4列:接受服務(wù)時間;
21、第5列:顧客結(jié)束服務(wù)時刻;第6列:間隔時間 cur=zeros(1,6);%當(dāng)前產(chǎn)生顧客的數(shù)據(jù),對應(yīng)關(guān)系同waiting avgwaitlen=;%平均等待隊長 avgwaittime =;% 平均等待時間 ujiange=5;%平均間隔時間 finished=0; numsimucustumer=yesinput('輸入等待模擬的顧客數(shù):',10,10 1000); while finished=0, if totalcustomer < numsimucustumer
22、 %產(chǎn)生一個顧客的到達(dá)及其有關(guān)性質(zhì)的數(shù)據(jù) totalcustomer = totalcustomer+1; jiange= -log(rand)*ujiange;%與上一個顧客的到達(dá)的間隔時間 curclock = curclock + jiange;
23、160; cur(1)= totalcustomer ;% 第1列:顧客編號 cur(2) = curclock;%第2列:顧客到達(dá)時刻 cur(6) = jiange; 第6列:間隔時間 %下面產(chǎn)生接受服務(wù)時間(可改進(jìn)模型) if rand<0.6, %產(chǎn)生顧客有關(guān)性質(zhì):這里是產(chǎn)生接受服務(wù)時間 cur(4) = 5; &
24、#160; else cur(4) = 8; end %放入等待隊列 if isempty(waiting), waiting= cur;
25、60; else m,n=size(waiting); waiting(m+1,:)= cur; end else curclock = curclock + (-log(rand)*ujiange);
26、end%if totalcustomer< %分配等待隊列(看是否有服務(wù)員空閑,如果有則分配;否則繼續(xù)執(zhí)行) %處理服務(wù)員的服務(wù)狀態(tài) for i=1:numsrv, if srvstatus(i,1)=1 & srvstatus(i,3) <= curclock, srvstatus(i
27、,1)=0;%設(shè)置為空閑狀態(tài) srvstatus(i,4)= curclock-srvstatus(i,3);%目前已經(jīng)空閑的時間 elseif srvstatus(i,1)=1 & srvstatus(i,3) > curclock, srvstatus(i,4)= 0;%沒有休息(正在忙)
28、0; else srvstatus(i,4)= curclock-srvstatus(i,3);%目前已經(jīng)空閑的時間 end end %處理服務(wù)員服務(wù)的先后順序(依據(jù)空閑時間)(精細(xì)處理) tmp=srvstatus(:,4); for i=1:num
29、srv, value,id=max(tmp); b(i)=id; tmp(id)=0;%已經(jīng)排序了 end %此時等待隊列必然不為空 for j=1:numsrv,
30、; i=b(j);%確定服務(wù)員的序號 if(srvstatus(i,1)=0) %找一個顧客開始服務(wù),同時計算該顧客什么時候接受服務(wù),結(jié)束服務(wù); m,n=size(waiting); if m=0,
31、0; break; end if waiting(1,5)=0,%還沒有開始接受服務(wù)
32、160; waiting(1,3)= curclock; waiting(1,5)= waiting(1,3)+waiting(1,4);%結(jié)束時刻 srvstatus(i,1)=1;%設(shè)置為忙狀態(tài)
33、 srvstatus(i,2)=waiting(1,1);%顧客編號 srvstatus(i,3)= waiting(1,5);%結(jié)束時刻 srvstatus(i,5)=srvstatus(i,5)+1;%又服務(wù)了一個顧客
34、; %計算等待時間 avgwaittime(end+1) = waiting(1,3)-waiting(1,2); &
35、#160; disp(sprintf('間隔時間(%8.2f) 顧客編號:%5d 接受服務(wù)員(%4d)服務(wù)(到達(dá)時刻%10.2f)',waiting(1,6),waiting(1,1),i,waiting(1,2) endtime=max(endtime,waiting(1,5) waiti
36、ng(1,:)=;%從等待隊列中離開 end end%if end%for m,n=size(waiting); %計算隊長(這里
37、的計算式子可以參考排隊論有關(guān)術(shù)語進(jìn)行確定) if totalcustomer < numsimucustumer avgwaitlen(end+1)=m; end if sum(srvstatus(:,5)>=numsimucustumer,%隊列為空,結(jié)束 finished=1; end end%while
38、0; disp('服務(wù)顧客數(shù):') disp(srvstatus(:,5)') disp('平均隊長'); disp(mean(avgwaitlen); disp('運行時間(分鐘,小時)'); disp(sprintf('%8.f%8.f',curclock,curclock/60); disp('平均等待時間(分鐘)'); disp(mean(avgwaittime ); disp('結(jié)束時間(分鐘)'); disp(endtime ); figure his
39、t(avgwaitlen) title('平均隊長') figure hist(avgwaittime) title('平均等待時間'); 1.1.8 思考題 請運行模擬程序,并分析運行結(jié)果。 實驗案例 一個修理廠的模擬 1 實驗案例 1.1 案例:一個修理廠的模擬 1.1.1
40、60; 問題描述 某修理廠設(shè)有3個停車位置,其中一個位置供正在修理的汽車停放?,F(xiàn)以一天為一個時段,每天最多修好一輛車,每天到達(dá)修理站的汽車數(shù)有如下概率分布: 到達(dá)數(shù) 0 1 2 概率 06 02 02 假定在一個時段內(nèi)一輛汽車能夠修好的概率為0.7,本時段內(nèi)未能完成修理的汽車于正在等待修理的汽車一起進(jìn)入下一時段。試問:該停車廠有無必要增加停車位置,并說明理由。 1.1.2 模擬模型 這種排隊論方面的問題采用固定時間增量法模擬。模擬以一天為一個時段,模擬縱時間
41、最好在1000天以上。 模擬汽車到達(dá)數(shù)量,根據(jù)概率分布:產(chǎn)生在0,1上均勻分布的隨機(jī)數(shù)t,如果,則認(rèn)為當(dāng)天到達(dá)的車輛數(shù)為0輛;如果,則認(rèn)為當(dāng)天到達(dá)的車輛數(shù)為1輛,如果,則認(rèn)為當(dāng)天到達(dá)的車輛數(shù)為2輛。 模擬修理情況:由于一天最多修好一輛,而一個時段內(nèi)一輛汽車修好的概率為0.7,則模擬每兩車的修理情況,如果這些車所能修好數(shù)目大于等于1輛,則以當(dāng)天修好1輛計。 1.1.3 模擬程序
42、 本模擬程序編寫了一個主函數(shù)queue,另外在函數(shù)queue中編寫了2個子函數(shù): getcome:模擬車輛到來情況,返回當(dāng)天到來的車輛數(shù)目 getrepaired:模擬修理情況,返回修好的車輛數(shù)目 整個模擬程序如下:(2005/6/6新版本) function queue %2005-6-6 %排隊模擬主程序 %排隊問題模擬 % numdays=input('請輸入模擬天數(shù):') numstay=0;%假定最初修理站還沒有待修理的汽車 LEN=6;%定義常量 matfrequence=zeros(1,LEN);%第i個元素表示當(dāng)
43、天末還有i-1輛車在沒有修好的時段頻數(shù) leave_norepair=0;%存儲來到,但沒有停車位置而離開的車輛數(shù) for days=1:numdays%主循環(huán),模擬numdays個時段 temp= getcome; if numstay + temp>3 , leave_norepair = leave_norepair + (numstay + temp - 3); end
44、60; %numcome=numstay+getcome;%2004-10-10:這里有問題,受限制與停車位置數(shù)量 numcome=min(3,numstay + temp);% %頭一天還沒有修好的車輛數(shù)當(dāng)天新到來的車輛數(shù) %numstay表示當(dāng)天末還沒有修理好的車輛數(shù)目 numstay=max(0,numcome - getrepaired(numcome);% matfrequence(numstay+1)=matfrequence(numstay+1) + 1 ; end matfrequence prob=matfrequence/numdays disp(sprintf('平均每天夜里停放在修理站的車輛數(shù)=%4.2f',. sum(matfrequence/numdays.*0:LEN-1) %sprintf
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)戶售糧合同范例
- 養(yǎng)豬土建合同范例
- 義烏模具合同范例
- 代理購買社保合同范例
- 出售地塊合同范例
- 企業(yè)空調(diào)購買合同范例
- 農(nóng)戶馬鈴薯訂單合同范例
- ktv家具采購合同范例
- 農(nóng)村住房交易合同范例
- 養(yǎng)殖大棚建設(shè)合同范例
- 2024年菠菜種子項目可行性研究報告
- 專題12 職業(yè)夢想 -2023年中考英語作文熱點話題終極預(yù)測
- 食品抽檢核查處置重點安全性指標(biāo)不合格原因分析排查手冊
- 暑托班合同范例
- GB/T 44904-2024售后服務(wù)無理由退貨服務(wù)規(guī)范
- 《導(dǎo)管室的無菌原則》課件
- DBJ52T 088-2018 貴州省建筑樁基設(shè)計與施工技術(shù)規(guī)程
- 部編版二年級下冊語文教材分析、學(xué)情分析(每一課都有-全)
- 行測圖形推理1000題庫帶答案
- 《民間工藝設(shè)計》教學(xué)大綱
- 醫(yī)古文試題完整版本
評論
0/150
提交評論