/** * If travelling freespeed the turning move travel time is not relevant */ @Override public double getLinkToLinkTravelTime(Link fromLink, Link toLink, double time) { return this.getLinkTravelTime(fromLink, time, null, null); }
@Override public TravelDisutility createTravelDisutility(TravelTime timeCalculator) { return new OnlyTimeDependentTravelDisutility(timeCalculator); }
public static TravelDisutility createFreespeedTravelTimeAndDisutility(PlanCalcScoreConfigGroup cnScoringGroup) { return new FreespeedTravelTimeAndDisutility(cnScoringGroup) ; }
TollTimeDistanceTravelDisutility(final TravelTime timeCalculator, PlanCalcScoreConfigGroup cnScoringGroup, double sigma, DecongestionInfo info) { this.info = info; this.marginalUtilityOfMoney = cnScoringGroup.getMarginalUtilityOfMoney(); this.sigma = sigma; final RandomizingTimeDistanceTravelDisutilityFactory builder = new RandomizingTimeDistanceTravelDisutilityFactory( TransportMode.car, cnScoringGroup ); builder.setSigma(sigma); this.delegate = builder.createTravelDisutility(timeCalculator); this.timeBinSize = info.getScenario().getConfig().travelTimeCalculator().getTraveltimeBinSize(); log.info("Using the toll-adjusted travel disutility (improved version) in the decongestion package."); }
public static TravelDisutilityFactory createDefaultTravelDisutilityFactory(Scenario scenario) { final RandomizingTimeDistanceTravelDisutilityFactory builder = new RandomizingTimeDistanceTravelDisutilityFactory( TransportMode.car, scenario.getConfig().planCalcScore() ); builder.setSigma(0.); // tendency to set this to 3. right away (i.e. through PlansCalcRouteConfigGroup default). kai/bk, mar'15 return builder; }
@Override public TravelDisutility createTravelDisutility(TravelTime timeCalculator) { if ( this.sigma != 0. ) { if ( previousTravelDisutilityFactory instanceof RandomizingTimeDistanceTravelDisutilityFactory) { ((RandomizingTimeDistanceTravelDisutilityFactory) previousTravelDisutilityFactory).setSigma( this.sigma ); } else { throw new RuntimeException("cannot use sigma!=null together with provided travel disutility factory"); } } return new TravelDisutilityIncludingToll( previousTravelDisutilityFactory.createTravelDisutility(timeCalculator), this.scheme, this.marginalUtilityOfMoney, this.sigma ); }
@Override public void install() { PlansCalcRouteConfigGroup routeConfigGroup = getConfig().plansCalcRoute(); for (String mode : routeConfigGroup.getNetworkModes()) { addTravelDisutilityFactoryBinding(mode).toInstance( new RandomizingTimeDistanceTravelDisutilityFactory(mode, getConfig().planCalcScore())); } }
@Override public final TravelDisutility createTravelDisutilityCalculator() { return getTravelDisutilityFactory().createTravelDisutility(this.injector.getInstance(TravelTime.class)); }
@Override public final TravelDisutility createTravelDisutility(TravelTime timeCalculator) { randomizedTimeDistanceTravelDisutilityFactory.setSigma(sigma); return new NoiseTollTimeDistanceTravelDisutility( randomizedTimeDistanceTravelDisutilityFactory.createTravelDisutility(timeCalculator), this.noiseContext, this.noiseContext.getScenario().getConfig().planCalcScore().getMarginalUtilityOfMoney(), this.sigma ); }
@Override public void install() { install(new TripRouterModule()); install(new ScenarioByInstanceModule(scenario)); addTravelTimeBinding("car").toInstance(new FreespeedTravelTimeAndDisutility(config.planCalcScore())); addTravelDisutilityFactoryBinding("car").toInstance(new OnlyTimeDependentTravelDisutilityFactory()); } });
@Override public TravelDisutility createTravelDisutility( final TravelTime travelTime) { logWarningsIfNecessary( cnScoringGroup ); final PlanCalcScoreConfigGroup.ModeParams params = cnScoringGroup.getModes().get( mode ) ; if ( params == null ) { throw new NullPointerException( mode+" is not part of the valid mode parameters "+cnScoringGroup.getModes().keySet() ); } /* Usually, the travel-utility should be negative (it's a disutility) but the cost should be positive. Thus negate the utility.*/ final double marginalCostOfTime_s = (-params.getMarginalUtilityOfTraveling() / 3600.0) + (cnScoringGroup.getPerforming_utils_hr() / 3600.0); final double marginalCostOfDistance_m = - params.getMonetaryDistanceRate() * cnScoringGroup.getMarginalUtilityOfMoney() - params.getMarginalUtilityOfDistance() ; double normalization = 1; if ( sigma != 0. ) { normalization = 1. / Math.exp(this.sigma * this.sigma / 2); if (normalisationWrnCnt < 10) { normalisationWrnCnt++; log.info(" sigma: " + this.sigma + "; resulting normalization: " + normalization); } } return new RandomizingTimeDistanceTravelDisutility( travelTime, marginalCostOfTime_s, marginalCostOfDistance_m, normalization, sigma); }
@Override public void install() { install(new WithinDayModule()); addControlerListenerBinding().to(ExampleWithinDayController.class); addTravelDisutilityFactoryBinding(TransportMode.car).toInstance(new OnlyTimeDependentTravelDisutilityFactory()); // Use a Scoring Function that only scores the travel times: // (yy but why? kai, jun'16) bindScoringFunctionFactory().toInstance(new OnlyTravelTimeDependentScoringFunctionFactory()); } });
@Override public final TravelDisutility createTravelDisutilityCalculator() { return getTravelDisutilityFactory().createTravelDisutility(this.injector.getInstance(TravelTime.class)); }
public UmlaufInterpolator(Network network, final PlanCalcScoreConfigGroup config) { super(); this.network = network; FreespeedTravelTimeAndDisutility travelTimes = new FreespeedTravelTimeAndDisutility(config); this.routingAlgo = new DijkstraFactory().createPathCalculator(network, travelTimes, travelTimes); }
@Override public void notifyReplanning(ReplanningEvent event) { Assert.assertEquals(42.0, travelTimes.get(TransportMode.car).getLinkTravelTime(null, 0.0, null, null), 0.0); Assert.assertEquals(37.0, travelDisutilities.get(TransportMode.car).createTravelDisutility(travelTimes.get(TransportMode.car)).getLinkTravelDisutility(null, 0.0, null, null), 0.0); } }
public SimpleCircleScheduleProvider(String pIdentifier, TransitSchedule scheduleWithStopsOnly, Network network, RandomStopProvider randomStopProvider, double vehicleMaximumVelocity, double driverRestTime, final String transportMode) { this.pIdentifier = pIdentifier; this.net = network; this.scheduleWithStopsOnly = scheduleWithStopsOnly; this.randomStopProvider = randomStopProvider; this.transportMode = transportMode; FreespeedTravelTimeAndDisutility tC = new FreespeedTravelTimeAndDisutility(-6.0, 0.0, 0.0); this.routingAlgo = new DijkstraFactory().createPathCalculator(this.net, tC, tC); @SuppressWarnings("serial") Set<String> modes = new HashSet<String>(){{ // this is the networkmode and explicitly not the transportmode add(TransportMode.car); }}; ((Dijkstra)this.routingAlgo).setModeRestriction(modes); this.vehicleMaximumVelocity = vehicleMaximumVelocity; this.driverRestTime = driverRestTime; }
LinkToLinkRoutingModule(final String mode, final PopulationFactory populationFactory, Network network, LeastCostPathCalculatorFactory leastCostPathCalcFactory, TravelDisutilityFactory travelCostCalculatorFactory, LinkToLinkTravelTime l2ltravelTimes, NetworkTurnInfoBuilderI turnInfoBuilder) { this.network = network; this.populationFactory = populationFactory; this.mode = mode; invertedNetwork = new NetworkInverter(network, turnInfoBuilder.createAllowedTurnInfos()).getInvertedNetwork(); // convert l2ltravelTimes into something that can be used by the inverted network router: TravelTimesInvertedNetworkProxy invertedTravelTimes = new TravelTimesInvertedNetworkProxy(network, l2ltravelTimes); // (method that takes a getLinkTravelTime( link , ...) with a link from the inverted network, converts it into links on the // original network, and looks up the link2link tttime in the l2ltravelTimes data structure) TravelDisutility travelCost = travelCostCalculatorFactory.createTravelDisutility(invertedTravelTimes); leastCostPathCalculator = leastCostPathCalcFactory.createPathCalculator(invertedNetwork, travelCost, invertedTravelTimes); }
@Override protected LeastCostPathCalculator getLeastCostPathCalculator(final Network network) { FreespeedTravelTimeAndDisutility travelTimeCostCalculator = new FreespeedTravelTimeAndDisutility(new PlanCalcScoreConfigGroup()); return new Dijkstra(network, travelTimeCostCalculator, travelTimeCostCalculator); }
@Override protected LeastCostPathCalculator getLeastCostPathCalculator(Network network) { FreespeedTravelTimeAndDisutility travelTimeCostCalculator = new FreespeedTravelTimeAndDisutility(new PlanCalcScoreConfigGroup()); PreProcessEuclidean preProcessData = new PreProcessEuclidean(travelTimeCostCalculator); preProcessData.run(network); return new AStarEuclidean(network, preProcessData, travelTimeCostCalculator); }
@Override protected LeastCostPathCalculator getLeastCostPathCalculator(Network network) { FreespeedTravelTimeAndDisutility travelTimeCostCalculator = new FreespeedTravelTimeAndDisutility(new PlanCalcScoreConfigGroup()); PreProcessLandmarks preProcessData = new PreProcessLandmarks(travelTimeCostCalculator); preProcessData.run(network); return new AStarLandmarks(network, preProcessData, travelTimeCostCalculator); }