交通流元胞自动机程序Word格式.docx

上传人:b****6 文档编号:16098899 上传时间:2022-11-19 格式:DOCX 页数:7 大小:16.47KB
下载 相关 举报
交通流元胞自动机程序Word格式.docx_第1页
第1页 / 共7页
交通流元胞自动机程序Word格式.docx_第2页
第2页 / 共7页
交通流元胞自动机程序Word格式.docx_第3页
第3页 / 共7页
交通流元胞自动机程序Word格式.docx_第4页
第4页 / 共7页
交通流元胞自动机程序Word格式.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

交通流元胞自动机程序Word格式.docx

《交通流元胞自动机程序Word格式.docx》由会员分享,可在线阅读,更多相关《交通流元胞自动机程序Word格式.docx(7页珍藏版)》请在冰豆网上搜索。

交通流元胞自动机程序Word格式.docx

仿真步长数目——输入参数

车道入口处新进入车辆的概率——输入参数

%test:

%nl=400;

%nc=2;

nt=500;

%构造元胞矩阵

B=ones(2*nc+1,nl+2);

%奇数行为不可行车道

B(1:

2:

(2*nc+1),:

)=1.2;

%初始化仿真元胞状态(1为无车,0为有车)

bb=B(2:

2*nc,:

);

bb(bb~=0)=1;

B(2:

)=bb;

2*nc,end)=0;

%显示初始交通流图

figure

(1);

H=imshow(B,[]);

set(gcf,'

position'

[241132560420]);

%241132560420

doublebuffer'

'

on'

%241

title('

cellular-automationtotrafficmodeling'

color'

b'

%初始化化存储元胞上车辆状态的矩阵

S(1:

nc,nl)=0;

Q(1:

nc,1:

2)=0;

Acc(1:

(nl+2))=0;

%初始化换道频率、平均速度、车流密度相关变量

ad=0;

av(1:

nt)=0;

ap(1:

c=1;

forn=1:

nt

A=B(2:

%确定前n-2个车辆的状态

S(:

:

)=0;

S(A(:

1:

end-2)==0&

A(:

2:

end-1)==1&

3:

end)==1)=2;

%加速的车

end-1)==0)=3;

%停车的车

end)==0)=1;

%减速行驶的车

%确定最后2两个元胞的状态

Q(:

Q(A(:

end-1)==0&

end)==0)=1;

end)==1)=2;

end-1)==1&

end)==0)=2;

end)=1;

%获得所有元胞上车辆的状态

Acc=[SQ];

%换路规则

if(nc>

1&

&

n>

nl/2)

%遍历每一个元胞

forg=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;

ad=ad+1;

elseif(Acc(2,g)==3&

Acc(1,g)==0&

Acc(1,g+1)==0)

A(1,g)=0;

A(2,g)=1;

%均速行驶车辆如另一条路有3空位则换路

elseif(Acc(1,g)==1&

Acc(2,g+1)==0&

Acc(2,g+1)==0)A(1,g)=1;

ad=ad+1;

elseif(Acc(2,g)==1&

Acc(1,g+1)==0&

Acc(1,g+1)==0)A(1,g)=0;

end

%换路后重新设置元胞上的车辆状态

end)=0;

%寻找加速的车

%寻找停车的车

%寻找减速行驶的车%确定最后2两个元胞的状态

%

%获得所有元胞状态

%根据当前状态改变元胞位置

%匀速运行车辆向前走1格

A(Acc(:

end)==1)=1;

A([zeros(nc,1)Acc(:

end-1)]==1)=0;

%高速运行车辆向前走2格

end)==2)=1;

A([zeros(nc,2)Acc(:

end-2)]==2)=0;

%计算平均速度、换道频率、车流密度等参数

%获得运行中的车辆数目N

matN=A<

1;

N=sum(sum(matN));

%获得运行中的车辆速度之和V

E=S((S==1)|(S==2));

V=sum(E);

%计算此时刻的车流密度并保存

ap(n)=N/(nc*(nl+2));

%计算此时刻的平均速率并保存

if(N~=0&

av(c)=V/N;

c=c+1;

%在车道入口处随机引入新的车辆

A=[round(fp*rand(nc,1))&

A(1:

nc,1)A(:

end)];

A(A~=0)=1;

%将新的车辆加入元胞矩阵中

)=A;

%显示交通流图

set(H,'

CData'

B);

%仿真步长

pause(dt);

%仿真结束,计算结果

d=ad;

p=mean(ap);

v=sum(av)/c;

%初始化仿真参量

nc=2;

n=1;

fp=1.2;

%车流密度变化时的单车道仿真程序

车流密度%dt:

forfp=2.5:

-0.25:

0.5

va(n)=v;

pa(n)=p;

da(n)=d;

n=n+1;

%绘制平均速率-车流密度(v-p)曲线

figure

(2)

plot(pa,va);

%绘制车流密度的变化曲线

figure(3)

plot(pa);

clf

clearall

%buildtheGUI

%definetheplotbutton

plotbutton=uicontrol('

style'

pushbutton'

...

'

string'

Run'

...

fontsize'

12,...

[100,400,50,20],...

callback'

'

run=1;

%definethestopbutton

erasebutton=uicontrol('

Stop'

[200,400,50,20],...

freeze=1;

%definetheQuitbutton

quitbutton=uicontrol('

Quit'

[300,400,50,20],...

stop=1;

close;

number=uicontrol('

text'

1'

[20,400,50,20]);

%CAsetup

n=100;

%数据初始化

z=zeros(1,n);

%元胞个数

z=roadstart(z,5);

%道路状态初始化,路段上随机分布5辆cells=z;

vmax=3;

%最大速度

v=speedstart(cells,vmax);

%速度初始化

x=1;

%记录速度和车辆位置

memor_cells=zeros(3600,n);

memor_v=zeros(3600,n);

imh=imshow(cells);

%初始化图像白色有车,黑色空元胞

set(imh,'

erasemode'

none'

axisequal

axistight

stop=0;

%waitforaquitbuttonpush

run=0;

%waitforadraw

freeze=0;

%waitforafreeze(冻结)

while(stop==0)

if(run==1)

%边界条件处理,搜素首末车,控制进出,使用开口条件a=searchleadcar(cells);

b=searchlastcar(cells);

[cells,v]=border_control(cells,a,b,v,vmax);

i=searchleadcar(cells);

%搜索首车位置

forj=1:

i

ifi-j+1==n

[z,v]=leadcarupdate(z,v);

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1