✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
元胞自动机是把复杂系统量化为简单的个体,在元胞自动机模型中.空间,时间都被离散化,每一个相互作用的单元仅为有限的状态.以元胞自动机理论为基础,把车辆在路段上交通流中运动的变化规律表述为元胞自动机的演化规则,建立了基于元胞自动机理论的交通流模拟模型,标定了元胞长度和最大速度等参数,分析了元胞变换的原则;详细探讨了元胞自动机在道路交通模拟中的应用,设计出了交通元胞自动机的结构,分析了交通元胞自动机所采取的状态变换原则,建立了收费站交通流模拟模型;
⛄ 部分代码
clear;
close all
figure('position',[50 132 900 400],'doublebuffer','on')
W = [];
for j=0:7;
B = 6+j; %number booths
L = 6; %number lanes in highway before and after plaza
T = 1; % # hrs to simulate
global plazalength;
plazalength = 101;
plaza = create_plaza(B,L);
set(gcf,'resize','off')
PLAZA=rot90(plaza);
PLAZAA=0.8*ones(40,101,3);
PLAZA(PLAZA==1)=2;
PLAZA(PLAZA==0)=1;
PLAZA(PLAZA==2)=0;
PLAZA(PLAZA~=0&PLAZA~=1)=0.8;
PLAZAA(20-ceil(B/2):21+ceil(B/2),:,1)=PLAZA;
PLAZAA(20-ceil(B/2):21+ceil(B/2),:,2)=PLAZA;
PLAZAA(20-ceil(B/2):21+ceil(B/2),:,3)=PLAZA;
H=image(PLAZAA);
axis off
entry_vector = create_entry(T,L);
waiting_time = 0;
output = 0;
for i = 1:T*1440
plaza = move_forward(plaza); %move cars forward
plaza = new_cars(B, L, plaza, entry_vector(1,i)); %allow new cars to enter
plaza = switch_lanes(plaza); %allow lane changes
waiting_time = waiting_time + compute_wait(plaza); %compute waiting time during timestep i
output = output + compute_output(plaza);
plaza = clear_boundary(plaza);
PLAZA=rot90(plaza);
PLAZA(PLAZA==1)=2;
PLAZA(PLAZA==0)=1;
PLAZA(PLAZA==2)=0;
PLAZA(PLAZA~=0&PLAZA~=1)=0.8;
PLAZAA(20-ceil(B/2):21+ceil(B/2),:,1)=PLAZA;
PLAZAA(20-ceil(B/2):21+ceil(B/2),:,2)=PLAZA;
PLAZAA(20-ceil(B/2):21+ceil(B/2),:,3)=PLAZA;
plaza50=PLAZAA(:,50,1);plaza50(plaza50==1)=0;PLAZAA(:,50,2)=plaza50;PLAZAA(:,50,3)=plaza50;
set(H,'CData',PLAZAA);
set(gcf,'position',[50 132 900 400])
pause(0.01)
end
plaza;
W=[W waiting_time]
end
⛄ 运行结果
⛄ 参考文献
[1] 王宗保, 杨家其. 基于元胞自动机的收费通道通过能力仿真[J]. 武汉理工大学学报:交通科学与工程版, 2019, 43(2):5.
[2] 刘运霞, 周林英, 赵忠杰. 基于元胞自动机的高速公路隧道群交通流建模与仿真[J]. 筑路机械与施工机械化, 2016, 33(11):4.
[3] 黄磊. 基于元胞自动机模型的非间断交通流模拟[D]. 山东科技大学, 2019.
[4] 宇仁德, 李大龙. 基于元胞自动机的交通流计算机模拟[J]. 计算机仿真, 2008, 25(8):4.