ctm-dqn/scripts/create_optimized_routes.py

53 lines
1.8 KiB
Python

"""创建优化的路由文件:截断路由,只保留控制区域"""
import xml.etree.ElementTree as ET
control_edges = [
"G1523_AM3_4.1", "G1523_AM3_4.2", "G1523_AM3_4.3",
"G1523_AM3_4.4", "G1523_AM3_4.5", "G1523_AM3_4.6",
"G1523_AM4", "G1523_AM5", "G1523_AM6",
"G1523_AM6.1", "G1523_AM6.2", "G1523_AM6.3", "G1523_AM6.4", "G1523_AM6.5", "G1523_AM6.6",
"G1523_AM7", "G1523_AM7.1", "G1523_AM7.2", "G1523_AM8", "G1523_AM8.1", "G1523_AM8.2"
]
control_set = set(control_edges)
# 解析原始路由
tree = ET.parse("sumo_resource/routes_filtered.xml")
root = tree.getroot()
# 创建新的路由文件
new_root = ET.Element('routes')
new_root.set('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance')
new_root.set('xsi:noNamespaceSchemaLocation', 'http://sumo.dlr.de/xsd/routes_file.xsd')
# 复制vType定义
for vtype in root.findall('vType'):
new_root.append(vtype)
# 创建单一主路由(只包含控制区域)
main_route = ET.SubElement(new_root, 'route')
main_route.set('id', 'main_route')
main_route.set('edges', ' '.join(control_edges))
print(f"主路由边数: {len(control_edges)}")
# 只保留使用主路由的车辆
vehicle_count = 0
for vehicle in root.findall('vehicle'):
new_vehicle = ET.SubElement(new_root, 'vehicle')
new_vehicle.set('id', vehicle.get('id'))
new_vehicle.set('type', vehicle.get('type'))
new_vehicle.set('depart', vehicle.get('depart'))
new_vehicle.set('departLane', 'random')
new_vehicle.set('departSpeed', 'max')
new_vehicle.set('route', 'main_route')
vehicle_count += 1
print(f"车辆总数: {vehicle_count}")
# 保存
tree = ET.ElementTree(new_root)
ET.indent(tree, space=' ')
tree.write("sumo_resource/routes_optimized.xml", encoding='UTF-8', xml_declaration=True)
print("已保存到: sumo_resource/routes_optimized.xml")