赛题简介
在本地赛题中,参赛团队需要在平台提供的仿真交通场景下,通过算法模型驱动交通信号灯,以在各种交通状况(高峰期、雨天等)下都能最大程度地服务车辆,使其在模拟环境中获得综合最大得分。
数据集
来源:Reinforcement Learning for Traffic Signal Control
杭州交通数据集
这些数据集基于杭州的摄像头数据。由于缺乏转弯车辆的记录,每个数据集的转弯比例是固定的,10% 为左转,60% 为直行,30% 为右转。由于右转车辆不受交通信号灯控制,因此将其舍弃。每个道路网的每个方向都有一条左转车道和一条直行车道。
每个数据集都包括道路网络(roadnet.json)和交通流文件(flow.json),其格式分别定义为道路网络文件格式和交通流文件格式。
此外,每个场景的名称都表达了该场景的位置、时间和交通流量。例如,"hangzhou_bc_tyc_1h_8_9_2231 "定义了这样一个场景:交叉口位置索引为杭州的 "bc_tyc",交通流从早上 8 点开始到 9 点结束,在这一个小时内有 2231 辆车进入该场景。
字段说明
数据处理
import json
filename = 'roadnet.json'
# 读取并解析JSON文件
with open(filename, 'r') as file:
roadnet_data = json.load(file)
def analyze_roadnet_data(data):
print(f"总共有 {len(data.get('intersections', []))} 个交叉点。")
for intersection in data['intersections']:
intersection_id = intersection['id']
print(f"\n交叉点ID: {intersection_id}")
point = intersection['point']
print(f" 坐标: x={point['x']}, y={point['y']}")
width = intersection['width']
print(f" 宽度: {width}")
roads = intersection['roads']
print(f" 连接的道路: {', '.join(roads)}")
# 信号灯信息
traffic_light = intersection['trafficLight']
lightphases = traffic_light['lightphases']
print(f" 信号灯阶段数: {len(lightphases)}")
for idx, phase in enumerate(lightphases):
print(f" 阶段 {idx + 1}: 持续时间 {phase.get('time')}秒")
available_road_links = phase.get('availableRoadLinks', [])
print(f" 可通行道路链接索引: {', '.join(map(str, available_road_links))}")
print(f"\n总共有 {len(data.get('roads', []))} 条道路。")
for road in data['roads']:
road_id = road['id']
print(f"\n道路ID: {road_id}")
points = road['points']
print(f" 起点坐标: x={points[0]['x']}, y={points[0]['y']}")
print(f" 终点坐标: x={points[1]['x']}, y={points[1]['y']}")
lanes = road['lanes']
print(f" 车道信息:")
for lane in lanes:
print(f" 车道宽度: {lane['width']}m, 最高速度: {lane['maxSpeed']}m/s")
start_intersection = road['startIntersection']
end_intersection = road['endIntersection']
print(f" 起点交叉点: {start_intersection}, 终点交叉点: {end_intersection}")
# 运行脚本
if __name__ == "__main__":
analyze_roadnet_data(roadnet_data)
import json
# 假设您的JSON数据存储在名为flow.json的文件中
filename = 'flow.json'
# 读取JSON文件
with open(filename, 'r') as file:
data = json.load(file)
# 遍历数据中的每个车辆信息
for vehicle_data in data:
# 获取车辆的起始时间和结束时间
start_time = vehicle_data['startTime']
end_time = vehicle_data['endTime']
# 检查是否是同一个时间段
if start_time == end_time:
print(f"车辆在时间 {start_time} 启动并结束")
# 打印车辆的路线信息
route = vehicle_data['route']
print(f"车辆的路线: {route}")
# 访问车辆的具体参数
vehicle = vehicle_data['vehicle']
print(f"车辆参数 - 长度: {vehicle['length']}m, 宽度: {vehicle['width']}m, 最大速度: {vehicle['maxSpeed']}km/h")
# 可以添加更多的数据处理逻辑,例如筛选、排序、统计等