首页 > 行业资讯 > 【元胞自动机】基于元胞自动机求解三车道干路中间有大企业两边有一一车道辅路高峰时段交通流模型matlab代码

【元胞自动机】基于元胞自动机求解三车道干路中间有大企业两边有一一车道辅路高峰时段交通流模型matlab代码

时间:2022-02-23 来源: 浏览:

【元胞自动机】基于元胞自动机求解三车道干路中间有大企业两边有一一车道辅路高峰时段交通流模型matlab代码

天天Matlab 天天Matlab
天天Matlab

TT_Matlab

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。

收录于话题 #元胞自动机应用matlab源码 34个

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代码问题可私信交流。

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

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐