个人网站有自己服务器是不是就不需要虚拟主机,公司做网页要多少钱,网站横幅怎做,上海疫情防控形势CBEngine 是一个微观交通模拟引擎#xff0c;可以支持城市规模的道路网络交通模拟。CBEngine 能够快速模拟拥有数千个交叉路口和数十万辆车辆的道路网络交通。 以下内容基本翻译自CBEngine — CBLab 1.0.0 documentation
1 模拟演示
1.0 模拟演示结构 config.cfg 定义了 roa…CBEngine 是一个微观交通模拟引擎可以支持城市规模的道路网络交通模拟。CBEngine 能够快速模拟拥有数千个交叉路口和数十万辆车辆的道路网络交通。 以下内容基本翻译自CBEngine — CBLab 1.0.0 documentation
1 模拟演示
1.0 模拟演示结构 config.cfg 定义了 roadnet.txt 和 flow.txt 的路径并包含了一些 CBEngine 的设置。roadnet.txt 和 flow.txt 为模拟数据。utils.py 包含 Dataloader 工具类用于数据加载。main.py 为运行模拟的脚本。
1.1 启动演示
在安装了 CBEngine 的环境中运行以下命令
python main.py1.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 1002.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。
流量文件包含以下部分
第一行流量数量 n后续的 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允许用户定制以下两大模块
驾驶模块Driving Module 控制车辆的驾驶行为。路径规划模块Routing Module 根据交通条件动态调整车辆路线。 模块定制需用C实现通过覆盖 src/modules/driving.cc 和 src/modules/routing.cc 中的默认实现来实现自定义逻辑。