交通流元胞自动机程序
更新时间:2023-10-20 04:31:01 阅读量: 综合文库 文档下载
% 车流密度不变下的多车道仿真(包括单车道) % 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]) ;$1 132 560 420 set(gcf,'doublebuffer','on'); $1
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; 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; ad=ad+1;
%均速行驶车辆如另一条路有3空位则换路
elseif( Acc(1,g)==1&&Acc(2,g)==0&&Acc(2,g+1)==0&&Acc(2,g+1)==0 ) A(1,g)=1; A(2,g)=0; ad =ad+1;
elseif( Acc(2,g)==1&&Acc(1,g)==0&&Acc(1,g+1)==0&&Acc(1,g+1)==0 ) A(1,g)=0; A(2,g)=1; ad=ad+1; end end
%换路后重新设置元胞上的车辆状态 S(:,1:end) = 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(:,1:end) = 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 ]; end
%根据当前状态改变元胞位置 %匀速运行车辆向前走1格 A( Acc(:,1:end)==1 ) = 1;
A( [ zeros(nc,1) Acc(:,1:end-1)]==1 ) = 0; %高速运行车辆向前走2格 A( Acc(:,1:end)==2) = 1;
A( [ zeros(nc,2) Acc(:,1: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&&n>nl/2) av(c) = V/N; c = c+1; end
%在车道入口处随机引入新的车辆
A = [ round(fp*rand(nc,1))&A(1:nc,1) A(:,2:end)]; A(A~=0)=1;
%将新的车辆加入元胞矩阵中 B(2:2:2*nc,:)=A; %显示交通流图 set(H,'CData',B); %仿真步长 pause(dt); end
%仿真结束,计算结果 d = ad;
p = mean(ap);
v = sum(av)/c; end
%初始化仿真参量 v = 0;p=0;d=0; nl = 100;
nc = 2;dt=0.01;nt=1000; n=1; fp = 1.2;
[ v d p ] = multi_driveway( nl,nc,fp,dt,nt );
% 车流密度变化时的单车道仿真程序 % 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; n=1;
for fp = 2.5:-0.25:0.5
[ v d p ] = multi_driveway( nl,nc,fp,dt,nt ); va(n) = v; pa(n) = p; da(n) = d; n=n+1;
%绘制平均速率-车流密度(v-p)曲线 figure(2) plot(pa,va);
%绘制车流密度的变化曲线 figure(3) plot(pa); end
clf clear all %build the GUI
Tfine the plot button
plotbutton=uicontrol('style','pushbutton',... 'string','Run', ... 'fontsize',12, ...
'position',[100,400,50,20], ...
'callback', 'run=1;'); Tfine the stop button
erasebutton=uicontrol('style','pushbutton',... 'string','Stop', ... 'fontsize',12, ...
'position',[200,400,50,20], ... 'callback','freeze=1;'); Tfine the Quit button
quitbutton=uicontrol('style','pushbutton',... 'string','Quit', ... 'fontsize',12, ...
'position',[300,400,50,20], ... 'callback','stop=1;close;');
number = uicontrol('style','text', ... 'string','1', ... 'fontsize',12, ...
'position',[20,400,50,20]); ê setup
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') axis equal axis tight
stop=0; %wait for a quit button push run=0; %wait for a draw
freeze=0; %wait for a freeze(冻结) while (stop==0) if(run==1)
%边界条件处理,搜素首末车,控制进出,使用开口条件 a=searchleadcar(cells); b=searchlastcar(cells);
[cells,v]=border_control(cells,a,b,v,vmax); i=searchleadcar(cells); %搜索首车位置 for j=1:i if i-j+1==n
[z,v]=leadcarupdate(z,v);
continue; else
%======================================加速、减速、随机
慢化
if cells(i-j+1)==0; %判断当前位置是否非空 continue;
else v(i-j+1)=min(v(i-j+1)+1,vmax); %加速
%=================================减速 k=searchfrontcar((i-j+1),cells); %搜素前方首个非空元胞位置 if k==0; %确定于前车之间的元胞数 d=n-(i-j+1); else d=k-(i-j+1)-1; end
v(i-j+1)=min(v(i-j+1),d);
%==============================%减速 %随机慢化
v(i-j+1)=randslow(v(i-j+1)); new_v=v(i-j+1);
%======================================加速、减速、随机慢化
%更新车辆位置
z(i-j+1)=0; z(i-j+1+new_v)=1; %更新速度 v(i-j+1)=0;
v(i-j+1+new_v)=new_v; end end end cells=z;
memor_cells(x,:) =cells; %记录速度和车辆位置 memor_v(x,:) =v; x=x+1;
set(imh,'cdata',cells) %更新图像 %update thestep number diaplay pause(0.2);
stepnumber = 1 + str2num(get(number,'string')); set(number,'string',num2str(stepnumber)) end
if (freeze==1) run = 0; freeze =0; end drawnow
end
0.9???????????????????????0.80.7????????????????????flux in vehicles/time0.60.50.40.30.20.1000.20.40.6density in vehicles/cell0.81
5???????????????????????????????????????????velocity in cell/time4321000.20.40.6density in vehicles/cell0.81
正在阅读:
交通流元胞自动机程序10-20
形容声势浩大的成语02-10
2017年初级会计职称《经济法基础》真题(含答案解析)05-22
高血压合并糖尿病使用他汀类药物的病例分析05-19
半截蜡烛续写600字06-19
快快乐乐的过大年作文700字06-17
高分子物理习题册(8)04-30
2015年房产经纪人开单四字秘诀每日一讲(2月23日)12-03
《大铁锤传·练习》11-14
行政执法资格考试全真模拟判断05-03
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 交通流
- 自动机
- 程序
- 分离定律题型归纳
- 专业学位硕士研究生指导性培养方案
- 《新型现代应用文写作实训》参考答案
- 物资管理办法
- 病生练习题
- 2012春大学英语1期末考试综合复习资料(1)
- 财政部 国家税务总局-增值税
- “创新素质实践行”活动学生优秀作品评选及初中毕业年级获奖学生升学优录工作的通知
- 满井游记 教案
- 汉代画像石上西王母图像分析
- 钢结构习题集和答案
- 世界各地电压
- 读《辩证看 务实办》有感
- 2013年防盗报警发展:无线化和网络化
- 近代史讨论课作业
- 液晶材料的合成及其应用(华师版)
- 文献检索上机作业 - 图文
- 人教版小学四年级下册科学3.2《手电筒的秘密》教案
- 霍永指挥部物资设备管理办法
- 陕西省教师资格教育基础理论知识考(教育政策法规)2008-2011真题