@Override public void handleLeg(Leg leg) { double legScore = calcLegScore(leg.getDepartureTime(), leg.getDepartureTime() + leg.getTravelTime(), leg); this.score += legScore; }
private static CharyparNagelLegScoring createScoring( final int seed, final Network network) { final Random random = new Random( seed ); final PlanCalcScoreConfigGroup conf = new PlanCalcScoreConfigGroup(); conf.setMarginalUtlOfWaitingPt_utils_hr( random.nextDouble() * 1000 ); conf.getModes().get(TransportMode.pt).setMonetaryDistanceRate(random.nextDouble() * 1000); conf.getModes().get(TransportMode.pt).setMarginalUtilityOfTraveling(random.nextDouble() * 1000); conf.setUtilityOfLineSwitch( random.nextDouble() * 1000 ); final ScenarioConfigGroup scenarioConfig = new ScenarioConfigGroup(); return new CharyparNagelLegScoring( new ScoringParameters.Builder(conf, conf.getScoringParameters(null), scenarioConfig).build(), network); }
scoring1.handleEvent( endFirstAct ); scoring2.handleEvent( endFirstAct ); scoring1.handleEvent( departure ); scoring2.handleEvent( departure ); scoring1.handleEvent( enterVehicle ); scoring2.handleEvent( enterVehicle ); scoring1.handleEvent( leaveVehicle ); scoring2.handleEvent( leaveVehicle ); scoring1.handleEvent( arrival ); scoring2.handleEvent( arrival ); scoring1.handleLeg(leg); scoring1.finish(); scoring2.handleLeg(leg); scoring2.finish(); scoring1.getScore(), scoring2.getScore(), MatsimTestUtils.EPSILON );
private CharyparNagelLegScoring createDefaultPlusConstants(Network network) { final PlanCalcScoreConfigGroup conf = new PlanCalcScoreConfigGroup(); conf.getModes().get(TransportMode.car).setDailyUtilityConstant(-10000.); conf.getModes().get(TransportMode.car).setDailyMonetaryConstant(-2345.); conf.getModes().get(TransportMode.bike).setDailyUtilityConstant(-.078); conf.getModes().get(TransportMode.bike).setDailyMonetaryConstant(-0.6); final ScenarioConfigGroup scenarioConfig = new ScenarioConfigGroup(); return new CharyparNagelLegScoring( new ScoringParameters.Builder(conf, conf.getScoringParameters(null), scenarioConfig).build(), network); }
scoring1.handleEvent( endFirstAct ); scoring2.handleEvent( endFirstAct ); scoring1.handleEvent( departure ); scoring2.handleEvent( departure ); scoring1.handleEvent( enterVehicle ); scoring2.handleEvent( enterVehicle ); scoring1.handleEvent( leaveVehicle ); scoring2.handleEvent( leaveVehicle ); scoring1.handleEvent( arrival ); scoring2.handleEvent( arrival ); scoring1.handleLeg(leg); scoring1.finish(); scoring2.handleLeg(leg); scoring2.finish(); scoring1.handleEvent( endFirstAct ); scoring2.handleEvent( endFirstAct ); scoring1.handleEvent( departure ); scoring2.handleEvent( departure ); scoring1.handleEvent( enterVehicle ); scoring2.handleEvent( enterVehicle );
private static CharyparNagelLegScoring createScoringOnlyConstants(final Network network) { final PlanCalcScoreConfigGroup conf = new PlanCalcScoreConfigGroup(); conf.getModes().get(TransportMode.car).setMarginalUtilityOfTraveling(0.); conf.getModes().get(TransportMode.car).setDailyUtilityConstant(-10000.); conf.getModes().get(TransportMode.car).setDailyMonetaryConstant(-2345.); conf.getModes().get(TransportMode.bike).setMarginalUtilityOfTraveling(0.); conf.getModes().get(TransportMode.bike).setDailyUtilityConstant(-.078); conf.getModes().get(TransportMode.bike).setDailyMonetaryConstant(-0.6); final ScenarioConfigGroup scenarioConfig = new ScenarioConfigGroup(); return new CharyparNagelLegScoring( new ScoringParameters.Builder(conf, conf.getScoringParameters(null), scenarioConfig).build(), network); }
protected double calcLegScore(final double departureTime, final double arrivalTime, final Leg leg) { // Get leg score from regular CharyparNagelLegScoring double legScore = super.calcLegScore(departureTime, arrivalTime, leg); // LOG.warn("----- legScore = " + legScore); NetworkRoute networkRoute = (NetworkRoute) leg.getRoute(); List<Id<Link>> linkIds = new ArrayList<>(); linkIds.addAll(networkRoute.getLinkIds()); linkIds.add(networkRoute.getEndLinkId()); // Iterate over all links of the route for (Id<Link> linkId : linkIds) { double scoreOnLink = BicycleUtilityUtils.computeLinkBasedScore(network.getLinks().get(linkId), marginalUtilityOfComfort_m, marginalUtilityOfInfrastructure_m, marginalUtilityOfGradient_m_100m); // LOG.warn("----- link = " + linkId + " -- scoreOnLink = " + scoreOnLink); legScore += scoreOnLink; } return legScore; } }
@Override public ScoringFunction createNewScoringFunction(Person person) { SumScoringFunction scoringFunctionAccumulator = new SumScoringFunction(); SumScoringFunction.BasicScoring scoringFunction; if (this.usingConfigParamsForScoring) { scoringFunction = new DCActivityWOFacilitiesScoringFunction(person, this.lcContext); scoringFunctionAccumulator.addScoringFunction(new CharyparNagelActivityScoring(this.lcContext.getParams())); // forgetting the previous line (which we did at some point) is not picked up by any test within the locationchoice contrib. kai, oct'14 } else { scoringFunction = new DCActivityScoringFunction(person.getSelectedPlan(), this.lcContext); } scoringFunctionAccumulator.addScoringFunction(scoringFunction); if (this.usingIndividualScoringParameters) { ScoringParameters scoringParameters = new ScoringParameters.Builder(this.scenario, person.getId()).build(); scoringFunctionAccumulator.addScoringFunction(new CharyparNagelLegScoring(scoringParameters, this.scenario.getNetwork())); scoringFunctionAccumulator.addScoringFunction(new CharyparNagelAgentStuckScoring(scoringParameters)); } else { scoringFunctionAccumulator.addScoringFunction(new CharyparNagelLegScoring(this.nonPersonalizedScoringParameters, this.scenario.getNetwork())); scoringFunctionAccumulator.addScoringFunction(new CharyparNagelAgentStuckScoring(this.nonPersonalizedScoringParameters)); } return scoringFunctionAccumulator; } }
@Override public ScoringFunction createNewScoringFunction(Person person) { final ScoringParameters parameters = params.getScoringParameters( person ); SumScoringFunction sumScoringFunction = new SumScoringFunction(); sumScoringFunction.addScoringFunction(new CharyparNagelActivityScoring(parameters, new FacilityOpeningIntervalCalculator(scenario.getActivityFacilities()))); sumScoringFunction.addScoringFunction(new CharyparNagelLegScoring(parameters, scenario.getNetwork())); sumScoringFunction.addScoringFunction(new CharyparNagelMoneyScoring(parameters)); sumScoringFunction.addScoringFunction(new CharyparNagelAgentStuckScoring(parameters)); return sumScoringFunction; }
sumScoringFunction.addScoringFunction(new CharyparNagelLegScoring( parameters , this.network)); sumScoringFunction.addScoringFunction(new CharyparNagelMoneyScoring( parameters )); sumScoringFunction.addScoringFunction(new CharyparNagelAgentStuckScoring( parameters ));
@Override public ScoringFunction createNewScoringFunction(Person person) { final ScoringParameters params = parameters.getScoringParameters(person); SumScoringFunction scoringFunctionAccumulator = new SumScoringFunction(); scoringFunctionAccumulator.addScoringFunction(new CharyparNagelLegScoring(params, controler.getScenario().getNetwork())); scoringFunctionAccumulator.addScoringFunction(new CharyparNagelActivityScoring(params)) ; scoringFunctionAccumulator.addScoringFunction(new CharyparNagelAgentStuckScoring(params)); final CadytsScoring<Link> scoringFunction = new CadytsScoring<>(person.getSelectedPlan(), config, cadytsContext); scoringFunction.setWeightOfCadytsCorrection(30. * config.planCalcScore().getBrainExpBeta()) ; scoringFunctionAccumulator.addScoringFunction(scoringFunction ); return scoringFunctionAccumulator; } }) ;