21 package org.matsim.core.scoring.functions;
23 import java.util.Collections;
25 import java.util.TreeMap;
38 public final Map<String, ActivityUtilityParameters>
utilParams;
39 public final Map<String, ModeUtilityParameters>
modeParams;
55 final Map<String, ActivityUtilityParameters> utilParams,
56 final Map<String, ModeUtilityParameters> modeParams,
57 final double marginalUtilityOfWaiting_s,
58 final double marginalUtilityOfLateArrival_s,
59 final double marginalUtilityOfEarlyDeparture_s,
60 final double marginalUtilityOfWaitingPt_s,
61 final double marginalUtilityOfPerforming_s,
62 final double utilityOfLineSwitch,
63 final double marginalUtilityOfMoney,
64 final double abortedPlanScore,
65 final boolean scoreActs,
66 final boolean usingOldScoringBelowZeroUtilityDuration,
67 final double simulationPeriodInDays) {
97 private double simulationPeriodInDays = 1.0;
101 final Id<Person> person ) {
116 this.simulationPeriodInDays = scenarioConfig.getSimulationPeriodInDays();
120 marginalUtilityOfWaiting_s = scoringParameterSet.getMarginalUtlOfWaiting_utils_hr() / 3600.0;
121 marginalUtilityOfLateArrival_s = scoringParameterSet.getLateArrival_utils_hr() / 3600.0;
122 marginalUtilityOfEarlyDeparture_s = scoringParameterSet.getEarlyDeparture_utils_hr() / 3600.0;
123 marginalUtilityOfWaitingPt_s = scoringParameterSet.getMarginalUtlOfWaitingPt_utils_hr() / 3600.0 ;
124 marginalUtilityOfPerforming_s = scoringParameterSet.getPerforming_utils_hr() / 3600.0;
125 utilityOfLineSwitch = scoringParameterSet.getUtilityOfLineSwitch() ;
126 marginalUtilityOfMoney = scoringParameterSet.getMarginalUtilityOfMoney() ;
127 scoreActs = marginalUtilityOfPerforming_s != 0 || marginalUtilityOfWaiting_s != 0 ||
128 marginalUtilityOfLateArrival_s != 0 || marginalUtilityOfEarlyDeparture_s != 0;
130 utilParams =
new TreeMap<>() ;
131 for (
ActivityParams params : scoringParameterSet.getActivityParams()) {
133 utilParams.put(params.getActivityType(), factory ) ;
136 modeParams =
new TreeMap<>() ;
138 double worstMarginalUtilityOfTraveling_s = 0.0;
140 String modeName = mode.getKey();
142 worstMarginalUtilityOfTraveling_s = Math.min(worstMarginalUtilityOfTraveling_s, params.getMarginalUtilityOfTraveling() / 3600. );
146 abortedPlanScore = Math.min(
147 Math.min(marginalUtilityOfLateArrival_s, marginalUtilityOfEarlyDeparture_s),
148 Math.min(worstMarginalUtilityOfTraveling_s-marginalUtilityOfPerforming_s, marginalUtilityOfWaiting_s-marginalUtilityOfPerforming_s)
157 this.utilParams.put( activityType , params );
162 return this.utilParams.get( activityType );
166 this.modeParams.put( mode , params );
171 return this.modeParams.get( mode );
225 final Map<String, ModeUtilityParameters> modes =
new TreeMap<>();
227 modes.put( e.getKey() , e.getValue().build() );
230 final Map<String, ActivityUtilityParameters> acts =
new TreeMap<>();
232 acts.put( e.getKey() , e.getValue().build() );
238 marginalUtilityOfWaiting_s,
239 marginalUtilityOfLateArrival_s,
240 marginalUtilityOfEarlyDeparture_s,
241 marginalUtilityOfWaitingPt_s,
242 marginalUtilityOfPerforming_s,
244 marginalUtilityOfMoney,
247 usingOldScoringBelowZeroUtilityDuration,
248 this.simulationPeriodInDays);
CharyparNagelScoringParameters(final Map< String, ActivityUtilityParameters > utilParams, final Map< String, ModeUtilityParameters > modeParams, final double marginalUtilityOfWaiting_s, final double marginalUtilityOfLateArrival_s, final double marginalUtilityOfEarlyDeparture_s, final double marginalUtilityOfWaitingPt_s, final double marginalUtilityOfPerforming_s, final double utilityOfLineSwitch, final double marginalUtilityOfMoney, final double abortedPlanScore, final boolean scoreActs, final boolean usingOldScoringBelowZeroUtilityDuration, final double simulationPeriodInDays)
double marginalUtilityOfEarlyDeparture_s
double marginalUtilityOfWaiting_s
Builder setScoreActs(boolean scoreActs)
CharyparNagelScoringParameters build()
ScoringParameterSet getScoringParameters(String subpopulation)
ModeUtilityParameters.Builder getModeParameters(String mode)
Builder setMarginalUtilityOfWaiting_s(double marginalUtilityOfWaiting_s)
Builder setUsingOldScoringBelowZeroUtilityDuration(boolean usingOldScoringBelowZeroUtilityDuration)
final Map< String, ActivityUtilityParameters > utilParams
Builder(final PlanCalcScoreConfigGroup configGroup, final PlanCalcScoreConfigGroup.ScoringParameterSet scoringParameterSet, final ScenarioConfigGroup scenarioConfig)
final double abortedPlanScore
Builder(final Scenario scenario, final Id< Person > person)
Builder setActivityParameters(String activityType, ActivityUtilityParameters.Builder params)
ObjectAttributes getPersonAttributes()
final double marginalUtilityOfWaiting_s
boolean usingOldScoringBelowZeroUtilityDuration
final double simulationPeriodInDays
Builder setMarginalUtilityOfLateArrival_s(double marginalUtilityOfLateArrival_s)
double marginalUtilityOfWaitingPt_s
Builder setAbortedPlanScore(double abortedPlanScore)
Builder setUtilityOfLineSwitch(double utilityOfLineSwitch)
Population getPopulation()
boolean isUsingOldScoringBelowZeroUtilityDuration()
final double marginalUtilityOfEarlyDeparture_s
final String getValue(final String param_name)
double marginalUtilityOfPerforming_s
final double marginalUtilityOfMoney
Builder setMarginalUtilityOfMoney(double marginalUtilityOfMoney)
final Map< String, ActivityUtilityParameters.Builder > utilParams
final Map< String, ModeUtilityParameters.Builder > modeParams
ScenarioConfigGroup scenario()
final Map< String, ModeUtilityParameters > modeParams
Builder setMarginalUtilityOfEarlyDeparture_s(double marginalUtilityOfEarlyDeparture_s)
Builder setMarginalUtilityOfPerforming_s(double marginalUtilityOfPerforming_s)
final double marginalUtilityOfLateArrival_s
Builder setModeParameters(String mode, ModeUtilityParameters.Builder params)
Object getAttribute(final String objectId, final String attribute)
final double marginalUtilityOfWaitingPt_s
ActivityUtilityParameters.Builder getActivityParameters(String activityType)
double marginalUtilityOfMoney
Builder setMarginalUtilityOfWaitingPt_s(double marginalUtilityOfWaitingPt_s)
final PlanCalcScoreConfigGroup planCalcScore()
final double marginalUtilityOfPerforming_s
final double utilityOfLineSwitch
double marginalUtilityOfLateArrival_s
final boolean usingOldScoringBelowZeroUtilityDuration
double utilityOfLineSwitch