源代码在matlab R2014a上运行。
代码:
脚本文件:
% 车流密度不变下的双向两车道仿真(T 字形路口)
% nc:双向车道数目 2,nl:车道长度(偶数)
% v:平均速度,d:换道次数(1000 次)p:车流密度
% dt:仿真步长时间,nt:仿真步长数目
% fp:车道入口处新进入车辆的概率(列向量)
nl = 40 ;nc = 2;
dt=0.75;nt=500;
fp = 5;
chance=0.5;
chance1=0.5;
[ v, d, p ] = multi_driveway_with_crossroad_exit ( nl,nc,dt,fp,nt,chance,chance1);
函数文件:
function [ v, d, p ] = multi_driveway_with_crossroad_exit( nl,nc,dt,fp,nt,chance,chance1)
% 在某一特定车流密度下的(车流密度由 fp 决定)双向两车道仿真模型
% nc:车道数目(2),nl:车道长度——输入参数
% v:平均速度,p:车流密度——输出参数
% dt:仿真步长时间,nt:仿真步长数目——输入参数
% fp:车道入口处新进入车辆的概率向量(2,3,5 车道)——输入参数
% chance:交叉口处车辆行为的概率向量(5 车道右转,3车道右转)——输入参数
%构造元胞矩阵
B=ones(nc+1+nl/2,nl+3);
%不可行车道
B(nc/2+1,[1:nl/2 nl/2+4:nl+3])=1.2;
B(nc+2:nc+1+nl/2,[1:nl/2 nl/2+4:nl+3])=1.2;
%初始化仿真元胞状态(1 为无车,0 为有车)
bb1=B([1:nc/2 nc/2+2:nc+1],:);bb2=B(:,nl/2+3);bb3=B(:,nl/2+1);
bb1(bb1~=0)=1;
bb2(bb2~=0)=1;
bb3(bb3~=0)=1;
B([1:nc/2 nc/2+2:nc+1],:)=bb1;B(:,nl/2+3)=bb2;B(:,nl/2+1)=bb3;B(1:nc+1,nl/2+1:nl/2+3)=1;
B(1:nc/2,end)=0;B(nc/2+2:nc+1,1)=0;B(end,nl/2+3)=0;
%显示初始交通流图
figure();
H=imshow(B,[]);
set(gcf,'position',[241 132