"""创建优化的路由文件:截断路由,只保留控制区域""" 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")