时空笔记:CBEngine(微观交通模拟引擎)

news2025/1/12 10:38:10
  • CBEngine 是一个微观交通模拟引擎,可以支持城市规模的道路网络交通模拟。
  • CBEngine 能够快速模拟拥有数千个交叉路口和数十万辆车辆的道路网络交通。

以下内容基本翻译自CBEngine — CBLab 1.0.0 documentation

1 模拟演示

1.0 模拟演示结构

  • config.cfg 定义了 roadnet.txtflow.txt 的路径,并包含了一些 CBEngine 的设置。
  • roadnet.txtflow.txt 为模拟数据。
  • utils.py 包含 Dataloader 工具类,用于数据加载。
  • main.py 为运行模拟的脚本。

1.1 启动演示

在安装了 CBEngine 的环境中运行以下命令

python main.py

1.2 理解演示代码

1.2.1 定义模拟参数

roadnet_file = './data/roadnet.txt'
flow_file = './data/flow.txt'
cfg_file = './cfgs/config.cfg'
dataloader = Dataloader(roadnet_file, flow_file, cfg_file)

1.2.2 创建模拟器实例

running_step = 300                      # 模拟时长
phase_time = 30                         # 交通信号周期时长
engine = cbengine.Engine(cfg_file, 12)  # 创建模拟器实例

1.2.3 启动模拟器

  • engine.next_step() 用于模拟器迭代一个时间步长(默认为 1 秒)。
  • 在循环中,我们可以操作交通元素并观测模拟情况:
print('Simulation starts ...')
start_time = time.time()
for step in range(running_step):
    for intersection in dataloader.intersections.keys():                                            
        # 遍历每个交通信号
        
        engine.set_ttl_phase(intersection, (int(engine.get_current_time()) // phase_time) % 4 + 1)  
        # 修改交通信号相位
    engine.next_step()                                                                              
    # 模拟器前进一步
    print(" time step: {}, number of vehicles: {}".format(step, engine.get_vehicle_count()))        
# 打印当前车辆数
end_time = time.time()
print('Simulation finishes. Runtime: ', end_time - start_time)

 相位错位的解释:

2 数据格式

2.1 配置文件格式(config.cfg

# 模拟器的配置文件

# 时间参数
start_time_epoch = 0               # 模拟开始时间
max_time_epoch = 3600              # 模拟最大结束时间

# 数据路径
road_file_addr : ./data/roadnet.txt    # 路网数据文件路径
vehicle_file_addr : ./data/flow.txt    # 交通流数据文件路径

# 日志
report_log_mode : normal
report_log_addr : ./log/
report_log_rate = 10
warning_stop_time_log = 100

2.2  路网文件格式(roadnet.txt

包括以下三部分

2.2.1 交叉口数据

包括经纬度、交叉口 ID 及信号灯安装信息。

92344 // 交叉口总数
30.2795476000 120.1653304000 25926073 1 // 纬度,经度,交叉口ID,是否有信号灯

2.2.2 道路数据

包括道路长度、限速、车道数及通行方向。

每条道路有两个方向(如果只有一个则是单行道)

2105 // 道路段总数
28571560 4353988632 93.2000000000 20 3 3 1 2
//起始交叉口id 终止交叉口id 路段长度 路段限速 起->止车道数 止->起车道数
//起->止车道ID 止->起车道ID 
1 0 0 0 1 0 0 1 1 // 起->止车道的通行权限
1 0 0 0 1 0 0 1 1 // 止->起车道的通行权限
//通行权限每三个一组,所以上面的三个车道是(左、直行、直行加右转)

2.2.3 交通信号数据

描述交叉口与道路的连接性

107 // 有信号灯的交叉口总数
1317137908 724 700 611 609 
// 交叉口ID及四个方向道路段ID(北、东、南、西)

2.3 流量文件格式(flow.txt

流量文件定义了模拟中的车辆流量配置。每个流量(flow)由一个元组表示:
(start_time, end_time, vehicle_interval, route)

  • start_time: 流量开始时间。
  • end_time: 流量结束时间。
  • vehicle_interval: 每辆车之间的间隔时间(单位:秒)。
  • route: 流量的行驶路线(由道路段IDs组成,而非交叉口IDs)。

流量文件包含以下部分:

  1. 第一行:流量数量 n
  2. 后续的 3 行:每个流量的3行配置:
    • 第一行:start_time, end_time, vehicle_interval
    • 第二行:路线包含的道路段数 k。
    • 第三行:路线详细,包含 k个道路段ID。

12 // 流量数量 n = 12
0 100 5 // 流量1的开始时间、结束时间和车辆间隔
2       // 流量1的路线包含2段道路
2 3     // 流量1的道路段ID

//0~100s内 每5s一辆车,路线是2->3

3 其他的api

4 其他 

CBEngine允许用户定制以下两大模块:

  1. 驾驶模块(Driving Module): 控制车辆的驾驶行为。
  2. 路径规划模块(Routing Module): 根据交通条件动态调整车辆路线。

模块定制需用C++实现,通过覆盖 src/modules/driving.cc src/modules/routing.cc 中的默认实现来实现自定义逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2275458.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Notepad++上NppFTP插件的安装和使用教程

一、NppFTP插件下载 图示是已经安装好了插件。 在搜索框里面搜NppFTP,一般情况下,自带的下载地址容易下载失败。这里准备了一个下载连接:Release v0.29.10 ashkulz/NppFTP GitHub 这里我下载的是x86版本 下载好后在nodepad的插件里面选择打…

基于华为ENSP的OSPF不规则区域划分深入浅出(5)

本篇技术博文摘要 🌟 OSPF不规则区域划分及其问题解决方案涉及多个技术手段,包括隧道、虚链路和路由重发布等。合理的网络设计和配置对于避免网络中出现的环路问题至关重要。通过多进程双向重发布等方式,能够有效地优化路由协议的互通性和网络…

微信小程序——创建滑动颜色条

在微信小程序中,你可以使用 slider 组件来创建一个颜色滑动条。以下是一个简单的示例,展示了如何实现一个颜色滑动条,该滑动条会根据滑动位置改变背景颜色。 步骤一:创建小程序项目 首先,使用微信开发者工具创建一个新…

【再谈设计模式】模板方法模式 - 算法骨架的构建者

一、引言 在软件工程、软件开发过程中,我们经常会遇到一些算法或者业务逻辑具有固定的流程步骤,但其中个别步骤的实现可能会因具体情况而有所不同的情况。模板方法设计模式(Template Method Design Pattern)就为解决这类问题提供了…

Chrome_60.0.3112.113_x64 单文件版 下载

单文件,免安装,直接用~ Google Chrome, 免費下載. Google Chrome 60.0.3112.113: Chrome 是 Google 開發的網路瀏覽器。它的特點是速度快,功能多。 下载地址: https://blog.s3.sh.cn/thread-150-1-1.htmlhttps://blog.s3.sh.cn/thread-150-1-1.html

EXCEL: (二) 常用图表

10. 图表 134-添加.删除图表元素 图表很少是一个单独的整体,而是由十几种元素/对象拼凑出来的。 学习图表就是学习当中各类元素的插删改。 ①图表中主要元素的定义 图表上的一个颜色就是一个系列,每个系列都对应原数据中的一列/一行值数据。 每个系…

Transformer:深度学习的变革力量

深度学习领域的发展日新月异,在自然语言处理(NLP)、计算机视觉等领域取得了巨大突破。然而,早期的循环神经网络(RNN)在处理长序列时面临着梯度消失、并行计算能力不足等瓶颈。而 Transformer 的横空出世&am…

jenkins入门13--pipeline

Jenkins-pipeline(1)-基础 为什么要使用pipeline 代码:pipeline 以代码的形式实现,通过被捡入源代码控制, 使团队能够编译,审查和迭代其cd流程 可连续性:jenkins 重启 或者中断后都不会影响pipeline job 停顿&#x…

深度学习的原理和应用

一、深度学习的原理 深度学习是机器学习领域的一个重要分支,其原理基于多层神经网络结构和优化算法。以下是深度学习的核心原理: 多层神经网络结构:深度学习模型通常由多层神经元组成,这些神经元通过权重和偏置相互连接。输入数据…

Domain Adaptation(李宏毅)机器学习 2023 Spring HW11 (Boss Baseline)

1. 领域适配简介 领域适配是一种迁移学习方法,适用于源领域和目标领域数据分布不同但学习任务相同的情况。具体而言,我们在源领域(通常有大量标注数据)训练一个模型,并希望将其应用于目标领域(通常只有少量或没有标注数据)。然而,由于这两个领域的数据分布不同,模型在…

netty请求行超出长度

说明:记录一次使用Netty异常,如下: 错误信息:An HTTP line is larger than 4096 bytes. 场景 项目是微服务架构,在使用Netty转发请求到其他服务的时候报了这个错误。因为该请求是GET方式,其中有个参数值是…

CES Asia 2025科技盛宴,AI智能体成焦点

2025第七届亚洲消费电子技术展(CES Asia赛逸展)将在北京拉开帷幕,AI智能体有望成为展会的核心亮点。 深圳市人工智能行业协会发文表示全力支持CES Asia 2025(赛逸展),称其为人工智能领域的创新发展提供了强…

linux:文件的创建/删除/复制/移动/查看/查找/权限/类型/压缩/打包

关于文件的关键词 创建 touch 删除 rm 复制 cp 权限 chmod 移动 mv 查看内容 cat(全部); head(前10行); tail(末尾10行); more,less 查找 find 压缩 gzip ; bzip 打包 tar 编辑 sed 创建文件 格式: touch 文件名 删除文件 复制文件 移动文件 查看文…

【计算机网络】lab3 802.11 (无线网络帧)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀计算机网络_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2.…

机器人碳钢去毛刺,用大扭去毛刺主轴可轻松去除

在碳钢精密加工的最后阶段,去除毛刺是确保产品质量的关键步骤。面对碳钢这种硬度较高的材料,采用大扭矩的SycoTec去毛刺主轴,成为了行业内的高效解决方案。SycoTec作为精密加工领域的领军品牌,其生产的高速电主轴以其卓越的性能&a…

【漫话机器学习系列】042.提前停止训练的优势(Early Stopping Advantages)

提前停止训练(Early Stopping)的优势 提前停止是一种有效的正则化技术,在训练模型时通过监控验证集的性能来决定训练的结束点,从而避免过拟合。以下是提前停止的主要优势: 1. 防止过拟合 提前停止通过在验证集性能开…

ROS2快速入门0--节点

0:安装 wget http://fishros.com/install -O fishros && . fishros1:运行第一个机器人 ros2 run turtlesim turtlesim_node使用方向健进行控制(在另一个终端) ros2 run turtlesim turtle_teleop_key 2原理解析 打开另一个终端-->输入rqt-->Plugins-->Intr…

10.STM32F407ZGT6-内部温度传感器

参考: 1.正点原子 前言: 本笔记的主要目的和意义就是,再次练习ADC的使用。 32.1 内部温度传感器简介 STM32F407 有一个内部的温度传感器,可以用来测量 CPU 及周围的温度(TA)。对于STM32F407 系列来说,该温度传感器在…

新车月交付突破2万辆!小鹏汽车“激活”智驾之困待解

首次突破月交付2万辆规模的小鹏汽车,稳吗? 本周,高工智能汽车研究院发布的最新监测数据显示,2024年11月,小鹏汽车在国内市场(不含出口)交付量(上险口径,下同&#xff09…

【2024年华为OD机试】 (A卷,100分)- 租车骑绿岛(Java JS PythonC/C++)

一、问题描述 题目描述 部门组织绿岛骑行团建活动。租用公共双人自行车,每辆自行车最多坐两人,最大载重 M。 给出部门每个人的体重,请问最多需要租用多少双人自行车。 输入描述 第一行两个数字 m、n,分别代表自行车限重&#…