void updateCurrentTransitLine(){ this.currentTransitLine = this.routeProvider.createEmptyLineFromOperator(id); for (PPlan plan : this.getAllPlans()) { for (TransitRoute route : plan.getLine().getRoutes().values()) { this.currentTransitLine.addRoute(route); } } }
@Override public void endTag(final String name, final String content, final Stack<String> context) { if (Constants.DESCRIPTION.equals(name) && Constants.TRANSIT_ROUTE.equals(context.peek())) { this.currentTransitRoute.description = content; } else if (Constants.TRANSPORT_MODE.equals(name)) { this.currentTransitRoute.mode = content.intern(); } else if (Constants.TRANSIT_ROUTE.equals(name)) { List<TransitRouteStop> stops = new ArrayList<TransitRouteStop>(this.currentTransitRoute.stops.size()); for (TempStop tStop : this.currentTransitRoute.stops) { TransitRouteStopImpl routeStop = new TransitRouteStopImpl(tStop.stop, tStop.arrival, tStop.departure); stops.add(routeStop); routeStop.setAwaitDepartureTime(tStop.awaitDeparture); } NetworkRoute route = null; if (this.currentRouteProfile.firstLinkId != null) { if (this.currentRouteProfile.lastLinkId == null) { this.currentRouteProfile.lastLinkId = this.currentRouteProfile.firstLinkId; } route = this.routeFactory.createRoute(NetworkRoute.class, this.currentRouteProfile.firstLinkId, this.currentRouteProfile.lastLinkId); route.setLinkIds(this.currentRouteProfile.firstLinkId, this.currentRouteProfile.linkIds, this.currentRouteProfile.lastLinkId); } TransitRoute transitRoute = this.schedule.getFactory().createTransitRoute(this.currentTransitRoute.id, route, stops, this.currentTransitRoute.mode); transitRoute.setDescription(this.currentTransitRoute.description); for (Departure departure : this.currentTransitRoute.departures.values()) { transitRoute.addDeparture(departure); } this.currentTransitLine.addRoute(transitRoute); } }
newLine.addRoute(transitRoute);
line.addRoute(transitRoute);
public void testAddRouteException() { TransitLine tLine = createTransitLine(Id.create("0891", TransitLine.class)); TransitRoute route1a = new TransitRouteImpl(Id.create("1", TransitRoute.class), null, new ArrayList<TransitRouteStop>(), "bus"); TransitRoute route1b = new TransitRouteImpl(Id.create("1", TransitRoute.class), null, new ArrayList<TransitRouteStop>(), "bus"); assertEquals(0, tLine.getRoutes().size()); tLine.addRoute(route1a); assertEquals(1, tLine.getRoutes().size()); // try adding a route with same id try { tLine.addRoute(route1b); fail("missing exception."); } catch (IllegalArgumentException e) { log.info("catched expected exception.", e); } // try adding a route a second time try { tLine.addRoute(route1a); fail("missing excetion."); } catch (IllegalArgumentException e) { log.info("catched expected exception. ", e); } }
private TransitLine createTransitLine(Id<TransitLine> lineId, double startTime, double endTime, int numberOfVehicles, ArrayList<TransitStopFacility> stopsToBeServed, Id<TransitRoute> routeId){ // initialize TransitLine line = this.scheduleWithStopsOnly.getFactory().createTransitLine(lineId); routeId = Id.create(lineId + "-" + routeId, TransitRoute.class); TransitRoute transitRoute = createRoute(routeId, stopsToBeServed); // register route line.addRoute(transitRoute); // add departures int n = 0; /* After finishing one tour, vehicles wait the driver rest time and then start the next tour immediately. * So, headway is a function of the number of vehicles and the time spent on one tour of the TransitRoute. */ int headway = (int) (transitRoute.getStops().get(transitRoute.getStops().size() - 1).getDepartureOffset() + this.driverRestTime) / numberOfVehicles; for (int i = 0; i < numberOfVehicles; i++) { for (double j = startTime + i * headway; j <= endTime; ) { Departure departure = this.scheduleWithStopsOnly.getFactory().createDeparture(Id.create(n, Departure.class), j); departure.setVehicleId(Id.create(transitRoute.getId().toString() + "-" + i, Vehicle.class)); transitRoute.addDeparture(departure); j += transitRoute.getStops().get(transitRoute.getStops().size() - 1).getDepartureOffset() + this.driverRestTime; n++; } } // log.info("added " + n + " departures"); return line; }
private TransitLine createTransitLine(Id<TransitLine> pLineId, double startTime, double endTime, int numberOfVehicles, ArrayList<TransitStopFacility> stopsToBeServed, Id<TransitRoute> routeId){ // initialize TransitLine line = this.scheduleWithStopsOnly.getFactory().createTransitLine(pLineId); routeId = Id.create(pLineId + "-" + routeId, TransitRoute.class); TransitRoute transitRoute = createRoute(routeId, stopsToBeServed); // register route line.addRoute(transitRoute); // add departures int n = 0; /* After finishing one tour, vehicles wait the driver rest time and then start the next tour immediately. * So, headway is a function of the number of vehicles and the time spent on one tour of the TransitRoute. */ int headway = (int) (transitRoute.getStops().get(transitRoute.getStops().size() - 1).getDepartureOffset() + this.driverRestTime) / numberOfVehicles; for (int i = 0; i < numberOfVehicles; i++) { for (double j = startTime + i * headway; j <= endTime; ) { Departure departure = this.scheduleWithStopsOnly.getFactory().createDeparture(Id.create(n, Departure.class), j); departure.setVehicleId(Id.create(transitRoute.getId().toString() + "-" + i, Vehicle.class)); transitRoute.addDeparture(departure); j += transitRoute.getStops().get(transitRoute.getStops().size() - 1).getDepartureOffset() + this.driverRestTime; n++; } } // log.info("added " + n + " departures"); return line; }
public void testAddRoute() { TransitLine tLine = createTransitLine(Id.create("0891", TransitLine.class)); TransitRoute route1 = new TransitRouteImpl(Id.create("1", TransitRoute.class), null, new ArrayList<TransitRouteStop>(), "bus"); TransitRoute route2 = new TransitRouteImpl(Id.create("2", TransitRoute.class), null, new ArrayList<TransitRouteStop>(), "bus"); assertEquals(0, tLine.getRoutes().size()); tLine.addRoute(route1); assertEquals(1, tLine.getRoutes().size()); assertNotNull(tLine.getRoutes().get(route1.getId())); tLine.addRoute(route2); assertEquals(2, tLine.getRoutes().size()); assertNotNull(tLine.getRoutes().get(route1.getId())); assertNotNull(tLine.getRoutes().get(route2.getId())); }
public void testRemoveRoute() { TransitLine tLine = createTransitLine(Id.create("1980", TransitLine.class)); TransitRoute route1 = new TransitRouteImpl(Id.create("11", TransitRoute.class), null, new ArrayList<TransitRouteStop>(), "bus"); TransitRoute route2 = new TransitRouteImpl(Id.create("5", TransitRoute.class), null, new ArrayList<TransitRouteStop>(), "bus"); assertEquals(0, tLine.getRoutes().size()); tLine.addRoute(route1); tLine.addRoute(route2); assertEquals(2, tLine.getRoutes().size()); assertNotNull(tLine.getRoutes().get(route1.getId())); assertNotNull(tLine.getRoutes().get(route2.getId())); assertTrue(tLine.removeRoute(route1)); assertEquals(1, tLine.getRoutes().size()); assertNull(tLine.getRoutes().get(route1.getId())); assertNotNull(tLine.getRoutes().get(route2.getId())); assertTrue(tLine.removeRoute(route2)); assertEquals(0, tLine.getRoutes().size()); tLine.addRoute(route1); assertEquals(1, tLine.getRoutes().size()); assertFalse(tLine.removeRoute(route2)); assertEquals(1, tLine.getRoutes().size()); assertNotNull(tLine.getRoutes().get(route1.getId())); }
private void createTransitSchedule() { TransitSchedule schedule = this.scenario.getTransitSchedule(); TransitScheduleFactory builder = schedule.getFactory(); TransitStopFacility[] stops = new TransitStopFacility[nOfLinks]; ArrayList<TransitRouteStop> stopList = new ArrayList<>(nOfLinks); for (int i = 0; i < nOfLinks; i++) { stops[i] = builder.createTransitStopFacility(Id.create(i, TransitStopFacility.class), new Coord((i + 1) * 500, 0), stopsBlockLane); stops[i].setLinkId(Id.create(i, Link.class)); schedule.addStopFacility(stops[i]); TransitRouteStop stop = builder.createTransitRouteStop(stops[i], i * 50, i * 50 + 10); stopList.add(stop); } Link startLink = this.scenario.getNetwork().getLinks().get(Id.create(0, Link.class)); Link endLink = this.scenario.getNetwork().getLinks().get(Id.create(nOfLinks - 1, Link.class)); NetworkRoute networkRoute = this.scenario.getPopulation().getFactory().getRouteFactories().createRoute(NetworkRoute.class, startLink.getId(), endLink.getId()); ArrayList<Id<Link>> linkList = new ArrayList<>(nOfLinks - 2); for (int i = 1; i < nOfLinks -1; i++) { linkList.add(Id.create(i, Link.class)); } networkRoute.setLinkIds(startLink.getId(), linkList, endLink.getId()); TransitRoute tRoute = builder.createTransitRoute(Id.create(1, TransitRoute.class), networkRoute, stopList, "bus"); TransitLine tLine = builder.createTransitLine(Id.create(1, TransitLine.class)); tLine.addRoute(tRoute); schedule.addTransitLine(tLine); for (int i = 0; i < nOfBuses; i++ ) { Departure dep = builder.createDeparture(Id.create(i, Departure.class), departureTime + i*heading + (i == delayedBus ? delay : 0)); dep.setVehicleId(Id.create(i, Vehicle.class)); tRoute.addDeparture(dep); } }
stops.add(this.builder.createTransitRouteStop(this.stopFacilities[12], Time.UNDEFINED_TIME, 9.0*60)); TransitRoute route = this.builder.createTransitRoute(Id.create("red C > G", TransitRoute.class), netRoute, stops, "train"); this.redLine.addRoute(route); stops.add(this.builder.createTransitRouteStop(this.stopFacilities[5], Time.UNDEFINED_TIME, 9.0*60)); TransitRoute route = this.builder.createTransitRoute(Id.create("red G > C", TransitRoute.class), netRoute, stops, "train"); this.redLine.addRoute(route);
private void addSimpleTransitServices(Scenario scenario) { TransitSchedule schedule = scenario.getTransitSchedule(); TransitScheduleFactory f = schedule.getFactory(); final double x = -6000; TransitStopFacility stopFacility1 = f.createTransitStopFacility(Id.create(1, TransitStopFacility.class), new Coord(x, (double) 1500), false); stopFacility1.setLinkId(Id.create(14, Link.class)); final double y = -4000; TransitStopFacility stopFacility2 = f.createTransitStopFacility(Id.create(2, TransitStopFacility.class), new Coord((double) 5000, y), false); stopFacility2.setLinkId(Id.create(21, Link.class)); schedule.addStopFacility(stopFacility1); schedule.addStopFacility(stopFacility2); TransitLine line1 = f.createTransitLine(Id.create(1, TransitLine.class)); NetworkRoute netRoute = RouteUtils.createLinkNetworkRouteImpl(Id.create("14", Link.class), new Id[] { Id.create("20", Link.class) }, Id.create("21", Link.class)); List<TransitRouteStop> stops = new ArrayList<TransitRouteStop>(); stops.add(f.createTransitRouteStop(stopFacility1, Time.UNDEFINED_TIME, 0)); stops.add(f.createTransitRouteStop(stopFacility2, 180, Time.UNDEFINED_TIME)); TransitRoute route1 = f.createTransitRoute(Id.create(1, TransitRoute.class), netRoute, stops, "bus"); line1.addRoute(route1); schedule.addTransitLine(line1); for (int i = 0; i < 20; i++) { route1.addDeparture(f.createDeparture(Id.create(i, Departure.class), 6.0 * 3600 + i * 600)); } new CreateVehiclesForSchedule(schedule, scenario.getTransitVehicles()).run(); }
@Test public void testInitializationDeparture() { Config config = ConfigUtils.createConfig(); config.transit().setUseTransit(true); Scenario scenario = ScenarioUtils.createScenario(config); EventsManager eventsManager = EventsUtils.createEventsManager(); TransitStopAgentTracker tracker = new TransitStopAgentTracker(eventsManager); PrepareForSimUtils.createDefaultPrepareForSim(scenario).run(); QSim tqsim = new QSimBuilder(scenario.getConfig()) // .useDefaults() // .build(scenario, eventsManager); TransitQSimEngine trEngine = new TransitQSimEngine(tqsim) ; tqsim.addMobsimEngine(trEngine); TransitScheduleFactory builder = scenario.getTransitSchedule().getFactory(); TransitLine tLine = builder.createTransitLine(Id.create("L", TransitLine.class)); NetworkRoute route = RouteUtils.createLinkNetworkRouteImpl(null, null); TransitRoute tRoute = builder.createTransitRoute(Id.create("L1", TransitRoute.class), route, Collections.<TransitRouteStop>emptyList(), "bus"); double depTime = 9876.5; Departure dep = builder.createDeparture(Id.create("L1.1", Departure.class), depTime); tRoute.addDeparture(dep); tLine.addRoute(tRoute); AbstractTransitDriverAgent driver = new TransitDriverAgentImpl(new SingletonUmlaufBuilderImpl(Collections.singleton(tLine)).build().get(0), TransportMode.car, tracker, trEngine.getInternalInterface()); assertEquals(depTime, driver.getActivityEndTime(), MatsimTestCase.EPSILON); }
Departure dep = builder.createDeparture(Id.create("L1.1", Departure.class), 9876.0); tRoute.addDeparture(dep); tLine.addRoute(tRoute); TransitStopAgentTracker tracker = new TransitStopAgentTracker(eventsManager); MutableScenario scenario = (MutableScenario) ScenarioUtils.createScenario(ConfigUtils.createConfig());
public void testInitializationDeparture() { TransitScheduleFactory builder = new TransitScheduleFactoryImpl(); TransitLine tLine = builder.createTransitLine(Id.create("L", TransitLine.class)); NetworkRoute route = RouteUtils.createLinkNetworkRouteImpl(null, null); TransitRoute tRoute = builder.createTransitRoute(Id.create("L", TransitRoute.class), route, Collections.<TransitRouteStop>emptyList(), "bus"); double depTime = 9876.5; Departure dep = builder.createDeparture(Id.create("L1.1", Departure.class), depTime); tRoute.addDeparture(dep); tLine.addRoute(tRoute); Umlauf umlauf = buildUmlauf(tLine); EventsManager events = EventsUtils.createEventsManager(); TransitStopAgentTracker tracker = new TransitStopAgentTracker(events); Scenario scenario = ScenarioUtils.createScenario(ConfigUtils.createConfig()); PrepareForSimUtils.createDefaultPrepareForSim(scenario).run(); QSim tqsim = new QSimBuilder(scenario.getConfig()) // .useDefaults() // .build(scenario, events); TransitQSimEngine trEngine = new TransitQSimEngine(tqsim) ; tqsim.addMobsimEngine(trEngine); AbstractTransitDriverAgent driver = new TransitDriverAgentImpl(umlauf, TransportMode.car, tracker, trEngine.getInternalInterface()); assertEquals(depTime, driver.getActivityEndTime(), MatsimTestCase.EPSILON); }
tLine.addRoute(tRoute); Umlauf umlauf = buildUmlauf(tLine); AbstractTransitDriverAgent driver = new TransitDriverAgentImpl(umlauf, TransportMode.car, tracker, trEngine.getInternalInterface());
Departure dep = builder.createDeparture(Id.create("L1.1", Departure.class), 9876.0); tRoute.addDeparture(dep); tLine.addRoute(tRoute); TransitStopAgentTracker tracker = new TransitStopAgentTracker(eventsManager); Scenario scenario = ScenarioUtils.createScenario(ConfigUtils.createConfig());
tqsim.addMobsimEngine(trEngine); tRoute.addDeparture(dep); tLine.addRoute(tRoute); Umlauf umlauf = buildUmlauf(tLine); AbstractTransitDriverAgent driver = new TransitDriverAgentImpl(umlauf, TransportMode.car, tracker, trEngine.getInternalInterface());
tLine.addRoute(tRoute); Umlauf umlauf = buildUmlauf(tLine); AbstractTransitDriverAgent driver = new TransitDriverAgentImpl(umlauf, TransportMode.walk, tracker, trEngine.getInternalInterface());