private TransitPassengerRoute scoreRoutesAndReturnBest(List<List<RouteSegment>> routesFound, Map<TransitStopFacility, InitialNode> fromTransitStops, Map<TransitStopFacility, InitialNode> toTransitStops) { TransitPassengerRoute bestRouteSoFar = null; for (List<RouteSegment> route : routesFound) { double cost = this.scoreRoute(route, fromTransitStops, toTransitStops); if (bestRouteSoFar == null) { bestRouteSoFar = new TransitPassengerRoute(cost, route); } else if (cost < bestRouteSoFar.getTravelCost()) { bestRouteSoFar = new TransitPassengerRoute(cost, route); } } return bestRouteSoFar; }
if (p.getRoute().get(0).getRouteTaken() == null) { accessLeg = createAccessTransitWalkLeg(fromCoord, p.getRoute().get(0)); p.getRoute().remove(0); } else { accessLeg = createAccessTransitWalkLeg(fromCoord, p.getRoute().get(0)); if (p.getRoute().get(p.getRoute().size() - 1).getRouteTaken() == null) { egressLeg = createEgressTransitWalkLeg(p.getRoute().get(p.getRoute().size() - 1), toCoord); p.getRoute().remove(p.getRoute().size() - 1); } else { egressLeg = createEgressTransitWalkLeg(p.getRoute().get(p.getRoute().size() - 1), toCoord); for (RouteSegment routeSegement : p.getRoute()) { if (routeSegement.getRouteTaken() == null) {// transfer if (!routeSegement.fromStop.equals(routeSegement.toStop)) { // same to/from stop => no transfer. Amit Feb'18
} else { if (bestRouteOfThisRound.getTravelCost() < bestRoute.getTravelCost()) { bestRoute = bestRouteOfThisRound;
else return new TransitPassengerRoute(cost, routeSegments);
@Override public List<Leg> calcRoute(final Facility fromFacility, final Facility toFacility, final double departureTime, final Person person) { // find possible start stops Map<TransitStopFacility, InitialNode> fromStops = this.locateWrappedNearestTransitStops(person, fromFacility.getCoord(), departureTime); // find possible end stops Map<TransitStopFacility, InitialNode> toStops = this.locateWrappedNearestTransitStops(person, toFacility.getCoord(), departureTime); // find routes between start and end stops TransitPassengerRoute p = this.raptorWalker.calcLeastCostPath(fromStops, toStops); if (p == null) { // return null; // returning at least walk legs if no PT route is found. Amit Aug'17 return this.createDirectWalkLegList(null, fromFacility.getCoord(), toFacility.getCoord()); } double directWalkCost = getWalkDisutility(fromFacility.getCoord(), toFacility.getCoord()); double pathCost = p.getTravelCost(); if (directWalkCost * getConfig().getDirectWalkFactor() < pathCost) { return this.createDirectWalkLegList(null, fromFacility.getCoord(), toFacility.getCoord()); } return convertPassengerRouteToLegList(departureTime, p, fromFacility.getCoord(), toFacility.getCoord(), person); }
double pathCost = transitPassengerRoute.getTravelCost();