公路堵车概率模型:Nagel-Schreckenberg 模型模拟

简介: 公路堵车概率模型:Nagel-Schreckenberg 模型模拟

📢📢📢📣📣📣 🌻🌻🌻Hello,大家好我叫是Dream呀,一个有趣的Python博主,多多关照😜😜😜 🏅🏅🏅Python领域优质创作者,欢迎大家找我合作学习(文末有VX 想进学习交流群or学习资料 欢迎+++) 💕 入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀 💓最后,愿我们都能在看不到的地方闪闪发光,一起加油进步🍺🍺🍺 🍉🍉🍉“一万次悲伤,依然会有Dream,我一直在最温暖的地方等你”,唱的就是我!哈哈哈~🌈🌈🌈 🌟🌟🌟✨✨✨

网络异常,图片无法展示
|

Nagel-Schreckenberg交通流模型

路面上有N辆车,以不同的速度向前行驶,模拟堵车问题。有以下假设: 1.假设某辆车的当前速度是v。 2.若前方可见范围内没车,则它在下一秒的车速提高到v+1,直到达到规定的最高限速。 3.若前方有车,前车的距离为d,且d < v,则它下一秒的车速降低到d - 1 。 4.每辆车会以概率p随机减速v - 1。 Nagel-Schreckenberg 模型模拟:

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
def clip(x, path):
    for i in range(len(x)):
        if x[i] >= path:
            x[i] %= path
if __name__ == "__main__":
    mpl.rcParams['font.sans-serif'] = ['Fangsong']  # 设置字体
    mpl.rcParams['axes.unicode_minus'] = False  # 不显示负号坐标
    path = 5000     # 环形公路的长度
    n = 100         # 公路中的车辆数目
    v0 = 50          # 车辆的初始速度
    p = 0.3         # 随机减速概率
    Times = 3000
    np.random.seed(0)
    x = np.random.rand(n) * path
    x.sort()
    v = np.tile([v0], n).astype(np.float)
    plt.figure(figsize=(9, 7), facecolor='w')
    for t in range(Times):
        plt.scatter(x, [t]*n, s=1, c='k', alpha=0.05)
        for i in range(n):
            if x[(i+1)%n] > x[i]:
                d = x[(i+1) % n] - x[i]   # 距离前车的距离
            else:
                d = path - x[i] + x[(i+1) % n]
            if v[i] < d:
                if np.random.rand() > p:
                    v[i] += 1
                else:
                    v[i] -= 1
            else:
                v[i] = d - 1
        v = v.clip(0, 150)
        x += v
        clip(x, path)
    plt.xlim(0, path)
    plt.ylim(0, Times)
    plt.xlabel('车辆位置', fontsize=14)
    plt.ylabel('模拟时间', fontsize=14)
    plt.title('环形公路车辆堵车模拟', fontsize=18)
    plt.tight_layout(pad=2)
    plt.show()

模型预测结果:

网络异常,图片无法展示
|

初始车速对NS模型的影响

网络异常,图片无法展示
|

减速概率对NS模型的影响

网络异常,图片无法展示
|
🌲🌲🌲 好啦,这就是今天要分享给大家的全部内容了

❤️❤️❤️如果你喜欢的话,就不要吝惜你的一键三连了~

网络异常,图片无法展示
|
网络异常,图片无法展示
|

目录
相关文章
|
存储 算法 搜索推荐
时间复杂度:一步步理解算法效率
时间复杂度:一步步理解算法效率,更多文章可关注我的微信公众号:Python学习杂记
889 0
|
Oracle 关系型数据库 MySQL
Oracle通过DBLink连接MySQL
Oracle通过创建DBLink连接MySQL,查看修改MySQL表数据
8949 0
|
SQL Oracle 关系型数据库
关系型数据库Oracle 数据库启动失败
【7月更文挑战第17天】
348 2
隐私计算实训营 第1期 - 第5讲:隐语PSI介绍及开发实践
在本文档中,介绍了如何在两个虚拟机上安装和配置SecretFlow和SecretNote。首先,环境配置包括一台运行CentOS 7.9的虚拟机(Alice节点)和一台运行Rocky Linux 9.3的虚拟机(Bob节点),均为8核16GB内存。 之后,文档展示了如何在SecretNote中上传数据并创建Notebook执行PSI(Private Set Intersection)任务。过程中需要注意Ray版本兼容性问题,以及最终成功执行后的结果展示。
|
弹性计算 数据库 云计算
阿里云又降价了!2024年3月阿里云核心产品价格全线下调详情
阿里云又降价了!2024年3月阿里云核心产品价格全线下调详情。2024年3月,阿里云宣布了其历史上最大力度的一次降价,其核心产品价格全线下调,平均降幅达到了20%,最高降幅更是高达55%。这次降价从2024年3月1日开始实施,涵盖了100多款产品和500多个产品规格,覆盖了计算、存储、数据库等所有核心产品,如云服务器ECS、对象存储OSS和云数据库RDS等。
472 2
|
机器学习/深度学习 自然语言处理 算法
SnowNLP使用自定义语料进行模型训练(情感分析)
SnowNLP使用自定义语料进行模型训练(情感分析)
2478 1
SnowNLP使用自定义语料进行模型训练(情感分析)
|
存储 缓存 Java
Android开源库,您懂多少?
github地址(持续更新欢迎star):https://github.com/zsml2016/GitHubNotes
Android开源库,您懂多少?
zotero翻译、界面、笔记字体大小设置
zotero翻译、界面、笔记字体大小设置
zotero翻译、界面、笔记字体大小设置
|
存储 负载均衡 算法
08-微服务技术栈(扩展):负载均衡算法
负载均衡算法作为Redis、MQ、ZK,GateWay等集群、组件必不可少的算法策略,是微服务框架中不可或缺的一部分知识点,本节我们将花费短暂的时间做个了解。
459 0
|
SQL 数据可视化 BI
十三、.net core(.NET 6)搭建ElasticSearch(ES)系列之dotnet操作ElasticSearch进行存取的方法
.net core操作ES进行读写数据操作在Package包项目下,新增NEST包。注意,包版本需要和使用的ES的版本保持一致,可以避免因为不兼容所导致的一些问题。例如我本机使用的ES版本是7.13版本,所以我安装的NEST包也是7.13版本:
1150 0
十三、.net core(.NET 6)搭建ElasticSearch(ES)系列之dotnet操作ElasticSearch进行存取的方法