数模(8)——排队论模型
生活随笔
收集整理的這篇文章主要介紹了
数模(8)——排队论模型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原創為b站視頻:https://www.bilibili.com/video/av20238704
MM1排隊系統:
MMS模型
MMS排隊模型程序(S=1時即為MM1排隊模型)
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)MM1模型結果的直觀圖顯示:
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 %其等待時間為 02009.1516%PROGRAMLANGUAGEPROGRAMLANGUAGE events(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;結果:
總結
以上是生活随笔為你收集整理的数模(8)——排队论模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ZigBee协议栈的串口实验
- 下一篇: 服务器主板电池的电压不稳定怎么办,轻松解