% 车流密度不变下的多车道仿真(包括单车道) % nc:车道数目(1 或2),nl:车道长度 % v:平均速度,d:换道次数(1000 次)p:车流密度 % dt:仿真步长时间,nt:仿真步长数目 % fp:车道入口处新进入车辆的概率 v = 0;p=0;d=0; nl = 100;nc = 1; dt=0.01;nt=1000; fp = 0.5; [ v d p ] = multi_driveway( nl,nc,fp,dt,nt ); function [ v d p ] = multi_driveway( nl,nc,fp,dt,nt ) % 在某一特定车流密度下的(车流密度由fp 决定)单、双车道仿真模型 % nc:车道数目(1 或2),nl:车道长度——输入参数 % v:平均速度,d:换道次数(1000 次)p:车流密度——输出参数 % dt:仿真步长时间,nt:仿真步长数目——输入参数 % fp:车道入口处新进入车辆的概率——输入参数 % test: % nl = 400;fp = 0.5; % nc = 2;dt=0.01;nt=500; %构造元胞矩阵 B=ones(2*nc+1,nl+2); %奇数行为不可行车道 B(1:2:(2*nc+1),:)=1.2; %初始化仿真元胞状态(1 为无车,0 为有车) bb=B(2:2:2*nc,:);bb(bb~=0)=1;B(2:2:2*nc,:)=bb;B(2:2:2*nc,end)=0; %显示初始交通流图 figure(1); H=imshow(B,[]); set(gcf,'position',[241 132 560 420]) ;%241 132 560 420 set(gcf,'doublebuffer','on'); %241 title('cellular-automation to traffic modeling','color','b'); %初始化化存储元胞上车辆状态的矩阵 S(1:nc,nl) = 0; Q(1:nc,1:2) = 0; Acc(1:nc,1:(nl+2))=0; %初始化换道频率、平均速度、车流密度相关变量 ad = 0; av(1:nt) = 0; ap(1:nt) = 0; c = 1; for n = 1:nt A=B(2:2:2*nc,:); %确定前n-2 个车辆的状态 S(:,:) = 0; S(A(:,1:end-2)==0&A(:,2:end-1)==1&A(:,3:end)==1)=2;%加速的车 S(A(:,1:end-2)==0&A(:,2:end-1)==0)=3;%停车的车 S(A(:,1:end-2)==0&A(:,2:end-1)==1&A(:,3:end)==0)=1;%减速行驶的车 %确定最后2 两个元胞的状态 Q(:,:) = 0; Q(A(:,end-1)==0&A(:,end)==0) = 1; Q(A(:,end-1)==0&A(:,end)==1) = 2; Q(A(:,end-1)==1&A(:,end)==0) = 2; Q(:,end) = 1; %获得所有元胞上车辆的状态 Acc = [ S Q ]; %换路规则 if(nc>1&&n>nl/2) %遍历每一个元胞 for g = 1:length(Acc(1,:)) %停车状态车辆如另一条路有2 空位则换路 if( Acc(1,g)==3&&Acc(2,g)==0&&Acc(2,g+1)==0) A(1,g)=1; A(2,g)=0; a...