日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

排队论及其代码

發布時間:2023/12/14 编程问答 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 排队论及其代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 泊松流
  • 系統運行指標
  • 單服務臺系統
  • 多服務臺系統

排隊論(Queuing Theory)也稱隨機服務系統理論。
本文主要討論先到先服務 FCFS的情形,顧客流設定為泊松流(一種非負隨機變量的分布)

泊松流

  • 在不相互重疊的時間區間內,到達顧客數相互獨立(無后效性)。
  • 對于充分小的時間間隔內,到達1個顧客的概率與t無關,僅與時間間隔成正比(平穩性)。
  • 對于充分小的時間間隔,2個及以上顧客到達的概率可忽略不計(普通性)。
  • 泊松流到達間隔服從負指數分布。

    系統運行指標

    為了研究排隊系統運行的效率,估計其服務質量,確定系統的優參數,評價系統 的結構是否合理并研究其改進的措施,必須確定用以判斷系統運行優劣的基本數量指標,這些數量指標通常是:

  • 平均隊長:指系統內顧客數(包括正被服務的顧客與排隊等待服務的顧客)的數學期望,記作LsL_sLs?
  • 平均排隊長:指系統內等待服務的顧客數的數學期望,記作 LqL_qLq?
  • 平均逗留時間:顧客在系統內逗留時間(包括排隊等待的時間和接受服務的時間)的數學期望,記作WsW_sWs?
  • 平均等待時間:指一個顧客在排隊系統中排隊等待時間的數學期望,記作WqW_qWq?
  • 平均忙期:指服務機構連續繁忙時間(顧客到達空閑服務機構起,到服務機構再次空閑止的時間)長度的數學期望,記為 TbT_bTb?
  • 單服務臺系統

    模型的條件是:

  • 輸入過程――顧客源是無限的,顧客到達完全是隨機的,單個到來,到達過程服從泊松分布,且是平穩的。
  • 排隊規則――單隊,且隊長沒有限制,先到先服務;
  • 服務機構――單服務臺,服務時間的長短是隨機的,服從相同的指數分布。
  • clear clc %***************************************** %初始化顧客源 %***************************************** %總仿真時間 Total_time = 10; %隊列最大長度 N = 10000000000; %到達率與服務率 lambda = 10; mu = 6; %平均到達時間與平均服務時間 arr_mean = 1/lambda; ser_mean = 1/mu; arr_num = round(Total_time*lambda*2); events = []; %按負指數分布產生各顧客達到時間間隔 events(1,:) = exprnd(arr_mean,1,arr_num); %各顧客的到達時刻等于時間間隔的累積和 events(1,:) = cumsum(events(1,:)); %按負指數分布產生各顧客服務時間 events(2,:) = exprnd(ser_mean,1,arr_num); %計算仿真顧客個數,即到達時刻在仿真時間內的顧客數 len_sim = sum(events(1,:)<= Total_time); %***************************************** %計算第 1個顧客的信息 %***************************************** %第 1個顧客進入系統后直接接受服務,無需等待 events(3,1) = 0; %其離開時刻等于其到達時刻與服務時間之和 events(4,1) = events(1,1)+events(2,1); %其肯定被系統接納,此時系統內共有 %1個顧客,故標志位置1 events(5,1) = 1; %其進入系統后,系統內已有成員序號為 1 member = [1]; for i = 2:arr_num %如果第 i個顧客的到達時間超過了仿真時間,則跳出循環 if events(1,i)>Total_time break; else number = sum(events(4,member) > events(1,i)); %如果系統已滿,則系統拒絕第 i個顧客,其標志位置 0 if number >= N+1 events(5,i) = 0; %如果系統為空,則第 i個顧客直接接受服務 else if number == 0 %其等待時間為 0events(3,i) = 0; %其離開時刻等于到達時刻與服務時間之和 events(4,i) = events(1,i)+events(2,i); %其標志位置 1 events(5,i) = 1; member = [member,i]; %如果系統有顧客正在接受服務,且系統等待隊列未滿,則 第 i個顧客進入系統 else len_mem = length(member); %其等待時間等于隊列中前一個顧客的離開時刻減去其到 達時刻 events(3,i)=events(4,member(len_mem))-events(1,i); %其離開時刻等于隊列中前一個顧客的離開時刻加上其服 %務時間 events(4,i)=events(4,member(len_mem))+events(2,i); %標識位表示其進入系統后,系統內共有的顧客數 events(5,i) = number+1; member = [member,i]; end end end end %仿真結束時,進入系統的總顧客數 len_mem = length(member); %***************************************** %輸出結果 %***************************************** %繪制在仿真時間內,進入系統的所有顧客的到達時刻和離開時刻曲線圖(stairs:繪制二維階梯圖) stairs([0 events(1,member)],0:len_mem); hold on; stairs([0 events(4,member)],0:len_mem,'.-r'); legend('到達時間 ','離開時間 '); hold off; grid on; %繪制在仿真時間內,進入系統的所有顧客的停留時間和等 %待時間曲線圖(plot:繪制二維線性圖) figure; plot(1:len_mem,events(3,member),'r-*',1: len_mem,events(2,member)+events(3,member),'k-'); legend('等待時間 ','停留時間 '); grid on;

    多服務臺系統

    此模型與M/M/1模型不同之處在于有S個服務臺,各服務臺的工作相互獨立,服務率相等,如果顧客到達時,S個服務臺都忙著,則排成一隊等待,先到先服務的單隊模型。

    % 多服務臺模型 % 設顧客單個到達,相繼到達時間間隔服從參數為λ 的負指數分布 % 每個服務臺的服務時間相互獨立,且服從參數為 μ 的負指數分布s=2; % 服務臺數目 mu=4; lambda=3; ro=lambda/mu; ros=ro/s; sum1=0;for i=0:(s-1)sum1=sum1+ro.^i/factorial(i); endsum2=ro.^s/factorial(s)/(1-ros);p0=1/(sum1+sum2); p=ro.^s.*p0/factorial(s)/(1-ros); Lq=p.*ros/(1-ros); L=Lq+ro; W=L/lambda; Wq=Lq/lambda;fprintf('排隊等待的平均人數為%5.2f人\n',Lq) fprintf('系統內的平均人數為%5.2f人\n',L) fprintf('平均逗留時間為%5.2f分鐘\n',W*60) fprintf('平均等待時間為%5.2f分種\n',Wq*60)

    總結

    以上是生活随笔為你收集整理的排队论及其代码的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。