生活随笔
收集整理的這篇文章主要介紹了
排队论及其代码
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 泊松流
- 系統(tǒng)運(yùn)行指標(biāo)
- 單服務(wù)臺(tái)系統(tǒng)
- 多服務(wù)臺(tái)系統(tǒng)
排隊(duì)論(Queuing Theory)也稱隨機(jī)服務(wù)系統(tǒng)理論。
本文主要討論先到先服務(wù) FCFS的情形,顧客流設(shè)定為泊松流(一種非負(fù)隨機(jī)變量的分布)
泊松流
在不相互重疊的時(shí)間區(qū)間內(nèi),到達(dá)顧客數(shù)相互獨(dú)立(無后效性)。對(duì)于充分小的時(shí)間間隔內(nèi),到達(dá)1個(gè)顧客的概率與t無關(guān),僅與時(shí)間間隔成正比(平穩(wěn)性)。對(duì)于充分小的時(shí)間間隔,2個(gè)及以上顧客到達(dá)的概率可忽略不計(jì)(普通性)。
泊松流到達(dá)間隔服從負(fù)指數(shù)分布。
系統(tǒng)運(yùn)行指標(biāo)
為了研究排隊(duì)系統(tǒng)運(yùn)行的效率,估計(jì)其服務(wù)質(zhì)量,確定系統(tǒng)的優(yōu)參數(shù),評(píng)價(jià)系統(tǒng) 的結(jié)構(gòu)是否合理并研究其改進(jìn)的措施,必須確定用以判斷系統(tǒng)運(yùn)行優(yōu)劣的基本數(shù)量指標(biāo),這些數(shù)量指標(biāo)通常是:
平均隊(duì)長:指系統(tǒng)內(nèi)顧客數(shù)(包括正被服務(wù)的顧客與排隊(duì)等待服務(wù)的顧客)的數(shù)學(xué)期望,記作LsL_sLs? 。平均排隊(duì)長:指系統(tǒng)內(nèi)等待服務(wù)的顧客數(shù)的數(shù)學(xué)期望,記作 LqL_qLq? 。平均逗留時(shí)間:顧客在系統(tǒng)內(nèi)逗留時(shí)間(包括排隊(duì)等待的時(shí)間和接受服務(wù)的時(shí)間)的數(shù)學(xué)期望,記作WsW_sWs? 。平均等待時(shí)間:指一個(gè)顧客在排隊(duì)系統(tǒng)中排隊(duì)等待時(shí)間的數(shù)學(xué)期望,記作WqW_qWq? 。平均忙期:指服務(wù)機(jī)構(gòu)連續(xù)繁忙時(shí)間(顧客到達(dá)空閑服務(wù)機(jī)構(gòu)起,到服務(wù)機(jī)構(gòu)再次空閑止的時(shí)間)長度的數(shù)學(xué)期望,記為 TbT_bTb?。
單服務(wù)臺(tái)系統(tǒng)
模型的條件是:
輸入過程――顧客源是無限的,顧客到達(dá)完全是隨機(jī)的,單個(gè)到來,到達(dá)過程服從泊松分布,且是平穩(wěn)的。排隊(duì)規(guī)則――單隊(duì),且隊(duì)長沒有限制,先到先服務(wù);服務(wù)機(jī)構(gòu)――單服務(wù)臺(tái),服務(wù)時(shí)間的長短是隨機(jī)的,服從相同的指數(shù)分布。
clear
clc
%*****************************************
%初始化顧客源
%*****************************************
%總仿真時(shí)間
Total_time = 10;
%隊(duì)列最大長度
N = 10000000000;
%到達(dá)率與服務(wù)率
lambda = 10;
mu = 6;
%平均到達(dá)時(shí)間與平均服務(wù)時(shí)間
arr_mean = 1/lambda;
ser_mean = 1/mu;
arr_num = round(Total_time*lambda*2);
events = [];
%按負(fù)指數(shù)分布產(chǎn)生各顧客達(dá)到時(shí)間間隔
events(1,:) = exprnd(arr_mean,1,arr_num);
%各顧客的到達(dá)時(shí)刻等于時(shí)間間隔的累積和
events(1,:) = cumsum(events(1,:));
%按負(fù)指數(shù)分布產(chǎn)生各顧客服務(wù)時(shí)間
events(2,:) = exprnd(ser_mean,1,arr_num);
%計(jì)算仿真顧客個(gè)數(shù),即到達(dá)時(shí)刻在仿真時(shí)間內(nèi)的顧客數(shù)
len_sim = sum(events(1,:)<= Total_time); %*****************************************
%計(jì)算第 1個(gè)顧客的信息
%*****************************************
%第 1個(gè)顧客進(jìn)入系統(tǒng)后直接接受服務(wù),無需等待
events(3,1) = 0;
%其離開時(shí)刻等于其到達(dá)時(shí)刻與服務(wù)時(shí)間之和
events(4,1) = events(1,1)+events(2,1);
%其肯定被系統(tǒng)接納,此時(shí)系統(tǒng)內(nèi)共有
%1個(gè)顧客,故標(biāo)志位置1
events(5,1) = 1;
%其進(jìn)入系統(tǒng)后,系統(tǒng)內(nèi)已有成員序號(hào)為 1
member = [1];
for i = 2:arr_num
%如果第 i個(gè)顧客的到達(dá)時(shí)間超過了仿真時(shí)間,則跳出循環(huán)
if events(1,i)>Total_time
break;
else
number = sum(events(4,member) > events(1,i)); %如果系統(tǒng)已滿,則系統(tǒng)拒絕第 i個(gè)顧客,其標(biāo)志位置 0
if number >= N+1
events(5,i) = 0;
%如果系統(tǒng)為空,則第 i個(gè)顧客直接接受服務(wù)
else
if number == 0
%其等待時(shí)間為 0events(3,i) = 0;
%其離開時(shí)刻等于到達(dá)時(shí)刻與服務(wù)時(shí)間之和
events(4,i) = events(1,i)+events(2,i);
%其標(biāo)志位置 1
events(5,i) = 1;
member = [member,i];
%如果系統(tǒng)有顧客正在接受服務(wù),且系統(tǒng)等待隊(duì)列未滿,則 第 i個(gè)顧客進(jìn)入系統(tǒng)
else len_mem = length(member);
%其等待時(shí)間等于隊(duì)列中前一個(gè)顧客的離開時(shí)刻減去其到 達(dá)時(shí)刻
events(3,i)=events(4,member(len_mem))-events(1,i);
%其離開時(shí)刻等于隊(duì)列中前一個(gè)顧客的離開時(shí)刻加上其服
%務(wù)時(shí)間
events(4,i)=events(4,member(len_mem))+events(2,i);
%標(biāo)識(shí)位表示其進(jìn)入系統(tǒng)后,系統(tǒng)內(nèi)共有的顧客數(shù)
events(5,i) = number+1;
member = [member,i];
end
end end
end
%仿真結(jié)束時(shí),進(jìn)入系統(tǒng)的總顧客數(shù)
len_mem = length(member); %*****************************************
%輸出結(jié)果
%***************************************** %繪制在仿真時(shí)間內(nèi),進(jìn)入系統(tǒng)的所有顧客的到達(dá)時(shí)刻和離開時(shí)刻曲線圖(stairs:繪制二維階梯圖)
stairs([0 events(1,member)],0:len_mem);
hold on;
stairs([0 events(4,member)],0:len_mem,'.-r');
legend('到達(dá)時(shí)間 ','離開時(shí)間 ');
hold off;
grid on;
%繪制在仿真時(shí)間內(nèi),進(jìn)入系統(tǒng)的所有顧客的停留時(shí)間和等
%待時(shí)間曲線圖(plot:繪制二維線性圖)
figure;
plot(1:len_mem,events(3,member),'r-*',1: len_mem,events(2,member)+events(3,member),'k-');
legend('等待時(shí)間 ','停留時(shí)間 ');
grid on;
多服務(wù)臺(tái)系統(tǒng)
此模型與M/M/1模型不同之處在于有S個(gè)服務(wù)臺(tái),各服務(wù)臺(tái)的工作相互獨(dú)立,服務(wù)率相等,如果顧客到達(dá)時(shí),S個(gè)服務(wù)臺(tái)都忙著,則排成一隊(duì)等待,先到先服務(wù)的單隊(duì)模型。
% 多服務(wù)臺(tái)模型
% 設(shè)顧客單個(gè)到達(dá),相繼到達(dá)時(shí)間間隔服從參數(shù)為λ 的負(fù)指數(shù)分布
% 每個(gè)服務(wù)臺(tái)的服務(wù)時(shí)間相互獨(dú)立,且服從參數(shù)為 μ 的負(fù)指數(shù)分布s=2; % 服務(wù)臺(tái)數(shù)目
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('排隊(duì)等待的平均人數(shù)為%5.2f人\n',Lq)
fprintf('系統(tǒng)內(nèi)的平均人數(shù)為%5.2f人\n',L)
fprintf('平均逗留時(shí)間為%5.2f分鐘\n',W*60)
fprintf('平均等待時(shí)間為%5.2f分種\n',Wq*60)
總結(jié)
以上是生活随笔為你收集整理的排队论及其代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。