def main(): options = get_options() net = readNet(options.network) edges = set([e.getID() for e in net.getEdges()]) if options.orig_net is not None: orig_net = readNet(options.orig_net) else: orig_net = None print "Valid area contains %s edges" % len(edges) if options.trips: output_type = 'trips' writer = write_trip else: output_type = 'routes' writer = write_route busStopEdges = {} if options.stops_output: busStops = codecs.open(options.stops_output, 'w', encoding='utf8') busStops.write( '<additional xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/additional_file.xsd">\n' ) if options.additional_input: for busStop in parse(options.additional_input, 'busStop'): edge = busStop.lane[:-2] busStopEdges[busStop.id] = edge if options.stops_output and edge in edges: busStops.write(busStop.toXML(' ')) if options.stops_output: busStops.write('</additional>\n') busStops.close() def write_to_file(vehicles, f): f.write( '<!-- generated with %s for %s from %s -->\n' % (os.path.basename(__file__), options.network, options.routeFiles)) f.write( '<%s xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/routes_file.xsd">\n' % output_type) num_routes = 0 for _, v in vehicles: num_routes += 1 writer(f, v) f.write('</%s>\n' % output_type) print "Wrote %s %s" % (num_routes, output_type) if options.big: # write output unsorted tmpname = options.output + ".unsorted" with codecs.open(tmpname, 'w', encoding='utf8') as f: write_to_file(cut_routes(edges, orig_net, options, busStopEdges), f) # sort out of memory sort_routes.main([tmpname, '--big', '--outfile', options.output]) else: routes = list(cut_routes(edges, orig_net, options, busStopEdges)) routes.sort(key=lambda v: v[0]) with codecs.open(options.output, 'w', encoding='utf8') as f: write_to_file(routes, f)
def main(options): net = readNet(options.network) edges = set([e.getID() for e in net.getEdges()]) if options.orig_net is not None: orig_net = readNet(options.orig_net) else: orig_net = None print("Valid area contains %s edges" % len(edges)) if options.trips: output_type = 'trips' writer = write_trip else: output_type = 'routes' writer = write_route busStopEdges = {} if options.stops_output: busStops = codecs.open(options.stops_output, 'w', encoding='utf8') busStops.write( '<additional xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' + 'xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/additional_file.xsd">\n') if options.additional_input: for busStop in parse(options.additional_input, 'busStop'): edge = busStop.lane[:-2] busStopEdges[busStop.id] = edge if options.stops_output and edge in edges: busStops.write(busStop.toXML(' ')) if options.stops_output: busStops.write('</additional>\n') busStops.close() def write_to_file(vehicles, f): f.write('<!-- generated with %s for %s from %s -->\n' % (os.path.basename(__file__), options.network, options.routeFiles)) f.write( ('<%s xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' + 'xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/routes_file.xsd">\n') % output_type) num_routes = 0 for _, v in vehicles: num_routes += 1 writer(f, v) f.write('</%s>\n' % output_type) print("Wrote %s %s" % (num_routes, output_type)) if options.big: # write output unsorted tmpname = options.output + ".unsorted" with codecs.open(tmpname, 'w', encoding='utf8') as f: write_to_file( cut_routes(edges, orig_net, options, busStopEdges), f) # sort out of memory sort_routes.main([tmpname, '--big', '--outfile', options.output]) else: routes = list(cut_routes(edges, orig_net, options, busStopEdges)) routes.sort(key=lambda v: v[0]) with codecs.open(options.output, 'w', encoding='utf8') as f: write_to_file(routes, f)
def main(): options = get_options() net = readNet(options.network) edges = set([e.getID() for e in net.getEdges()]) if options.orig_net is not None: orig_net = readNet(options.orig_net) else: orig_net = None print "Valid area contains %s edges" % len(edges) if options.trips: start_tag = "<trips>" end_tag = "</trips>" output_type = "trips" writer = write_trip else: start_tag = "<routes>" end_tag = "</routes>" output_type = "routes" writer = write_route def write_to_file(routes, f): comment = "<!-- generated with %s for %s from %s -->" % ( os.path.basename(__file__), options.network, options.routeFiles, ) print >> f, comment print >> f, start_tag num_routes = 0 for route in routes: num_routes += 1 writer(f, *route) print >> f, end_tag print "Wrote %s %s" % (num_routes, output_type) if options.big: # write output unsorted tmpname = options.output + ".unsorted" with open(tmpname, "w") as f: write_to_file(cut_routes(edges, orig_net, options), f) # sort out of memory sort_routes.main([tmpname, "--big", "--outfile", options.output]) else: routes = list(cut_routes(edges, orig_net, options)) routes.sort() with open(options.output, "w") as f: write_to_file(routes, f)
def main(): options = get_options() net = readNet(options.network) edges = set([e.getID() for e in net.getEdges()]) if options.orig_net is not None: orig_net = readNet(options.orig_net) else: orig_net = None print "Valid area contains %s edges" % len(edges) if options.trips: start_tag = '<trips>' end_tag = '</trips>' output_type = 'trips' writer = write_trip else: start_tag = '<routes>' end_tag = '</routes>' output_type = 'routes' writer = write_route def write_to_file(routes, f): comment = '<!-- generated with %s for %s from %s -->' % ( os.path.basename(__file__), options.network, options.routeFiles) print >> f, comment print >> f, start_tag num_routes = 0 for route in routes: num_routes += 1 writer(f, *route) print >> f, end_tag print "Wrote %s %s" % (num_routes, output_type) if options.big: # write output unsorted tmpname = options.output + ".unsorted" with open(tmpname, 'w') as f: write_to_file(cut_routes(edges, orig_net, options), f) # sort out of memory sort_routes.main([tmpname, '--big', '--outfile', options.output]) else: routes = list(cut_routes(edges, orig_net, options)) routes.sort() with open(options.output, 'w') as f: write_to_file(routes, f)
def main(options): net = readNet(options.network) edges = set([e.getID() for e in net.getEdges()]) print("Valid area contains %s edges" % len(edges)) def write_to_file(vehicles, f): f.write( '<!-- generated with %s for %s from %s -->\n' % (os.path.basename(__file__), options.network, options.routeFiles)) f.write(( '<routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' + 'xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/routes_file.xsd">\n' )) num_trips = 0 num_persons = 0 for _, v in vehicles: if v.name == 'trip': num_trips += 1 else: num_persons += 1 writer(f, v) f.write('</routes>\n') if num_persons > 0: print("Wrote %s trips and %s persons" % (num_trips, num_persons)) else: print("Wrote %s trips" % (num_trips)) validTaz = set() if options.additional_input: for taz in parse(options.additional_input, 'taz'): validTaz.add(taz.id) if options.big: # write output unsorted tmpname = options.output + ".unsorted" with codecs.open(tmpname, 'w', encoding='utf8') as f: write_to_file(cut_trips(edges, options, validTaz), f) # sort out of memory sort_routes.main([tmpname, '--big', '--outfile', options.output]) else: routes = list(cut_trips(edges, options, validTaz)) routes.sort(key=lambda v: v[0]) with codecs.open(options.output, 'w', encoding='utf8') as f: write_to_file(routes, f)
def main(options): net = readNet(options.network) edges = set([e.getID() for e in net.getEdges()]) print("Valid area contains %s edges" % len(edges)) def write_to_file(vehicles, f): f.write('<!-- generated with %s for %s from %s -->\n' % (os.path.basename(__file__), options.network, options.routeFiles)) f.write( ('<routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' + 'xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/routes_file.xsd">\n')) num_trips = 0 num_persons = 0 for _, v in vehicles: if v.name == 'trip': num_trips += 1 else: num_persons += 1 writer(f, v) f.write('</routes>\n') if num_persons > 0: print("Wrote %s trips and %s persons" % (num_trips, num_persons)) else: print("Wrote %s trips" % (num_trips)) validTaz = set() if options.additional_input: for taz in parse(options.additional_input, 'taz'): validTaz.add(taz.id) if options.big: # write output unsorted tmpname = options.output + ".unsorted" with codecs.open(tmpname, 'w', encoding='utf8') as f: write_to_file( cut_trips(edges, options, validTaz), f) # sort out of memory sort_routes.main([tmpname, '--big', '--outfile', options.output]) else: routes = list(cut_trips(edges, options, validTaz)) routes.sort(key=lambda v: v[0]) with codecs.open(options.output, 'w', encoding='utf8') as f: write_to_file(routes, f)
def run_subnet(options, first_depart, last_depart, routes, weights, subnet_edges): routes, weights = run_oneshot(options, first_depart, last_depart, routes, weights) edges = open(subnet_edges).read().split() subnet = os.path.basename(subnet_edges)[:-4] class cutOpt: routeFiles = [routes] min_length = 0 disconnected_action = 'discard' speed_factor = 1. with open(routes[:-4] + "_cut_unsorted.xml", 'w') as route_out: route_out.write( '<routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/routes_file.xsd">\n' ) for _, vehicle in cutRoutes.cut_routes(edges, options.net, cutOpt()): vehicle.setAttribute('departLane', 'best') vehicle.setAttribute('departSpeed', 'max') route_out.write(vehicle.toXML(' ')) route_out.write('</routes>\n') routes = routes[:-4] + "_cut.xml" sort_routes.main([route_out.name, '--big', '--outfile', routes]) save_opt = (options.net_file, options.bidi_taz_file, options.vtype_file, options.background_trips) options.net_file = os.path.join(os.path.dirname(options.net_file), '%s.net.xml' % subnet) options.bidi_taz_file = os.path.join( os.path.dirname(options.bidi_taz_file), '%s_bidi.taz.xml' % subnet) options.vtype_file = os.path.join(os.path.dirname(options.vtype_file), '%s_vtypes.xml' % subnet) options.background_trips = "" addOpt = "--max-depart-delay 1 --max-num-vehicles 9000 --device.rerouting.adaptation-steps 360 --device.rerouting.probability 0.6 " if "oneshot" in options.assignment: routes, weights = run_oneshot(options, first_depart, last_depart, routes, weights, False, addOpt) if "gawron" in options.assignment: routes, weights = run_duaiterate(options, first_depart, last_depart, routes, weights, False) options.net_file, options.bidi_taz_file, options.vtype_file, options.background_trips = save_opt return routes, weights
def main(options): net = readNet(options.network) edges = set([e.getID() for e in net.getEdges()]) if options.orig_net is not None: orig_net = readNet(options.orig_net) else: orig_net = None print("Valid area contains %s edges" % len(edges)) if options.trips: writer = write_trip else: writer = write_route busStopEdges = {} if options.stops_output: busStops = io.open(options.stops_output, 'w', encoding="utf8") writeHeader(busStops, os.path.basename(__file__), 'additional') if options.additional_input: num_busstops = 0 kept_busstops = 0 num_taz = 0 kept_taz = 0 for busStop in parse(options.additional_input, ('busStop', 'trainStop')): num_busstops += 1 edge = busStop.lane[:-2] busStopEdges[busStop.id] = edge if options.stops_output and edge in edges: kept_busstops += 1 if busStop.access: busStop.access = [acc for acc in busStop.access if acc.lane[:-2] in edges] busStops.write(busStop.toXML(u' ')) for taz in parse(options.additional_input, 'taz'): num_taz += 1 taz_edges = [e for e in taz.edges.split() if e in edges] if taz_edges: taz.edges = " ".join(taz_edges) if options.stops_output: kept_taz += 1 busStops.write(taz.toXML(u' ')) if num_busstops > 0 and num_taz > 0: print("Kept %s of %s busStops and %s of %s tazs" % ( kept_busstops, num_busstops, kept_taz, num_taz)) elif num_busstops > 0: print("Kept %s of %s busStops" % (kept_busstops, num_busstops)) elif num_taz > 0: print("Kept %s of %s tazs" % (kept_taz, num_taz)) if options.stops_output: busStops.write(u'</additional>\n') busStops.close() def write_to_file(vehicles, f): writeHeader(f, os.path.basename(__file__), 'routes') numRefs = defaultdict(int) for _, v in vehicles: if options.trips and v.name == "vehicle": numRefs["trip"] += 1 else: numRefs[v.name] += 1 if v.name == "vType": f.write(v.toXML(u' ')) else: writer(f, v) f.write(u'</routes>\n') if numRefs: print("Wrote", ", ".join(["%s %ss" % (k[1], k[0]) for k in sorted(numRefs.items())])) else: print("Wrote nothing") startEndEdgeMap = {} if options.pt_input: allRouteFiles = options.routeFiles options.routeFiles = [options.pt_input] startEndRouteEdge = {} with io.open(options.pt_output if options.pt_output else options.pt_input + ".cut", 'w', encoding="utf8") as f: writeHeader(f, os.path.basename(__file__), 'routes') for _, v in cut_routes(edges, orig_net, options, busStopEdges): f.write(v.toXML(u' ')) if v.name == "route": routeEdges = v.edges.split() startEndRouteEdge[v.id] = (routeEdges[0], routeEdges[-1]) elif isinstance(v.route, list): routeEdges = v.route[0].edges.split() startEndEdgeMap[v.line] = (routeEdges[0], routeEdges[-1]) elif v.route is not None: startEndEdgeMap[v.line] = startEndRouteEdge[v.route] f.write(u'</routes>\n') options.routeFiles = allRouteFiles if options.big: # write output unsorted tmpname = options.output + ".unsorted" with io.open(tmpname, 'w', encoding="utf8") as f: write_to_file(cut_routes(edges, orig_net, options, busStopEdges, startEndEdgeMap), f) # sort out of memory sort_routes.main([tmpname, '--big', '--outfile', options.output]) else: routes = list(cut_routes(edges, orig_net, options, busStopEdges, startEndEdgeMap)) routes.sort(key=lambda v: v[0]) with io.open(options.output, 'w', encoding="utf8") as f: write_to_file(routes, f)
def main(options): net = readNet(options.network) edges = set([e.getID() for e in net.getEdges()]) if options.orig_net is not None: orig_net = readNet(options.orig_net) else: orig_net = None print("Valid area contains %s edges" % len(edges)) if options.trips: output_type = 'trips' writer = write_trip else: output_type = 'routes' writer = write_route busStopEdges = {} if options.stops_output: busStops = codecs.open(options.stops_output, 'w', encoding='utf8') busStops.write( '<additional xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' + 'xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/additional_file.xsd">\n') if options.additional_input: num_busstops = 0 kept_busstops = 0 num_taz = 0 kept_taz = 0 for busStop in parse(options.additional_input, ('busStop', 'trainStop')): num_busstops += 1 edge = busStop.lane[:-2] busStopEdges[busStop.id] = edge if options.stops_output and edge in edges: kept_busstops += 1 if busStop.access: busStop.access = [acc for acc in busStop.access if acc.lane[:-2] in edges] busStops.write(busStop.toXML(' ').decode('utf8')) for taz in parse(options.additional_input, 'taz'): num_taz += 1 taz_edges = [e for e in taz.edges.split() if e in edges] if taz_edges: taz.edges = " ".join(taz_edges) if options.stops_output: kept_taz += 1 busStops.write(taz.toXML(' ')) if num_busstops > 0 and num_taz > 0: print("Kept %s of %s busStops and %s of %s tazs" % ( kept_busstops, num_busstops, kept_taz, num_taz)) elif num_busstops > 0: print("Kept %s of %s busStops" % ( kept_busstops, num_busstops)) elif num_taz > 0: print("Kept %s of %s tazs" % ( kept_taz, num_taz)) if options.stops_output: busStops.write('</additional>\n') busStops.close() def write_to_file(vehicles, f): f.write('<!-- generated with %s for %s from %s -->\n' % (os.path.basename(__file__), options.network, options.routeFiles)) f.write( ('<routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' + 'xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/routes_file.xsd">\n')) num_routeRefs = 0 num_vehicles = 0 for _, v in vehicles: if v.name == 'route': num_routeRefs += 1 else: num_vehicles += 1 writer(f, v) f.write('</routes>\n') if num_routeRefs > 0: print("Wrote %s standalone-routes and %s vehicles" % (num_routeRefs, num_vehicles)) else: print("Wrote %s %s" % (num_vehicles, output_type)) if options.big: # write output unsorted tmpname = options.output + ".unsorted" with codecs.open(tmpname, 'w', encoding='utf8') as f: write_to_file( cut_routes(edges, orig_net, options, busStopEdges), f) # sort out of memory sort_routes.main([tmpname, '--big', '--outfile', options.output]) else: routes = list(cut_routes(edges, orig_net, options, busStopEdges)) routes.sort(key=lambda v: v[0]) with codecs.open(options.output, 'w', encoding='utf8') as f: write_to_file(routes, f)