当前位置 : 主页 > 编程语言 > python >

【元胞自动机】基于元胞自动机模拟交通流仿真含Matlab源码

来源:互联网 收集:自由互联 发布时间:2022-06-15
1 简介 交通系统是一个包含人,车,路的复杂系统,在整体上具有宏观特性的同时,其内部各个要素之间又有着不同的个体差异和一定的随机性,这些特性与元胞自动机自身具有的特点十分相

1 简介

交通系统是一个包含人,车,路的复杂系统,在整体上具有宏观特性的同时,其内部各个要素之间又有着不同的个体差异和一定的随机性,这些特性与元胞自动机自身具有的特点十分相近.为此,本文将元胞自动机理论引入到交通流领域,通过对微观交通流的建模与仿真,以揭示交通流内在特性与演化机理.

2 部分代码

function new = move_forward(old)
new = old; %create new plaza looking same as old
[L, W] = size(new); %get its dimensions
prob = .7;
delay = 3;
%%%DOWNSTREAM OF TOLL BOOTHS %%%
for i = (L-1):-1:((L - 1)/2 + 1)
for j = 1:W
if new(i,j) == 1
if new(i+1, j) ~= 0
new(i,j) = -2;
end
if new(i+1, j) == 0
if prob >= rand
new(i,j) = 0;
new(i+1, j) = 1;
end
end
end
end
end
%%AT TOLL BOOTHS %%
for i = (L-1)/2
for j = 1:W
if new(i,j) > 0
if new(i,j) == delay
new(i,j) = 0;
new(i+1,j) = 1;
end
if new(i,j) ~= delay
if new(i,j) ~= 0
new(i,j) = new(i,j) + 1;
end
end
end
end
end
%% UPSTREAM OF TOLL BOOTHS %%
for i = (L-1):-1:1
for j = 1:W
if new(i,j) == 1
if new(i+1, j) ~= 0
new(i,j) = -2;
end
if new(i+1, j) == 0
if prob >= rand
new(i,j) = 0;
new(i+1, j) = 1;
end
end
end
end
end

3 仿真结果

【元胞自动机】基于元胞自动机模拟交通流仿真含Matlab源码_matlab代码

4 参考文献

[1]李松, 张杰, and 贺国光. "基于元胞自动机模型的交通流混沌仿真研究." 计算机工程与应用 43.32(2007):4.

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

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

【元胞自动机】基于元胞自动机模拟交通流仿真含Matlab源码_matlab代码_02


网友评论