注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mister.Hu(巷里人家)

Go abroad!

 
 
 

日志

 
 
关于我

A campus photograph palyer,an enthusiastic reader,a solitary writer,a future traffic engineer.

网易考拉推荐

过饱和情况下的高峰小时停车场入口排队分析  

2016-02-27 17:12:22|  分类: Senior |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
function [STFre_WN_15,STFre_WT_5,Med_WN,Fre_WN,Med_WT,Fre_WT]=Parking_queuing_MMN
global ENUM;ENUM=7;
global Time;Time=3600;
global CNUM;
global STIME;STIME=155;
global RTIME;RTIME=500;
ks=0;
for kk=10:10:300
    ks=ks+1;
CNUM=kk;
STWN=zeros(round(Time/STIME),RTIME);
STWT=zeros(CNUM+20,RTIME);
STSPN=zeros(round(Time/STIME),RTIME);
for rr=1:RTIME
    SM=zeros(ENUM,1);
    CTIME=round(Time/STIME);
    SPN=zeros(CTIME,1);
    a1=exprnd(Time/CNUM,CNUM,1);
    CSTime=cumsum(a1);
    PM=[];
    for k=1:CTIME
        SPN(k)=length(find(CSTime>=(k-1)*STIME&CSTime<k*STIME));%SPN means the number of pedestrians for every second.
    end
    STSPN(:,rr)=SPN;
    ANUM=sum(SPN);
    STPM=2*ones(ANUM,CTIME);
    for r=1:CTIME
        NoCar=find(SM==0);
        LNo=length(NoCar);
        WNUM=length(find(PM==0));
        A=length(PM);
        if LNo>=SPN(r)+WNUM
            PM(1:A+SPN(r),1)=1;
        else
            PM(A-WNUM+1:A-WNUM+LNo,1)=1;
            PM(A-WNUM+LNo+1:A+SPN(r),1)=0;
        end
        ISTPM=2*ones(ANUM,1);ISTPM(1:length(PM),1)=PM;STPM(:,r)=ISTPM;
    end
    STPM(STPM==2)=NaN;
    Waitnum=sum(STPM==0,1)';
    WaitTime=sum(STPM==0,2);
    WaitTime(length(WaitTime)+1:CNUM+20,1)=NaN;
    STWN(:,rr)=Waitnum;
    STWT(:,rr)=WaitTime;
end
VSTWN=reshape(STWN,numel(STWN),1);
VSTWT=STIME*STWT(~isnan(STWT));
[IFre_WN,Med_WN]=hist(VSTWN,[1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33]);
Fre_WN=IFre_WN/sum(IFre_WN);
Fre_WN_15=1-sum(Fre_WN(1:7));
% a=Med_WN;b=IFre_WN/sum(IFre_WN);
% bar(a,b,'g');
% for ii=1:length(b)
%     b=roundn(b,-4);
%     str=num2str(b(ii)*100);
%     str=[str,'%'];
%     text(a(ii)-0.8,b(ii)+0.01,str);
% end
% hold on;
% values = spcrv([[a(1) a a(end)];[b(1) b b(end)]],3);
% plot(values(1,:),values(2,:),'k');
[IFre_WT,Med_WT]=hist(VSTWT,[0 150 150*2 150*3 150*4 150*5 150*6 150*7]);
Fre_WT=IFre_WT/sum(IFre_WT);
Fre_WT_5=1-sum(Fre_WT(1:6));
% a=Med_WT;b=IFre_WT/sum(IFre_WT);
% bar(a,b,'r');
% set(gca,'XTickLabel',{'0','2.5min','5min','7.5min','10min','12.5min','15min'})
% for ii=1:length(b)
%     %         str=sprintf('%4.2f',b(ii));
%     b=roundn(b,-4);
%     str=num2str(b(ii)*100);
%     str=[str,'%'];
%     text(a(ii)-40,b(ii)+0.01,str);
% end
% hold on;
% values = spcrv([[a(1) a a(end)];[b(1) b b(end)]],3);
% plot(values(1,:),values(2,:),'k');
% [FWT] =Get_FWT_Frequency(VSTWT);
% [FWN] =Get_FWN_Frequency(VSTWN);
STFre_WT_5(ks,1)=kk;
STFre_WT_5(ks,2)=Fre_WT_5;
STFre_WN_15(ks,1)=kk;
STFre_WN_15(ks,2)=Fre_WN_15;
end
end

function [Med_WN,Fre_WN,Fre_WT,Med_WT]=Parking_queuing_NMM1
global ENUM;ENUM=6;
global Time;Time=3600;
global CNUM;CNUM=141;
global STIME;STIME=130;
global RTIME;RTIME=100;
CTIME=round(Time/STIME);
SSTSM=zeros(6,CTIME,RTIME);
SSTQLen=zeros(CNUM+20,RTIME);
for rr=1:RTIME
    SM=zeros(ENUM,1);
    SPN=zeros(CTIME,1);
    a1=exprnd(Time/CNUM,CNUM,1);
    CSTime=cumsum(a1);
    STSM=zeros(6,CTIME);
    for k=1:CTIME
        SPN(k)=length(find(CSTime>=(k-1)*STIME&CSTime<k*STIME));%SPN means the number of pedestrians for every second.
    end
    ANUM=sum(SPN);
    QLen=zeros(ANUM,1);
    for r=1:CTIME
        for k=1:SPN(r)
            [~,B]=sort(SM);
            QLen(sum(SPN(1:r-1))+k,1)=SM(B(1));
            SM(B(1))=SM(B(1))+1;
        end
        STSM(:,r)=SM;
        SM=SM-1;
        SM(SM<0)=0;
    end
    SSTSM(:,:,rr)=STSM;
    QLen(ANUM+1:CNUM+20,1)=NaN;
    SSTQLen(:,rr)=QLen;
end
VSSTSM=reshape(SSTSM,numel(SSTSM),1);
VSSTQLen=STIME*reshape(SSTQLen,numel(SSTQLen),1);
[IFre_WN,Med_WN]=hist(VSSTSM);
Fre_WN=IFre_WN/sum(IFre_WN);
[IFre_WT,Med_WT]=hist(VSSTQLen);
Fre_WT=IFre_WT/sum(IFre_WT);
end

function [FAPW,FP0,FAN,FAAL,FAALT,FAAWT] = MM1N
%%%以下三行为对外接口,不同情况的停车场,仅需要修改以下三行的代码即可
FTime=83;%表示一辆车成功停入的耗时,单位为s
Ikk=100;%表示一小时内到达停车场的车辆数目
Okk=10;%表示一小时内离开停车场的车辆数目
NumE=6;%表示停车场的入口数目
%%%
uu=3600/FTime;%表示一小时内停车场可以服务的车辆数
pp=(Ikk-Okk)/uu;
Ipp=Ikk/uu;%表示单个入口的饱和度
Opp=Okk/uu;%表示单个入口的饱和度
P0=zeros(6,1);AN=zeros(6,1);AL=zeros(6,1);ALT=zeros(6,1);AWT=zeros(6,1);PW=zeros(6,1);
if pp/NumE<1
    if NumE~=1
        k1=0:NumE-1;
        OP0=1/(sum(((Opp.^k1)./factorial(k1)))+(Opp^NumE)/(factorial(NumE)*(1-Opp/NumE)));
        r=1:5;
        OPR=OP0*(Opp.^r)./factorial(r);
        OP=[OP0,OPR,1-OP0-sum(OPR)]';
        FOP=OP(1:6);
        P0(1)=1-Ipp;
        AN(1)=Ipp/(1-Ipp);
        AL(1)=AN(1)-Ipp;
        ALT(1)=3600*AN(1)/Ikk;
        AWT(1)=3600*AL(1)/Ikk;
        for NumE=2:6
            k1=0:NumE-1;
            P0(NumE)=1/(sum(((Ipp.^k1)./factorial(k1)))+(Ipp^NumE)/(factorial(NumE)*(1-Ipp/NumE)));%系统中没有顾客的概率
            AN(NumE)=Ipp+((Ipp^(NumE+1))/(factorial(NumE)*NumE))*(P0(NumE)/(1-Ipp/NumE)^2);%系统中的平均顾客数
            AL(NumE)=AN(NumE)-Ipp;%平均排队长度,单位为个数
            ALT(NumE)=3600*AN(NumE)/Ikk;%系统中每个顾客平均消耗时间,单位为秒
            AWT(NumE)=3600*AL(NumE)/Ikk;%系统中每个顾客平均等待时间,单位为秒
            for r=1:NumE-1
                P(r,1)=((Ipp^r)*P0(NumE))/factorial(r);
            end
            PW(NumE)=1-sum(P)-P0(NumE);%顾客到达后需要排队等待的概率
        end
        APO=fliplr(P0).*FOP;
        AAN=fliplr(AN).*FOP;
        AAL=fliplr(AL).*FOP;
        AALT=fliplr(ALT).*FOP;
        AAWT=fliplr(AWT).*FOP;
        APW=fliplr(PW).*FOP;
        FP0=sum(APO);FAN=sum(AAN);FAAL=sum(AAL);FAALT=sum(AALT);FAAWT=sum(AAWT);FAPW=sum(APW);
    elseif NumE==1
        FP0=1-Ipp;
        FAN=Ipp/(1-Ipp);
        FAAL=FAN-Ipp;
        FAALT=3600*FAN/Ikk;
        FAAWT=3600*FAL/Ikk;
    end
end
end

  评论这张
 
阅读(17)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016