@Override public Trip findTrip(Leg prevLeg, double earliestDepartureTime_s) { ExperimentalTransitRoute route = (ExperimentalTransitRoute) prevLeg.getRoute(); TransitLine line = this.transitLines.get(route.getLineId()); TransitRoute transitRoute = line.getRoutes().get(route.getRouteId()); final double accessTime_s = earliestDepartureTime_s + this.waitTimes.getRouteStopWaitTime(route.getLineId(), transitRoute.getId(), route.getAccessStopId(), earliestDepartureTime_s); final double egressTime_s = accessTime_s + this.findTransitTravelTime(route, accessTime_s); return new Trip(null, accessTime_s, egressTime_s); }
String planIdString = route.getRouteId().toString(); Id<PPlan> pId = Id.create(planIdString, PPlan.class);
@Override public Trip findTrip(Leg prevLeg, double earliestDepartureTime_s) { ExperimentalTransitRoute route = (ExperimentalTransitRoute) prevLeg.getRoute(); Id accessStopId = route.getAccessStopId(); Id egressStopId = route.getEgressStopId(); Tuple<Double, Double> routeTravelTime = transitPerformance.getRouteTravelTime(route.getLineId(), route.getRouteId(), accessStopId, egressStopId, earliestDepartureTime_s); final double accessTime_s = earliestDepartureTime_s + routeTravelTime.getFirst(); final double egressTime_s = accessTime_s + routeTravelTime.getSecond(); return new Trip(null, accessTime_s, egressTime_s); } }
public static double calcDistance(ExperimentalTransitRoute route, TransitSchedule ts, Network network) { Id<TransitRoute> routeId = route.getRouteId(); Id<TransitStopFacility> enterStopId = route.getAccessStopId(); Id<TransitStopFacility> exitStopId = route.getEgressStopId();
if (route.getRouteId().toString().equalsIgnoreCase(transitRoute.getId().toString())) { LinkedList<TransitRouteStop> tempStopsToCome = new LinkedList<>(stopsToCome); TransitRoute transitRoutePlanned = this.transitSchedule.getTransitLines().get(route.getLineId()).getRoutes().get(route.getRouteId()); if (transitRoutePlanned == null) {
@Override public void handleEvent(PersonStuckEvent event) { Double startWaitingTime = agentsWaitingData.get(event.getPersonId()); if(startWaitingTime!=null) { int legs = 0, currentLeg = agentsCurrentLeg.get(event.getPersonId()); PLAN_ELEMENTS: for(PlanElement planElement:population.getPersons().get(event.getPersonId()).getSelectedPlan().getPlanElements()) if(planElement instanceof Leg) { if(currentLeg==legs) { Route route = ((Leg)planElement).getRoute(); ExperimentalTransitRoute eRoute = (ExperimentalTransitRoute) new ExperimentalTransitRouteFactory().createRoute(route.getStartLinkId(), route.getEndLinkId()); eRoute.setStartLinkId(route.getStartLinkId()); eRoute.setEndLinkId(route.getEndLinkId()); eRoute.setRouteDescription(route.getRouteDescription()); WaitTimeData data = waitTimes.get(new Tuple<Id<TransitLine>, Id<TransitRoute>>(eRoute.getLineId(), eRoute.getRouteId())).get(eRoute.getAccessStopId()); if(data!=null) data.addWaitTime((int) (startWaitingTime/timeSlot), event.getTime()-startWaitingTime); agentsWaitingData.remove(event.getPersonId()); break PLAN_ELEMENTS; } else legs++; } } }
public void testSetRouteDescription_PtRoute() { ExperimentalTransitRoute route = new ExperimentalTransitRoute(null, null); route.setRouteDescription("PT1===5===11===1980===1055"); assertEquals("5", route.getAccessStopId().toString()); assertEquals("11", route.getLineId().toString()); assertEquals("1980", route.getRouteId().toString()); assertEquals("1055", route.getEgressStopId().toString()); assertEquals("PT1===5===11===1980===1055", route.getRouteDescription()); }
@Override public void handleEvent(PersonEntersVehicleEvent event) { Double startWaitingTime = agentsWaitingData.get(event.getPersonId()); if(startWaitingTime!=null) { int legs = 0, currentLeg = agentsCurrentLeg.get(event.getPersonId()); PLAN_ELEMENTS: for(PlanElement planElement:population.getPersons().get(event.getPersonId()).getSelectedPlan().getPlanElements()) if(planElement instanceof Leg) { if(currentLeg==legs) { Route route = (((Leg)planElement).getRoute()); ExperimentalTransitRoute eRoute = (ExperimentalTransitRoute) new ExperimentalTransitRouteFactory().createRoute(route.getStartLinkId(), route.getEndLinkId()); eRoute.setStartLinkId(route.getStartLinkId()); eRoute.setEndLinkId(route.getEndLinkId()); eRoute.setRouteDescription(route.getRouteDescription()); WaitTimeData data = waitTimes.get(new Tuple<Id<TransitLine>, Id<TransitRoute>>(eRoute.getLineId(), eRoute.getRouteId())).get(eRoute.getAccessStopId()); data.addWaitTime((int) (startWaitingTime/timeSlot), event.getTime()-startWaitingTime); agentsWaitingData.remove(event.getPersonId()); break PLAN_ELEMENTS; } else legs++; } } }
double prevStopTime = prevEndTime; TransitRouteImpl transitRoute = (TransitRouteImpl) transitLines.get(route.getLineId()).getRoutes() .get(route.getRouteId());
public void testSetRouteDescription_PtRouteWithDescription() { ExperimentalTransitRoute route = new ExperimentalTransitRoute(null, null); route.setRouteDescription("PT1===5===11===1980===1055===this is a===valid route"); assertEquals("5", route.getAccessStopId().toString()); assertEquals("11", route.getLineId().toString()); assertEquals("1980", route.getRouteId().toString()); assertEquals("1055", route.getEgressStopId().toString()); assertEquals("PT1===5===11===1980===1055===this is a===valid route", route.getRouteDescription()); }
@Test public void testSingleLine() { Fixture f = new Fixture(); f.init(); TransitRouterConfig trConfig = new TransitRouterConfig(f.scenario.getConfig()); TransitRouter router = createTransitRouter(f.schedule, trConfig, routerType); Coord fromCoord = new Coord(3800, 5100); Coord toCoord = new Coord(16100, 5050); List<Leg> legs = router.calcRoute(new FakeFacility(fromCoord), new FakeFacility(toCoord), 5.0*3600, null); assertEquals(3, legs.size()); assertEquals(TransportMode.transit_walk, legs.get(0).getMode()); assertEquals(TransportMode.pt, legs.get(1).getMode()); assertEquals(TransportMode.transit_walk, legs.get(2).getMode()); assertTrue("expected TransitRoute in leg.", legs.get(1).getRoute() instanceof ExperimentalTransitRoute); ExperimentalTransitRoute ptRoute = (ExperimentalTransitRoute) legs.get(1).getRoute(); assertEquals(Id.create("0", TransitStopFacility.class), ptRoute.getAccessStopId()); assertEquals(Id.create("6", TransitStopFacility.class), ptRoute.getEgressStopId()); assertEquals(f.blueLine.getId(), ptRoute.getLineId()); assertEquals(Id.create("blue A > I", TransitRoute.class), ptRoute.getRouteId()); double actualTravelTime = 0.0; for (Leg leg : legs) { actualTravelTime += leg.getTravelTime(); } double expectedTravelTime = 29.0 * 60 + // agent takes the *:06 course, arriving in D at *:29 CoordUtils.calcEuclideanDistance(f.schedule.getFacilities().get(Id.create("6", TransitStopFacility.class)).getCoord(), toCoord) / trConfig.getBeelineWalkSpeed(); assertEquals(expectedTravelTime, actualTravelTime, MatsimTestCase.EPSILON); }
assertEquals(Id.create("4", TransitStopFacility.class), ptRoute.getEgressStopId()); assertEquals(f.blueLine.getId(), ptRoute.getLineId()); assertEquals(Id.create("blue A > I", TransitRoute.class), ptRoute.getRouteId()); assertTrue("expected TransitRoute in leg.", legs.get(3).getRoute() instanceof ExperimentalTransitRoute); ptRoute = (ExperimentalTransitRoute) legs.get(3).getRoute(); assertEquals(Id.create("19", TransitStopFacility.class), ptRoute.getEgressStopId()); assertEquals(f.greenLine.getId(), ptRoute.getLineId()); assertEquals(Id.create("green clockwise", TransitRoute.class), ptRoute.getRouteId()); double actualTravelTime = 0.0; for (Leg leg : legs) {
@Test public void testCoordFarAway() { Fixture f = new Fixture(); f.init(); final TransitRouterConfig trConfig = new TransitRouterConfig(f.scenario.getConfig().planCalcScore(), f.scenario.getConfig().plansCalcRoute(), f.scenario.getConfig().transitRouter(), f.scenario.getConfig().vspExperimental() ); TransitRouter router = createTransitRouter(f.schedule, trConfig, routerType); double x = +42000; double x1 = -2000; List<Leg> legs = router.calcRoute(new FakeFacility(new Coord(x1, (double) 0)), new FakeFacility(new Coord(x, (double) 0)), 5.5*3600, null); // should map to stops A and I assertEquals(3, legs.size()); assertEquals(TransportMode.transit_walk, legs.get(0).getMode()); assertEquals(TransportMode.pt, legs.get(1).getMode()); assertEquals(TransportMode.transit_walk, legs.get(2).getMode()); assertTrue("expected TransitRoute in leg.", legs.get(1).getRoute() instanceof ExperimentalTransitRoute); ExperimentalTransitRoute ptRoute = (ExperimentalTransitRoute) legs.get(1).getRoute(); assertEquals(Id.create("0", TransitStopFacility.class), ptRoute.getAccessStopId()); assertEquals(Id.create("16", TransitStopFacility.class), ptRoute.getEgressStopId()); assertEquals(f.blueLine.getId(), ptRoute.getLineId()); assertEquals(Id.create("blue A > I", TransitRoute.class), ptRoute.getRouteId()); }
assertEquals(Id.create("4", TransitStopFacility.class), ptRoute.getEgressStopId()); assertEquals(f.blueLine.getId(), ptRoute.getLineId()); assertEquals(Id.create("blue A > I", TransitRoute.class), ptRoute.getRouteId()); assertTrue("expected TransitRoute in leg.", legs.get(2).getRoute() instanceof ExperimentalTransitRoute); ptRoute = (ExperimentalTransitRoute) legs.get(2).getRoute(); assertEquals(Id.create("12", TransitStopFacility.class), ptRoute.getEgressStopId()); assertEquals(f.redLine.getId(), ptRoute.getLineId()); assertEquals(Id.create("red C > G", TransitRoute.class), ptRoute.getRouteId()); double actualTravelTime = 0.0; for (Leg leg : legs) {
@Test public void testAfterMidnight() { Fixture f = new Fixture(); f.init(); TransitRouterConfig trConfig = new TransitRouterConfig(f.scenario.getConfig().planCalcScore(), f.scenario.getConfig().plansCalcRoute(), f.scenario.getConfig().transitRouter(), f.scenario.getConfig().vspExperimental()); trConfig.setBeelineWalkSpeed(0.1); // something very slow, so the agent does not walk over night TransitRouter router = createTransitRouter(f.schedule, trConfig, routerType); Coord toCoord = new Coord((double) 16100, (double) 5050); List<Leg> legs = router.calcRoute(new FakeFacility(new Coord((double) 3800, (double) 5100)), new FakeFacility(toCoord), 25.0*3600, null); assertEquals(3, legs.size()); assertEquals(TransportMode.transit_walk, legs.get(0).getMode()); assertEquals(TransportMode.pt, legs.get(1).getMode()); assertEquals(TransportMode.transit_walk, legs.get(2).getMode()); assertTrue("expected TransitRoute in leg.", legs.get(1).getRoute() instanceof ExperimentalTransitRoute); ExperimentalTransitRoute ptRoute = (ExperimentalTransitRoute) legs.get(1).getRoute(); assertEquals(Id.create("0", TransitStopFacility.class), ptRoute.getAccessStopId()); assertEquals(Id.create("6", TransitStopFacility.class), ptRoute.getEgressStopId()); assertEquals(f.blueLine.getId(), ptRoute.getLineId()); assertEquals(Id.create("blue A > I", TransitRoute.class), ptRoute.getRouteId()); double actualTravelTime = 0.0; for (Leg leg : legs) { actualTravelTime += leg.getTravelTime(); } double expectedTravelTime = 4*3600 + 29.0 * 60 + // arrival at 05:29 at D CoordUtils.calcEuclideanDistance(f.schedule.getFacilities().get(Id.create("6", TransitStopFacility.class)).getCoord(), toCoord) / trConfig.getBeelineWalkSpeed(); assertEquals(expectedTravelTime, actualTravelTime, MatsimTestCase.EPSILON); }
public void testInitializationStops() { TransitScheduleFactory builder = new TransitScheduleFactoryImpl(); TransitStopFacility stop1 = builder.createTransitStopFacility(Id.create(1, TransitStopFacility.class), new Coord(5, 11), false); TransitStopFacility stop2 = builder.createTransitStopFacility(Id.create(2, TransitStopFacility.class), new Coord(18, 7), false); Link link1 = new FakeLink(Id.create(3, Link.class)); Link link2 = new FakeLink(Id.create(4, Link.class)); stop1.setLinkId(link1.getId()); stop2.setLinkId(link2.getId()); TransitLine line = builder.createTransitLine(Id.create(5, TransitLine.class)); TransitRoute tRoute = builder.createTransitRoute(Id.create(6, TransitRoute.class), null, Collections.<TransitRouteStop>emptyList(), "bus"); ExperimentalTransitRoute route = new ExperimentalTransitRoute(stop1, line, tRoute, stop2); assertEquals(stop1.getId(), route.getAccessStopId()); assertEquals(line.getId(), route.getLineId()); assertEquals(tRoute.getId(), route.getRouteId()); assertEquals(stop2.getId(), route.getEgressStopId()); assertEquals(link1.getId(), route.getStartLinkId()); assertEquals(link2.getId(), route.getEndLinkId()); }