三车道交通流元胞自动机研究(matlab代码实现)

 👨‍🎓个人主页:研学社的博客 

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🌈3 Matlab代码实现

🎉4 参考文献


💥1 概述

参考文献:

在Nagel-Schrekenberg(NS)元胞自动机交通流模型的基础上,提出了一种高速公路三车道元胞自动机交通流模型.该模型中所有的车辆均遵循相同的演化规则,并允许车辆以一定概率换道.根据计算机数值模拟,研究了车辆减速概率、换道概率对车流量、车道利用率影响关系。

综上所述,元胞自动机是一个动态生成过程
高速公路可以看成一个网格状视图,车辆上格子颜色产生变动时,就有车辆消失或生成在边界(该元胞已经死亡或者生存).我们需要在车辆不断更新的状态实时显示在图形界面上,模型转换的思想就浅显易懂了,设置两个车流,一个为正在更新的车流密度一个为希望此时高速公路能达到的车流密度,其实我们只需要设置两种车流的密度,因为在更新句柄的过程中,车流的相对密度是相对不变的。
 

📚2 运行结果

部分代码:

function [plaza,v,vmax]=new_cars(plaza,v,probc,probv,VTypes);
    [L,W]=size(plaza);
%     plaza(2,3)=1;v(2,3)=1;vmax(2,3)=2;
%     plaza(3,3)=1;v(3,3)=1;vmax(3,3)=1; 
%     plaza(4,3)=1;v(4,3)=1;vmax(4,3)=1;
%     plaza(5,3)=1;v(5,3)=1;vmax(5,3)=2;
    vmax=zeros(L,W);
    for lanes=2:W-1;
        for i=1:L;
            if(rand<=probc)%在该位置随机产生一个车子
                tmp=rand;
                plaza(i,lanes)=1;
                for k=1:length(probv)%随机生成一个车子应该有的最大车速
                    if(tmp<=probv(k))
                        vmax(i,lanes)=VTypes(k);%判断属于哪个挡的车速并赋值
                        v(i,lanes)=ceil(rand*vmax(i,lanes));%对当前位置随机赋予一个初速度
                        break;
                    end
                end
            end
        end
    end
    %处理未达到密度要求的车辆需求
    needn=ceil((W-2)*L*probc);
    number=size(find(vmax~=0),1);
    if(number<needn)%如果密度小于预期
        while(number~=needn)
            i=ceil(rand*L);
            lanes=floor(rand*(W-2))+2;
            if(plaza(i,lanes)==0)
                plaza(i,lanes)=1;
                for k=1:length(probv)%随机生成一个车子应该有的最大车速
                   if(tmp<=probv(k))
                       vmax(i,lanes)=VTypes(k);%判断属于哪个挡的车速并赋值
                       v(i,lanes)=ceil(rand*vmax(i,lanes));%对当前位置随机赋予一个初速度
                       break;
                   end
                end
                number=number+1;
            end
        end
    end
    if(number>needn)%如果密度大于预期
        temp=find(plaza==1);
        for k=1:number-needn;
            i=temp(k);
            plaza(i)=0;
            vmax(i)=0;
            v(i)=0;
        end
    end
end

🌈3 Matlab代码实现

🎉4 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]吴大艳,谭惠丽,孔令江,刘慕仁.三车道元胞自动机交通流模型研究[J].系统工程学报,2005(04):393-397. 

[2]A Two-Lane Cellular Automaton Traffic Flow Model with the Keep-Right Rule edited by Milky Zhang,Image Information Institute in Sichuan Universiyt 2014/2/14

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值