private double scoreRoute(List<RouteSegment> route, Map<TransitStopFacility, InitialNode> fromStops, Map<TransitStopFacility, InitialNode> toStops) { double cost = 0.0; for (RouteSegment routeSegment : route) { if (routeSegment.getRouteTaken() == null) { // handle transfer cost += this.raptorDisutility.getTransferCost(routeSegment.getFromStop().getCoord(), routeSegment.getToStop().getCoord()); } else { // pt trip cost += this.raptorDisutility.getInVehicleTravelDisutility(routeSegment); } } // add cost for getting to the first and last stop cost += fromStops.get(route.get(0).getFromStop()).initialCost; cost += toStops.get(route.get(route.size() - 1).getToStop()).initialCost; return cost; }
private Leg createTransferTransitWalkLeg(RouteSegment routeSegement) { Leg leg = this.createTransitWalkLeg(routeSegement.getFromStop().getCoord(), routeSegement.getToStop().getCoord()); Route walkRoute = RouteUtils.createGenericRouteImpl(routeSegement.getFromStop().getLinkId(), routeSegement.getToStop().getLinkId()); // walkRoute.setTravelTime(leg.getTravelTime() ); // transit walk leg should include additional transfer time; Amit, Aug'17 leg.setTravelTime( getTransferTime(null, routeSegement.getFromStop().getCoord(), routeSegement.getToStop().getCoord()) ); walkRoute.setTravelTime(getTransferTime(null, routeSegement.getFromStop().getCoord(), routeSegement.getToStop().getCoord()) ); walkRoute.setDistance(trConfig.getBeelineDistanceFactor() * NetworkUtils.getEuclideanDistance(routeSegement.fromStop.getCoord(), routeSegement.toStop.getCoord())); leg.setRoute(walkRoute); return leg; }
/** * Note that there is no off vehicle wait time. */ protected double getInVehicleTravelDisutility(final RouteSegment routeSegment) { double cost = 0.0; // this assumes dwell time as in-vehicle time double inVehicleTravelTime = routeSegment.getTravelTime(); double inVehicleBeelineDistance = CoordUtils.calcEuclideanDistance(routeSegment.getFromStop().getCoord(), routeSegment.getToStop().getCoord()); cost += - inVehicleTravelTime * this.config.getMarginalUtilityOfTravelTimePt_utl_s(); cost += - inVehicleBeelineDistance * this.config.getMarginalUtilityOfTravelDistancePt_utl_m(); // fare cost += this.costPerBoarding; cost += inVehicleBeelineDistance * this.costPerMeterTraveled; return cost; }
private Leg createTransitLeg(RouteSegment routeSegment) { Leg leg = PopulationUtils.createLeg(TransportMode.pt); TransitStopFacility accessStop = routeSegment.getFromStop(); TransitStopFacility egressStop = routeSegment.getToStop(); ExperimentalTransitRoute ptRoute = new ExperimentalTransitRoute(accessStop, egressStop, routeSegment.getLineTaken(), routeSegment.getRouteTaken()); ptRoute.setTravelTime(routeSegment.travelTime); leg.setRoute(ptRoute); leg.setTravelTime(routeSegment.getTravelTime()); return leg; }
if (lastRouteSegment.getRouteTaken() == null) { toTransitStop = lastRouteSegment.getToStop(); travelTime += lastRouteSegment.getTravelTime(); route.remove(0);