clear all
clc
simsec=0.05;%%%%%%%%定义仿真秒
time=300;%%%%%%%%%%%仿真步数
lane_road=1;%%%%%%%%车道数;
len_road=200;%%%%%%%车道长度
[ startroad ]=startstate(lane_road,len_road);
%确定初始车辆的位置
road=startroad;
mt=0;
rr=zeros(time,len_road);
vmax=5;%%%%%%定义最大车速
p=0.01;%%%%%%%随机慢化概率
ps=0.75;%慢启动加速概率
[a,b]=size(road);
flag=zeros(a,b,time);%定义一个慢启动规则标示,1表示采用,0表示不采用
troad=zeros(a,b,time);
[ troad(:,:,1) ] = ChuShiSuDu(road,vmax);
%确定初始速度状态矩阵
H=imshow(road,[0 1]);
pause(simsec);
for ti=1:time-1
mt=ti;
for i=1:a
for j=1:b
if troad(i,j,ti)~=0
[ vel,flag(:,:,ti+1) ]=refresh(troad(:,:,ti),vmax,p,ps,i,j,flag(:,:,ti),flag(:,:,ti+1));
troad(i,j+vel,ti+1)=10+vel;%位置更新
end
end
end
[ troad(:,:,ti+1) ]=cheliangchanshengqi(troad(:,:,ti+1),vmax);%道路车辆更新完成后,尾部车辆产更新
%%问题所在!!
for i=1:a
if troad(i,b,ti+1)~=0
troad(i,b,ti+1)=0;%更新头车位置
end
end
road=troad(:,:,ti+1);
road(road~=0)=1;
rr(mt,:)=road(1,:);
set(H,'cdata',road);
pause(simsec);
end
rr(rr==1)=9;rr(rr==0)=1;rr(rr==9)=0;
R=imshow(rr,[]);
%%%难点在于边界条件的设置,即首车的更新与尾车的消散