多服務臺排隊系統(tǒng)的仿真_第1頁
多服務臺排隊系統(tǒng)的仿真_第2頁
多服務臺排隊系統(tǒng)的仿真_第3頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗 3- 多服務臺排隊系統(tǒng)的仿真姓名: 學號:一、目標任務已知一個系統(tǒng)有 N 個服務員,能力相等,服務時間服從指數分布。顧客的到達 時間間隔服從指數分布。用 Monte-Carlo 仿真,分別求按下列方案的總體平均排隊 時間: M|M|N 。 N 個單通道系統(tǒng)并列,按 1/N 概率分裂到達流。 N 個單通道并列,挑選最短的隊。要求: 給出程序設計的過程。 如果采用固定的N,則要求N>2。 至少取p二和p二兩種強度運行程序。 對結果進行分析。二、編程語言Matlab三、關鍵代碼N = 3; % 服務員人數 r = 6; % 顧客到達流強度 u = 20; % 服務員服務強度按 1.N 的

2、順序循環(huán)排入服務T = 1000000; % 仿真運行時間avg_wait_time= ; %平均等待時間for i=1:100% 模擬排隊函數server_time= , , ; %用來保存服務員下一空閑時間time = 0;%絕對時鐘,初始為 0client_num =0; %顧客總數,初始為 0CRTime = 0;%顧客到達時間間隔ServeTime =0; %顧客服務時間server_id = 0; %當前進入排隊窗口的服務員編號total_wait_time = 0;%系統(tǒng)中到達顧客的總等待時間while 1CRTime =exprnd(1/r); %按指數分布產生顧客到達時間間隔

3、time = time+ CRTime; %更新系統(tǒng)的絕對時鐘if time > Tbreak;endclient_num= client_num + 1; %顧客數加 1ServeTime= exprnd(1/u); %按指數分布產生顧客服務間隔server_id = mod(client_num, N); %員窗口if server_id =0 server_id = N;endif server_time(1, server_id) <= time % 如果當前 server_id 號 服務員空閑,則直接接收服務server_time(1, server_id) = time

4、 + ServeTime; % 服務員下 一空閑時間為當前絕對時鐘加上當前服務時間else % 否則所有服務員都在忙碌,顧客要排隊等候total_wait_time = total_wait_time + server_time(1, server_id) - time; % 顧客排隊等候時間為當前服務員下一空閑時間減去絕對時 鐘server_time(1, server_id) = server_time(1, server_id) + ServeTime;endendavg_wait_time = avg_wait_time, total_wait_time/client_num;end%

5、 計算平均等待時間 mean_avg_wait_time = mean(avg_wait_time);fprintf(' p 二平均等待時間%n', r/u, mean_avg_wait_time); %打印平均等待時間% 繪制每次仿真的平均等待時間和總體平均等待時間線狀圖x = 1:100;%plot(x, avg_wait_time, x, mean_avg_wait_time); scatter(x, avg_wait_time, '.');方案二:N = 3; %服務員人數r = 6; %顧客到達流強度u = 20; %服務員服務強度avg_wait_t

6、ime= ; %平均等待時間for i=1:100% 模擬排隊函數server_time= , , ; %用來保存服務員下一空閑時間time = 0;%絕對時鐘,初始為 0client_num =0; %顧客總數,初始為 0CRTime = 0;%顧客到達時間間隔ServeTime =0; %顧客服務時間server_id = 0; %當前進入排隊窗口的服務員編號total_wait_time = 0;%系統(tǒng)中到達顧客的總等待時間while 1T = 1000; % 仿真運行時間CRTime = exprnd(1/r);%按指數分布產生顧客到達時間間隔time = time + CRTime;

7、更新系統(tǒng)的絕對時鐘endclient_num = client_num + 1; %ServeTime = exprnd(1/u); % server_id = randi(1 N); % if server_time(1, server_id) <= time %顧客數加 1 按指數分布產生顧客服務時間間隔 按 1/N 的概率排入服務員窗口如果當前 server_id 號服務員下服務員空閑,則直接接收服務server_time(1, server_id) = time + ServeTime; %一空閑時間為當前絕對時鐘加上當前服務時間else %否則所有服務員都在忙碌,顧客要排隊等候

8、total_wait_time = total_wait_time + server_time(1, server_id) - time; %顧客排隊等候時間為當前服務員下一空閑時間減去絕對時鐘server_time(1, server_id) = server_time(1, server_id) +ServeTime;endendavg_wait_time = avg_wait_time, total_wait_time/client_num; end打印平均% 計算平均等待時間 mean_avg_wait_time = mean(avg_wait_time);fprintf('

9、p 二平均等待時間%n', r/u, mean_avg_wait_time); %等待時間% 繪制每次仿真的平均等待時間散點圖x = 1:100;scatter(x, avg_wait_time, '.');' 丿 2 £ 方案三:N = 3; %服務員人數r = 6; %顧客到達流強度u = 20; %服務員服務強度avg_wait_time= ; %平均等待時間for i=1:100% 模擬排隊函數server_time= , , ; %用來保存服務員下一空閑時間time = 0;%絕對時鐘,初始為 0client_num =0; %顧客總數,初始

10、為 0CRTime = 0;%顧客到達時間間隔ServeTime =0; %顧客服務時間server_id = 0; %當前進入排隊窗口的服務員編號total_wait_time = 0;%系統(tǒng)中到達顧客的總等待時間while 1T = 1000; % 仿真運行時間CRTime = exprnd(1/r);%按指數分布產生顧客到達時間間隔time = time + CRTime;更新系統(tǒng)的絕對時鐘endclient_num = client_num + 1; %ServeTime = exprnd(1/u); % temp = min(server_time); %顧客數加 1按指數分布產生顧

11、客服務時間間隔尋找排隊時間最短的服務員窗口x, y = find(temp = min(min(server_time);server_id = y; %按隊伍最短排入服務員窗口if server_time(1, server_id) <= time % 如果當前 server_id 號 服務員空閑,則直接接收服務server_time(1, server_id) = time + ServeTime; %服務員下一空閑時間為當前絕對時鐘加上當前服務時間else %否則所有服務員都在忙碌,顧客要排隊等候total_wait_time = total_wait_time + server_

12、time(1, server_id) - time; % 顧客排隊等候時間為當前服務員下一空閑時間減去絕對時 鐘server_time(1, server_id) = server_time(1, server_id) +ServeTime;endendavg_wait_time = avg_wait_time, total_wait_time/client_num; end% 計算平均等待時間 mean_avg_wait_time = mean(avg_wait_time);fprintf(' p 二平均等待時間 %n', r/u, mean_avg_wait_time);

13、%打印平均等待時間% 繪制每次仿真的平均等待時間散點圖x = 1:100;scatter(x, avg_wait_time, '.');四、實驗結果與分析圖 1 方案一 仿真的平均等待時間散點圖圖2 方案一平均等待時間M|M|N1. 輸入參數: 服務員人數 N, 顧客到達流強度 r, 服務員服務強度 u, 仿真 運行時間 T;2. 各變量初始值置 0: 絕對時鐘 time , 服務員下一空閑時刻數組 server_time ( 其中按順序保存每一個服務員的下一空閑時刻) , 顧客總 數 client_num , 顧客到達時間間隔 CRTime, 顧客服務時間 ServeTime

14、, 當前 進入排隊 窗口的服務員編 號 server_id , 系統(tǒng)中顧 客總等待時 間 total_wait_time ;3. 按照指數分布產生下一顧客到達的時間間隔CRTime, time+=CRTime。 若time>T , 輸出 total_wait_time/client_num ;4. Client_num +;5. 按照指數分布產生顧客到達時間間隔 ServeTime;6. 按服務員的順序生成當前服務員的 server_id ;7. 如果當前 server_id 號服務員空閑, 則更新服務員下一空閑時間為當前絕 對時鐘加上當前服務時間并存入 server_time 對應數組

15、。 否則所有服務員都 在忙碌, 顧客要排隊等候, 總的排隊時間加上顧客排隊等候時間, 等候時間 為當前服務員下一空閑時間減去絕對時鐘。 再更新當前服務員下一空閑時間加 上服務時間 ServeTime 。8. 轉到 3;二:圖 3 方案二 仿真的平均等待時間散點圖圖 4 方案二平均等待時間N 個單通道系統(tǒng)并列, 按 1/N 概率分裂到達流1. 輸入參數: 服務員人數 N, 顧客到達流強度 r , 服務員服務強度 u, 仿真 運行時間 T;2. 各變量初始值置 0: 絕對時鐘 time , 服務員下一空閑時刻數組 server_time ( 其中按順序保存每一個服務員的下一空閑時刻) , 顧客總

16、數 client_num , 顧客到達時間間隔 CRTime, 顧客服務時間 ServeTime , 當前 進入 排 隊 窗 口的 服 務 員編 號 server_id , 系 統(tǒng) 中顧 客 總 等待 時 間 total_wait_time ;3. 按照指數分布產生下一顧客到達的時間間隔CRTime, time+=CRTime 。 若time>T , 輸出 total_wait_time/client_num;4. Client_num +5. 按照指數分布產生顧客到達時間間隔 ServeTime ;6. 按 1/N 概率生成當前服務員的 server_id ;7. 如果當前 serve

17、r_id 號服務員空閑, 則更新服務員下一空閑時間為當前絕 對時鐘加上當前服務時間并存入 server_time 對應數組。 否則所有服務員都 在忙碌, 顧客要排隊等候, 總的排隊時間加上顧客排隊等候時間, 等候時間 為當前服務員下一空閑時間減去絕對時鐘。 再更新當前服務員下一空閑時間加 上服務時間 ServeTime 。8. 轉到 3;' 丿 2 £ 方案三:圖 4 方案三 仿真的平均等待時間散點圖圖 5 方案三 仿真的平均等待時間散點圖N 個單通道并列, 挑選最短的隊1. 輸入參數: 服務員人數 N, 顧客到達流強度 r , 服務員服務強度 u, 仿真運 行時間 T;2. 各變量初始值置 0: 絕對時鐘 time , 服務員下一空閑時刻數組 server_time ( 其中按順序保存每一個服務員的下一空閑時刻) , 顧客總數 client_num , 顧 客到達時間間隔 CRTime, 顧客服務時間 ServeTime , 當前進入排隊窗口的服務員 編號 server_id , 系統(tǒng)中顧客總等待時間 total_wait_time ;3. 按照指數分布產生下一顧客到達的時間間隔CRTime, time+=CRTime 。 若time>T , 輸出 total_wait_time/client_nu

溫馨提示

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

評論

0/150

提交評論