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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

用Matlab模拟一个缓冲区大小为10的随机排队系统

發(fā)布時間:2025/4/5 windows 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Matlab模拟一个缓冲区大小为10的随机排队系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

function p=queue(mu,lamda)
customer=zeros(1000,6); ? ? ? ? ? ? ? ? ? ? ? ? %每一行代表是一位顧客,每一行的每一列所代表的意思如下所示
NO=1; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? %/*編號*/
intime=2; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? %/*進入隊列時間*/
intertime=3; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%/*他的下一個人到來的時間間隔*/
starttime=4; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%/*開始接受服務時間*/
durtime=5; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%/*服務所需時間*/
leavetime=6; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%/*離開隊列的時間*/
flag=1; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? %初始化flag=1,當flag=1時,采用泊松和指數分布,當flag=0時,采用平均和瑞利分布

%*********************************InitQueue();%初始化隊列***********************

queue_customernum=0; ? ? ? ? ? ? ? ? ? ? ? ? ? ?%/*隊列中接受服務的顧客數*/
curtime=1; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%/*當前時間*/
first=0; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%/*當前接受服務的顧客的編號*/
last=0; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? %/*當前隊列最后一位顧客的編號*/
totalnum=0; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? %/*進入隊列的總的顧客數*/
cusnum=zeros(1,100); ? ? ? ? ? ? ? ? ? ? ? ? ? ?%/*存放觀察到的隊列中接受服務的顧客數*/
p=zeros(1,11); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%/*存放觀察到的隊列中接受服務的某個顧客數的出現的次數*/

%********************************customer_in();%顧客進入隊列*******************

if queue_customernum~=10
? ? totalnum=totalnum+1;
?? ?queue_customernum=queue_customernum+1;
? ? customer(totalnum,NO)=totalnum;
? ? customer(totalnum,intime)=curtime; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%/*記錄顧客進入時間*/
? ??
? ? if flag==1
? ? ? ? customer(totalnum,durtime)=poissrnd(mu,1,1); ? ? ? ? ? ? ? ? ? ? ? %/*產生隨機數記錄顧客服務所需時間*/ 泊松分布
? ? ? ? customer(totalnum,intertime)=round(exprnd(lamda,1,1)*10); ? ? ? ? ?%/*此顧客的下一個顧客來的時間間隔*/ 指數分布
? ? else
? ? ? ? customer(totalnum,durtime)=unidrnd(mu,1,1); ? ? ? ? ? ? ? ? ? ? ? ? %/*產生隨機數記錄顧客服務所需時間*/ 均勻分布
? ? ? ? customer(totalnum,intertime)=round(raylrnd(lamda,1,1)*10); ? ? ? ? ?%/*此顧客的下一個顧客來的時間間隔*/ 瑞利分布
? ? end
?? ?last=last+1;
else
? ? customer(totalnum,intertime)=customer(totalnum,intertime)+1;
end

%*****************************customer_serve();%顧客接受服務********************

first=first+1;
customer(first,starttime)=curtime; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%/*得出開始服務時間和離開時間*/
customer(first,leavetime)=customer(first,durtime)+curtime;

%**************************************************************************

while curtime<=1000 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? %/*當前時間屬于營業(yè)時間,允許顧客進入*/
? ? ?curtime=curtime+1;
? ? ?if customer(first,leavetime)==curtime
?? ??? ?%customer_leave();%顧客離開隊列
? ? ? ? queue_customernum=queue_customernum-1;?
? ? ? ??
?? ??? ?%customer_serve();%顧客接受服務
? ? ? ? first=first+1;
? ? ? ? customer(first,starttime)=curtime; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%/*得出開始服務時間和離開時間*/
? ? ? ? customer(first,leavetime)=customer(first,durtime)+curtime;
? ? ? ??
? ? ?end
? ? ?
? ? ?if (customer(last,intime)+customer(last,intertime))==curtime
?? ??? ?%customer_in(); %顧客進入隊列 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? %/*判斷是否有人符合要進的條件*/
? ? ? ? if queue_customernum~=10
? ? ? ? ? ? ? ? totalnum=totalnum+1;
? ? ? ? ? ? ? ? queue_customernum=queue_customernum+1;
? ? ? ? ? ? ? ? customer(totalnum,NO)=totalnum;
? ? ? ? ? ? ? ? customer(totalnum,intime)=curtime; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%/*記錄顧客進入時間*/
? ? ? ? ? ? ? ? if flag==1
? ? ? ? ? ? ? ? ? ? customer(totalnum,durtime)=poissrnd(mu,1,1); ? ? ? ? ? ? ? ? ? %/*產生隨機數記錄顧客服務所需時間*/ 泊松分布
? ? ? ? ? ? ? ? ? ? customer(totalnum,intertime)=round(exprnd(lamda,1,1)*10); ? ? ?%/*此顧客的下一個顧客來的時間間隔*/ 指數分布
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? customer(totalnum,durtime)=unidrnd(mu,1,1); ? ? ? ? ? ? ? ? ? ? %/*產生隨機數記錄顧客服務所需時間*/ 均勻分布
? ? ? ? ? ? ? ? ? ? customer(totalnum,intertime)=round(raylrnd(lamda,1,1)*10); ? ? ?%/*此顧客的下一個顧客來的時間間隔*/ 瑞利分布
? ? ? ? ? ? ? ? end
? ? ? ? ? ? ? ? last=last+1;
? ? ? ? else
? ? ? ? ? ? customer(totalnum,intertime)=customer(totalnum,intertime)+1;
? ? ? ? end
? ? ? ??
? ? ?end
? ? ?
?? ? if rem(curtime,10)==0
?? ??? ? cusnum(1,curtime/10)=queue_customernum;
? ? ?end
end

%************************probability();%計算隊列中顧客數為(0,1,。。。,10)時的概率**********

? for i=1:1:100
?? ?if cusnum(1,i)==0
? ? ? ? p(1,1)=p(1,1)+1;
? ? elseif cusnum(1,i)==1
?? ??? ?p(1,2)=p(1,2)+1;?? ?
? ? elseif cusnum(1,i)==2
?? ??? ?p(1,3)=p(1,3)+1;
? ? elseif cusnum(1,i)==3
?? ??? ?p(1,4)=p(1,4)+1;
? ? elseif cusnum(1,i)==4
?? ??? ?p(1,5)=p(1,5)+1;
? ? elseif cusnum(1,i)==5
?? ??? ?p(1,6)=p(1,6)+1;
? ? elseif cusnum(1,i)==6
?? ??? ?p(1,7)=p(1,7)+1;
? ? elseif cusnum(1,i)==7
?? ??? ?p(1,8)=p(1,8)+1;
? ? elseif cusnum(1,i)==8
?? ??? ?p(1,9)=p(1,9)+1;
? ? elseif cusnum(1,i)==9
?? ??? ?p(1,10)=p(1,10)+1;
? ? elseif cusnum(1,i)==10
?? ??? ?p(1,11)=p(1,11)+1;
? ? end
? end
??
%***************************list();%打印結果****************************
? for j=1:1:11
? ? p(1,j)=p(1,j)/100;
? end
??
? D118

?

總結

以上是生活随笔為你收集整理的用Matlab模拟一个缓冲区大小为10的随机排队系统的全部內容,希望文章能夠幫你解決所遇到的問題。

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