我自己按照NaSch的元胞更新规则已编写出程序,但程序运行后得不到交通流时空图(启停波等),这个问题已纠缠三周时间了,郁闷,请高手一定帮忙。我贴出代码
for j=n:-1:1
if road(j)~=0
d=searchfrontcar(j,road);%搜索前方首个非空元胞与当前元胞的距离
if v_road(j)<=d-1
v_road(j)=min(v_road(j)+1,vmax);%加速
elseif v_road(j)>=d+1
v_road(j)=max(d,0);%减速
end
%------------------------随机慢化
if rand(1,1)<=p
v_road(j)=max(v_road(j)-1,0);
end
%------------------------车辆位置更新,施加周期性边界条件
new_v=v_road(j);
if j+new_v>n
pos=searchlastcar(road);
if pos>j+new_v-n
road(j+new_v-n)=1;
v_road(j+new_v-n)=new_v;
else
if pos-1>0
road(pos-1)=1;
v_road(pos-1)=new_v;
else
road(n)=1;
v_road(n)=new_v;
end
end
else
road(j+new_v)=1;
v_road(j+new_v)=new_v;
end
road(j)=0;
v_road(j)=0;
%--------------------车辆位置更新
end
说明一下:road数组元素值(1,0)表示某元胞上是否有车,V-road数组对应该元胞上车辆速度。
请高手一定帮助一下,我的编程能力太差,也是最近一个月才学MATLAB,这个问题花了我很多时间,郁闷得要死了,我的QQ2856392383,请一定帮助一下