【元胞自动机】基于元胞自动机求解三车道干路中间有大企业两边有一一车道辅路高峰时段交通流模型matlab代码
【元胞自动机】基于元胞自动机求解三车道干路中间有大企业两边有一一车道辅路高峰时段交通流模型matlab代码
TT_Matlab
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。
1 简介
代码包含几种场景
1 不开放辅路,软件园影响,保守策略
2 不开放辅路,软件园不影响,保守策略
3 开放辅路,软件园影响,保守策略
4 不开放辅路,软件园影响,激进策略
5 不开放辅路,软件园不影响,激进策略
6 开放辅路,软件园影响,激进策略
2 部分代码
function
[mp, v, time] = fulu(mp,v,time,vsidemax,Sidey1,Sidey2,Sidex,changepro)
%
%
%
speedpro =
0.9
;
[N, M] = size(mp);
step=
0
; x=
25
; y=Sidey2;
while
(
1
)
step=step+
1
;
if
(mp(x,y)==
2
)
break
;
end
;
if
(x==Sidex)
break
;
end
;
x=x-
1
;
end
;
if
(mp(x,y)==
2
&&v(x,y)>=step)
v(
25
,y)=
1
; mp(
25
,y)=
2
; time(
25
,y)=time(x,y)+
1.2
;
v(x,y)=
0
; mp(x,y)=
1
; time(x,y)=
0
;
end
;
dis=zeros(N,M)-
1
;
x=
25
;y=Sidey2;
dis(
26
,Sidey2)=
0
;
while
(
1
)
if
(x==
26
)
break
;
end
;
if
(mp(x,y)==
2
) dis(x,y)=
0
;
end
;
if
(y==Sidey2&&x~=Sidex)
x=x-
1
;
elseif
(x==Sidex&&y~=Sidey1)
y=y-
1
;
elseif
(y==Sidey1&&x~=
26
)
x=x+
1
;
end
;
end
;
lastx=
26
; lasty=Sidey2; x=
25
; y=Sidey2;
while
(
1
)
if
(x==
26
)
break
;
end
;
if
(dis(x,y)==-
1
) dis(x,y)=dis(lastx,lasty)+
1
;
end
;
lastx=x; lasty=y;
if
(y==Sidey2&&x~=Sidex)
x=x-
1
;
elseif
(x==Sidex&&y~=Sidey1)
y=y-
1
;
elseif
(y==Sidey1&&x~=
26
)
x=x+
1
;
end
;
end
;
x=
25
; y=Sidey1; nxtx=
0
; nxty=
0
;
while
(
1
)
if
(x==
26
)
break
;
end
;
if
(y==Sidey1&&x~=Sidex)
nxtx=x-
1
; nxty=y;
elseif
(x==Sidex&&y~=Sidey2)
nxty=y+
1
; nxtx=x;
elseif
(y==Sidey2&&x~=
26
)
nxtx=x+
1
; nxty=y;
end
;
if
(dis(x,y)==
0
)dis(x,y)=dis(nxtx,nxty)+
1
;
end
;
x=nxtx; y=nxty;
end
;
x=
25
; y=Sidey2;
tot=
0
;
X=
1
:
500
;Y=
1
:
500
;
while
(
1
)
if
(x==
26
)
break
;
end
; tot=tot+
1
;
if
(mp(x,y)==
2
)
if
(rand<speedpro) rlv = min(vsidemax,min(v(x,y)+
1
,dis(x,y)-
1
));
else
rlv= min(vsidemax,min(max(
0
,v(x,y)-
1
),dis(x,y)-
1
));
end
;
if
(rlv~=
0
)
tox = X(tot-rlv); toy=Y(tot-rlv);
mp(tox,toy)=
2
; v(tox,toy)=rlv;
time(tox,toy)=time(x,y)+
1.2
; time(x,y)=
0
;
mp(x,y)=
1
; v(x,y)=
0
;
end
;
end
;
X(tot)=x; Y(tot)=y;
if
(y==Sidey2&&x~=Sidex)
x=x-
1
;
elseif
(x==Sidex&&y~=Sidey1)
y=y-
1
;
elseif
(y==Sidey1&&x~=
26
)
x=x+
1
;
end
;
end
;
for
y=Sidey1:-
1
:
2
if
(mp(
26
,y)==
2
)
if
(v(
26
,y)<Sidey1-y||rand>changepro)
break
;
end
;
mp(
25
,Sidey1)=
2
; time(
25
,Sidey1)=time(
26
,y)+
1.2
; v(
25
,Sidey1)=
2
;
mp(
26
,y)=
1
; time(
26
,y)=
0
; v(
26
,y)=
0
;
end
;
end
;
3 仿真结果
4 参考文献
[1]王婷, 周石鹏. 基于元胞自动机双车道混合车辆变道规则的交通流模型研究[J]. 物流科技, 2017, 40(10):5.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
