0
点赞
收藏
分享

微信扫一扫

【元胞自动机】基于保守策略元胞自动机三车道(开放辅路,软件园影响)交通流模型含Matlab源码

小磊z 2022-03-11 阅读 69

1 简介

元胞自动机模拟三车道干路中间有大企业两边有一一车道辅路高峰时段。

元胞自动机(CA)是一种用来仿真局部规则和局部联系的方法。典型的元

胞自动机是定义在网格上的,每一个点上的网格代表一个元胞与一种有限的状

态。变化规则适用于每一个元胞并且同时进行。

我们可以理解元胞自动机仿真需要理解三点。一是元胞,在matlab中可以理解为矩阵中的一点或多点组成的方形块,一般我们用矩阵中的一点代表一个元胞。二是变化规则,元胞的变化规则决定元胞下一刻的状态。三是元胞的状态,元胞的状态是自定义的,通常是对立的状态,比如生物的存活状态或死亡状态,红灯或绿灯,该点有障碍物或者没有障碍物等等。

2 部分代码

function main
% 元胞自动机模拟三车道干路中间有大企业两边有一一车道辅路高峰时段
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Sidex1 Sidex2
% +---------------+ Sidey = 2
% | |
% | |
% ======+===============+==== Mainy
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% T 总模拟实际时间
% Arrival 总车流量
% Mainlength 干道长
% Mainy 干道纵坐标
% Mainwide 干道宽
% Sidewide 辅路宽
% Sidex1 Sidex2 辅路横坐标
% Sidey 辅路纵坐标
% Sidelengthh 辅路南北长
% Sidelengthw 辅路东西长
% MP map矩阵
% 1 空 2 车 3 边界
% lightmp 红绿灯
% lighttime 红绿灯间隔
% v 车速度矩阵
% vmainmax 干道最高速
% vsidemax 辅路最高速
% time 车花费时间矩阵
% dt 单位时间
% tt 图像刷新时间
% h handle
% sumtime 车总时间
% alltime 车总花费时间
% changepro 右侧车道进入铺路概率
clear;clc
T = 3000;
Mainlength = 200; Mainwide = 3; vmainmax = 6;
%Sidelengthh = 25; Sidelengthw = 100; Sidewide = 1;
vsidemax = 4;
Sidex1 = 30; Sidex2 = 150; Sidey = 2; Mainy = 26;
[mp, v, time,lightmp] = init_mp(Sidex1,Sidex2,Sidey,Mainy,Mainlength,Mainwide);
h = print_mp(mp, NaN, 0.1);
dt = 1.2; tt=0.1;
sumtime = 0; sumpassed =0;
lighttime = 20;
changepro = 1;
alltime=0;
%mp(25,comy)=2;
cy2=130;
mp(25,cy2)=2;
for i = 1:T
sumtime=sumtime+dt;
% 刷车
if(rem(i,2)&(mp(27,8)~=2||v(27,8)~=0))[mp, v] = new_cars(dt,mp,v,vmainmax); end;
% 软件园
if(rem(i,2))mp(24,cy2)=1;else mp(24,cy2)=2;end;
mp(26,cy2)=2;v(26,cy2)=0;
% 变道 chos_road2 激进 chos_road 保守
[mp, v, time] = chos_road(mp,v,time);
% 变速
[mp, v, time] = change_speed(mp,v,time,vmainmax);
flag = (mp(Mainy,Sidex2)==0)
% 辅道
if(flag)
[mp, v, time] = fulu(mp,v,time,vsidemax,Sidex1,Sidex2,Sidey,changepro);
end;
% 位移&消车
[alltime, mp, v, time , sumpassed ] = move(alltime,sumpassed,mp,v,time,dt);
% 辅道
if(~flag)
[mp, v, time] = fulu(mp,v,time,vsidemax,Sidex1,Sidex2,Sidey,changepro);
end;
% 输出
h = print_mp(mp,h,tt);
xlabel({strcat(strcat('time = ',num2str(sumtime,'%.1f')),'s'),
strcat('total number of vehicles =',num2str(sumpassed)),
strcat('average passing time =',num2str(alltime/sumpassed,'%.4f'))
,'开放辅路,软件园影响,保守策略'});
end

3 仿真结果

【元胞自动机】基于保守策略元胞自动机三车道(开放辅路,软件园影响)交通流模型含Matlab源码_matlab代码

4 参考文献

[1]谢娟. 基于元胞自动机的单车道交通流模型研究[D]. 长安大学.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

【元胞自动机】基于保守策略元胞自动机三车道(开放辅路,软件园影响)交通流模型含Matlab源码_ide_02




举报

相关推荐

0 条评论