public void setCurrentLeg(Leg currentLeg) { this.currentLeg = currentLeg; if (currentLeg.getRoute() instanceof NetworkRoute) { List<Id<Link>> linkIds = ((NetworkRoute) currentLeg.getRoute()).getLinkIds(); currentLinkRoute = linkIds.toArray(new Id[linkIds.size()]); } else { currentLinkRoute = null; } }
private boolean isVehicular(final Trip t) { // note: checking that getVehicle returns null doen't work // when allowing for null routes. Hence the duplication of the logic... final List<Leg> legs = t.getLegsOnly(); if ( legs.isEmpty() ) return false; // XXX what to do if several legs??? final Leg l = legs.get( 0 ); if ( !vehicularModes.contains( l.getMode() ) ) return false; if ( !allowNullRoutes && l.getRoute() == null ) return false; if ( l.getRoute() != null && !(l.getRoute() instanceof NetworkRoute) ) return false; return true; }
@Override public Id<Vehicle> getPlannedVehicleId() { Route route = ((Leg)this.currentPlanElement).getRoute() ; return ((NetworkRoute)route).getVehicleId() ; }
private static Id getDriverId(final MobsimAgent agent) { if ( !(agent instanceof PlanAgent) ) throw new RuntimeException( agent.getClass().toString() ); final Leg currentLeg = (Leg) ((PlanAgent) agent).getCurrentPlanElement(); final PassengerRoute route = (PassengerRoute) currentLeg.getRoute(); return route.getDriverId(); }
private static Collection<Id<Person>> getPassengerIds(final MobsimAgent agent) { if ( !(agent instanceof PlanAgent) ) throw new RuntimeException( agent.getClass().toString() ); final Leg currentLeg = (Leg) ((PlanAgent) agent).getCurrentPlanElement(); final DriverRoute route = (DriverRoute) currentLeg.getRoute(); return route.getPassengersIds(); }
private void changeLegModeTo(final List<PlanElement> tour, final String newMode) { for (PlanElement pe : tour) { if (pe instanceof Leg) { Leg leg = ((Leg) pe); leg.setMode(newMode); Route route = leg.getRoute(); if(route!=null && route instanceof NetworkRoute) { ((NetworkRoute) route).setVehicleId(null); } } } }
@Override public final Double getExpectedTravelDistance() { PlanElement currentPlanElement = this.getCurrentPlanElement(); if (!(currentPlanElement instanceof Leg)) { return null; } return ((Leg) currentPlanElement).getRoute().getDistance(); }
@Override public final Id<Link> getDestinationLinkId() { return this.getCurrentLeg().getRoute().getEndLinkId() ; } @Override
@Override public final Id<TransitStopFacility> getDesiredDestinationStopId() { ExperimentalTransitRoute route = (ExperimentalTransitRoute) basicAgentDelegate.getCurrentLeg().getRoute(); return route.getEgressStopId(); } @Override
private double getTravelDist(final Person person) { double travelDist=0.0; for (PlanElement pe : person.getSelectedPlan().getPlanElements()) { if (pe instanceof Leg) { travelDist+=((Leg) pe).getRoute().getDistance(); } } return travelDist; }
private NetworkRoute calcRoute(LinkToLinkRoutingModule router, final Facility fromFacility, final Facility toFacility, final Person person) { Leg leg = (Leg)router.calcRoute(fromFacility, toFacility, 0.0, person).get(0); return (NetworkRoute) leg.getRoute(); }
@Override public boolean getExitAtStop(final TransitStopFacility stop) { ExperimentalTransitRoute route = (ExperimentalTransitRoute) getCurrentLeg().getRoute(); return route.getEgressStopId().equals(stop.getId()); }
@Override public final boolean getExitAtStop(final TransitStopFacility stop) { ExperimentalTransitRoute route = (ExperimentalTransitRoute) basicAgentDelegate.getCurrentLeg().getRoute(); return route.getEgressStopId().equals(stop.getId()); }
@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); }
private Route createWalkRoute(final Facility fromFacility, double departureTime, Person person, double travelTime, Facility firstToFacility) { // yyyy I extracted this method to make a bit more transparent that it is used twice. But I don't know why it is done in this way // (take distance from newly computed walk leg, but take travelTime from elsewhere). Possibly, the problem is that the TransitRouter // historically just does not compute the distances. kai, may'17 Route route = RouteUtils.createGenericRouteImpl(fromFacility.getLinkId(), firstToFacility.getLinkId()); final List<? extends PlanElement> walkRoute = walkRouter.calcRoute(fromFacility, firstToFacility, departureTime, person); route.setDistance(((Leg) walkRoute.get(0)).getRoute().getDistance()); route.setTravelTime(travelTime); return route; }
@Override public final boolean getEnterTransitRoute(final TransitLine line, final TransitRoute transitRoute, final List<TransitRouteStop> stopsToCome, TransitVehicle transitVehicle) { ExperimentalTransitRoute route = (ExperimentalTransitRoute) basicAgentDelegate.getCurrentLeg().getRoute(); switch ( boardingAcceptance ) { case checkLineAndStop: return line.getId().equals(route.getLineId()) && containsId(stopsToCome, route.getEgressStopId()); case checkStopOnly: return containsId(stopsToCome, route.getEgressStopId()); default: throw new RuntimeException("not implemented"); } }
@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); } }
@Override public final Id<Vehicle> getPlannedVehicleId() { NetworkRoute route = (NetworkRoute) this.getCurrentLeg().getRoute(); // if casts fail: illegal state. if (route.getVehicleId() != null) { return route.getVehicleId(); } Gbl.assertIf( scenario.getConfig().qsim().getUsePersonIdForMissingVehicleId() ); return Id.create(this.getId(), Vehicle.class); // we still assume the vehicleId is the agentId if no vehicleId is given. } @Override