資源簡(jiǎn)介
多服務(wù)臺(tái)混合制排隊(duì)論的MATLAB仿真,可以自己設(shè)置服務(wù)臺(tái)數(shù),系統(tǒng)容量,到達(dá)概率,服務(wù)臺(tái)效率等。最后可以輸出系統(tǒng)繁忙概率,平均等待時(shí)間,以及各種圖表
代碼片段和文件信息
%?此腳本用來(lái)一般排隊(duì)論模型的仿真MMSS,版本2.0,功能和1.0一樣,只是是圖表稍微好看點(diǎn)
%?隊(duì)伍只有一隊(duì),服務(wù)臺(tái)有s個(gè),%隊(duì)伍的容量為max_num(不包括正在服務(wù)的,只包括正在等待的)
%?作者:Macer程
clear
clc
%%?初始準(zhǔn)備階段
n=50;???%仿真總?cè)藬?shù)
lambda=9;%單位時(shí)間顧客到達(dá)數(shù)
mu=2;????%單個(gè)服務(wù)臺(tái)單位時(shí)間接待顧客數(shù)
s=4;?????%服務(wù)臺(tái)數(shù)
max_num=10;%隊(duì)伍的容量注意(不包括正在服務(wù)的,只包括正在等待的)
list=zeros(7n);
list(1:)=exprnd(1/lambda1n);%產(chǎn)生指數(shù)分布的顧客到達(dá)時(shí)間間隔
list(1:)=cumsum(list(1:));%list第一行顧客到達(dá)時(shí)間
list(2:)=exprnd(1/mu1n);?%第二行對(duì)顧客的服務(wù)時(shí)間
????????????????????????????%第三行用來(lái)存放等待時(shí)間
????????????????????????????%第四行用來(lái)存放離開(kāi)時(shí)間
????????????????????????????%第五行存放到達(dá)時(shí)整系統(tǒng)的人數(shù)(包括正在被服務(wù)的)
????????????????????????????%第六行存放正在等待中的人數(shù)
????????????????????????????%第7行用來(lái)存放該顧客是否直接離開(kāi),1直接離開(kāi),0排隊(duì)等待
peo=[];???%儲(chǔ)存每個(gè)顧客到達(dá)時(shí)在系統(tǒng)中的總?cè)藬?shù)的序號(hào)
%%?仿真階段
for?i=1:n
????now=find(list(4peo)>list(1i));%顧客到來(lái)時(shí)還在系統(tǒng)中的人的序號(hào)
????peo=peo(now);???????%更新目前系統(tǒng)中的人的序號(hào)
????num=length(now);????%系統(tǒng)中總?cè)藬?shù)
????if?num>=max_num+s???%假如排隊(duì)人超過(guò)了系統(tǒng)的容量,該顧客損失
????????list(2:7i)=[0;0;list(1i);num;num-s;1];
????????continue
????else?if?num????????????list(3:6i)=[0sum(list(1:3i))num0];
????????????peo=[peoi];%把當(dāng)前顧客加入系統(tǒng)
????????else????????????%有人排隊(duì),且排隊(duì)的人=now-s
????????????time=sort(list(4peo));???????????%對(duì)正在系統(tǒng)中的人的離開(kāi)時(shí)間排序
????????????list(3i)=time(end-s+1)-list(1i);%此時(shí),顧客的等待時(shí)間為當(dāng)前系統(tǒng)中倒數(shù)第s個(gè)離開(kāi)的顧客的時(shí)間-該顧客的到達(dá)時(shí)間
????????????list(4:6i)=[sum(list(1:3i));num;num-s];
????????????peo=[peoi];%把當(dāng)前顧客加入系統(tǒng)
????????end
????end
end
%???以上計(jì)算的是每個(gè)顧客到達(dá)時(shí)系統(tǒng)的隊(duì)長(zhǎng),
%%?下面計(jì)算在時(shí)間范圍內(nèi)系統(tǒng)隊(duì)長(zhǎng)的變化
timechange=zeros(42*n);%第一行用來(lái)存時(shí)間,第二行用來(lái)存對(duì)應(yīng)時(shí)間的總?cè)藬?shù),第三行存放對(duì)應(yīng)時(shí)間正在排隊(duì)的人數(shù)第四行表示是否繁忙,1表示繁忙
[timechange(1:)idxs]=sort([list(1:)list(4:)]);%系統(tǒng)隊(duì)長(zhǎng)的變化一定發(fā)生在顧客到來(lái)或離去的時(shí)刻,記這些時(shí)刻為“轉(zhuǎn)變時(shí)刻”
timechange(21)=1;??????%第一個(gè)人到達(dá)的時(shí)候,系統(tǒng)中人數(shù)開(kāi)始變?yōu)?正在排隊(duì)的人=0不繁忙
for?i=2:2*n?????????????%討論每個(gè)“轉(zhuǎn)變時(shí)刻”的人數(shù)變化
????if?idxs(i)<=n???????%當(dāng)這個(gè)時(shí)刻是有人到達(dá)時(shí)
????????timechange(2i)=timechange(2i-1)+1;
????else????????????????%該時(shí)刻是有人離去
????????timechange(2i)=timechange(2i-1)-1;
????end
????if?timechange(2i)
評(píng)論
共有 條評(píng)論