⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bfts.m

📁 用来模拟路段上的交通流,并可以用来画图,很好用的
💻 M
字号:
%Parameters
   %des=input('des=');
   %while des>1 | des<0
       %des=input('输入错误!请重续输入! des=:');
       %end
    clear all;
   clc;
    k=1;
   den=zeros(1,(0.7-0.1)/0.005);
   Flow=zeros(1,(0.7-0.1)/0.005);
   for des=0.1:0.005:0.7
   vm=5;
    % %Initialation
    sl=400;%位置数目
    st=1000;%模拟时间
    vel=zeros(1,sl);
    car=zeros(st,sl);  
    
    %Q=denisty*sl;
    de0=des*sl;%车辆总数目
    car_num=de0;
    for i=1:de0
        for j=1:de0
            sit=int16(sl*rand(1)+1);
            if car(1,sit)==0,break,end
        end
        car(1,sit)=1;
%         vel(sit)=int8(vm*rand(1));
    end
    %Simulation
    hp=0.5;%减速概率
    for t=1:st-1%计算gap=em
        for i=sl:-1:1
            if car(t,i)==1
                em=0;
                for j=1:vm
                    ij=i+j;
                    if ij>sl
                        ij=ij-sl;
                    else
                        ij=ij;
                    end
                    if car(t,ij)==1,break,end
                    em=em+1;
                end
                %   vel(i)=min(vel(i)+1,vm);%规则1:加速
                if vel(i)<vm
                    vel(i)=vel(i)+1;
                else
                    vel(i)=vm;
                end;
                %vel(i)=min(vel(i),em);%规则2
                if vel(i)>em
                    vel(i)=em;
                else
                    vel(i)=vel(i);
                end
                if (rand(1)<hp)&(vel(i)>=1)%规则3
                    vel(i)=vel(i)-1;
                else
                    vel(i)=vel(i);
                end
                sv=i+vel(i);%规则4
                if sv>sl
                    %car_num=car_num-1;
                    sv=sv-sl;
                else
                    sv=sv;
                    %car_num=car_num;
                end
                car(t+1,sv)=1;
                vel(sv)=vel(i);
                if sv==i
                    car(t+1,i)=1;
                    vel(i)=0;
                else
                    car(t+1,i)=0;
                    vel(i)=0;
                end
            elseif car(t+1,i)==1
                car(t+1,i)=car(t+1,i);
                vel(i)=vel(i);
            else
                car(t+1,i)=0;
                vel(i)=0;
            end
        end
        tot_num=0;
        for tt=1:400
            if vel(tt)~=0
                tot_num=tot_num+1;
            end
        end
        v_aver(t)=sum(vel)/tot_num;
        carnum=zeros(1,st);
        for kk=10:100
            if car(t,kk)==1
                carnum(t)=carnum(t)+1;
            end
            
        end
        %den(ss)=carnum(t)/90;
    end
    car_v(k)=sum(v_aver)/t;
    Flow(k)=sum(carnum)/t;
    den(k)=Flow(k)/car_v(k);
    k=k+1;
end
%Diagram
%clf;
%figure(gcf)
%figure(1)
% subplot(2,2,1)
%[i,j]=meshgrid([1:sl],[1:st]);
%plot3(i,j,car,'.k','markersize',des);
%axis([1 sl 500 st 0.9999 1]);
%xlabel('  space')
%ylabel('  time')
%surf(car,'linestyle','none');
%colormap vga;
%view(359.9,89.9);
 %clear all
 figure(1)
plot(den,Flow,'k.')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -