@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); } }
Departure newDeparture = transitScheduleFactory.createDeparture(newDepartureId, oldDeparture.getDepartureTime()); newDeparture.setVehicleId(oldDeparture.getVehicleId()); mergeDestination.addDeparture(newDeparture);
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++;
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 testAddDeparturesException() { Fixture f = new Fixture(); Departure dep1a = new DepartureImpl(Id.create(1, Departure.class), 7.0*3600); Departure dep1b = new DepartureImpl(Id.create(1, Departure.class), 7.0*3600); assertEquals(0, f.tRoute.getDepartures().size()); f.tRoute.addDeparture(dep1a); assertEquals(1, f.tRoute.getDepartures().size()); try { f.tRoute.addDeparture(dep1b); fail("missing exception."); } catch (IllegalArgumentException e) { log.info("catched expected exception.", e); } }
Departure departure = this.scheduleWithStopsOnly.getFactory().createDeparture(Id.create(n, Departure.class), j); departure.setVehicleId(Id.create(pLineId.toString() + "-" + i, Vehicle.class)); transitRoute_H.addDeparture(departure); j += transitRoute_H.getStop(endStop).getDepartureOffset() + 1 *60; n++; transitRoute_R.addDeparture(departure); j += transitRoute_R.getStop(startStop).getDepartureOffset() + this.driverRestTime; n++;
public void testAddDepartures() { Fixture f = new Fixture(); Departure dep1 = new DepartureImpl(Id.create(1, Departure.class), 7.0*3600); Departure dep2 = new DepartureImpl(Id.create(2, Departure.class), 8.0*3600); Departure dep3 = new DepartureImpl(Id.create(3, Departure.class), 9.0*3600); assertEquals(0, f.tRoute.getDepartures().size()); f.tRoute.addDeparture(dep1); assertEquals(1, f.tRoute.getDepartures().size()); assertEquals(dep1, f.tRoute.getDepartures().get(dep1.getId())); f.tRoute.addDeparture(dep2); assertEquals(2, f.tRoute.getDepartures().size()); assertEquals(dep1, f.tRoute.getDepartures().get(dep1.getId())); assertEquals(dep2, f.tRoute.getDepartures().get(dep2.getId())); assertNull(f.tRoute.getDepartures().get(dep3.getId())); f.tRoute.addDeparture(dep3); assertEquals(3, f.tRoute.getDepartures().size()); assertEquals(dep3, f.tRoute.getDepartures().get(dep3.getId())); }
this.redLine.addRoute(route); route.addDeparture(this.builder.createDeparture(Id.create("r>01", Departure.class), 6.0*3600)); route.addDeparture(this.builder.createDeparture(Id.create("r>02", Departure.class), 7.0*3600)); route.addDeparture(this.builder.createDeparture(Id.create("r>03", Departure.class), 8.0*3600)); route.addDeparture(this.builder.createDeparture(Id.create("r>04", Departure.class), 9.0*3600)); this.redLine.addRoute(route); route.addDeparture(this.builder.createDeparture(Id.create("r<01", Departure.class), 6.0*3600 + 10.0*60)); route.addDeparture(this.builder.createDeparture(Id.create("r<02", Departure.class), 7.0*3600 + 10.0*60)); route.addDeparture(this.builder.createDeparture(Id.create("r<03", Departure.class), 8.0*3600 + 10.0*60)); route.addDeparture(this.builder.createDeparture(Id.create("r<04", Departure.class), 9.0*3600 + 10.0*60));
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); } }
public void testRemoveDepartures() { Fixture f = new Fixture(); Departure dep1 = new DepartureImpl(Id.create(1, Departure.class), 7.0*3600); Departure dep2 = new DepartureImpl(Id.create(2, Departure.class), 8.0*3600); f.tRoute.addDeparture(dep1); f.tRoute.addDeparture(dep2); assertEquals(2, f.tRoute.getDepartures().size()); assertNotNull(f.tRoute.getDepartures().get(dep1.getId())); assertNotNull(f.tRoute.getDepartures().get(dep2.getId())); assertTrue(f.tRoute.removeDeparture(dep1)); assertEquals(1, f.tRoute.getDepartures().size()); assertNull(f.tRoute.getDepartures().get(dep1.getId())); assertNotNull(f.tRoute.getDepartures().get(dep2.getId())); assertTrue(f.tRoute.removeDeparture(dep2)); assertEquals(0, f.tRoute.getDepartures().size()); f.tRoute.addDeparture(dep1); assertEquals(1, f.tRoute.getDepartures().size()); assertFalse(f.tRoute.removeDeparture(dep2)); assertEquals(1, f.tRoute.getDepartures().size()); assertNotNull(f.tRoute.getDepartures().get(dep1.getId())); }
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); }
TransitRoute tRoute = builder.createTransitRoute(Id.create("L1", TransitRoute.class), route, stops, "bus"); Departure dep = builder.createDeparture(Id.create("L1.1", Departure.class), 9876.0); tRoute.addDeparture(dep); tLine.addRoute(tRoute); TransitStopAgentTracker tracker = new TransitStopAgentTracker(eventsManager);
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); }
Vehicle vehicle = new VehicleImpl(Id.create(1976, Vehicle.class), vehType); tRoute.addDeparture(dep); tLine.addRoute(tRoute); Umlauf umlauf = buildUmlauf(tLine);
TransitRoute tRoute = builder.createTransitRoute(Id.create("L1", TransitRoute.class), route, stops, "bus"); Departure dep = builder.createDeparture(Id.create("L1.1", Departure.class), 9876.0); tRoute.addDeparture(dep); tLine.addRoute(tRoute); TransitStopAgentTracker tracker = new TransitStopAgentTracker(eventsManager);
tRoute.addDeparture(dep); tLine.addRoute(tRoute); TransitStopAgentTracker tracker = new TransitStopAgentTracker(eventsManager);
TransitQSimEngine trEngine = new TransitQSimEngine(tqsim) ; tqsim.addMobsimEngine(trEngine); tRoute.addDeparture(dep); tLine.addRoute(tRoute); Umlauf umlauf = buildUmlauf(tLine);
Vehicle vehicle = new VehicleImpl(Id.create(1976, Vehicle.class), vehType); tRoute.addDeparture(dep); tLine.addRoute(tRoute); Umlauf umlauf = buildUmlauf(tLine);