21 package org.matsim.core.scoring.functions;
33 import java.util.TreeMap;
37 public final Map<String, ActivityUtilityParameters>
utilParams;
38 public final Map<String, ModeUtilityParameters>
modeParams;
54 final Map<String, ActivityUtilityParameters> utilParams,
55 final Map<String, ModeUtilityParameters> modeParams,
56 final double marginalUtilityOfWaiting_s,
57 final double marginalUtilityOfLateArrival_s,
58 final double marginalUtilityOfEarlyDeparture_s,
59 final double marginalUtilityOfWaitingPt_s,
60 final double marginalUtilityOfPerforming_s,
61 final double utilityOfLineSwitch,
62 final double marginalUtilityOfMoney,
63 final double abortedPlanScore,
64 final boolean scoreActs,
65 final boolean usingOldScoringBelowZeroUtilityDuration,
66 final double simulationPeriodInDays) {
83 private final Map<String, ActivityUtilityParameters>
utilParams;
84 private final Map<String, ModeUtilityParameters>
modeParams;
96 private double simulationPeriodInDays = 1.0;
130 this.simulationPeriodInDays = scenarioConfig.getSimulationPeriodInDays();
134 marginalUtilityOfWaiting_s = scoringParameterSet.getMarginalUtlOfWaiting_utils_hr() / 3600.0;
135 marginalUtilityOfLateArrival_s = scoringParameterSet.getLateArrival_utils_hr() / 3600.0;
136 marginalUtilityOfEarlyDeparture_s = scoringParameterSet.getEarlyDeparture_utils_hr() / 3600.0;
137 marginalUtilityOfWaitingPt_s = scoringParameterSet.getMarginalUtlOfWaitingPt_utils_hr() / 3600.0 ;
138 marginalUtilityOfPerforming_s = scoringParameterSet.getPerforming_utils_hr() / 3600.0;
139 utilityOfLineSwitch = scoringParameterSet.getUtilityOfLineSwitch() ;
140 marginalUtilityOfMoney = scoringParameterSet.getMarginalUtilityOfMoney() ;
141 scoreActs = marginalUtilityOfPerforming_s != 0 || marginalUtilityOfWaiting_s != 0 ||
142 marginalUtilityOfLateArrival_s != 0 || marginalUtilityOfEarlyDeparture_s != 0;
144 utilParams =
new TreeMap<>() ;
145 for (
ActivityParams params : scoringParameterSet.getActivityParams()) {
147 utilParams.put(params.getActivityType(), factory.build() ) ;
150 modeParams =
new TreeMap<>() ;
152 double worstMarginalUtilityOfTraveling_s = 0.0;
154 String modeName = mode.getKey();
160 abortedPlanScore = Math.min(
161 Math.min(marginalUtilityOfLateArrival_s, marginalUtilityOfEarlyDeparture_s),
162 Math.min(worstMarginalUtilityOfTraveling_s-marginalUtilityOfPerforming_s, marginalUtilityOfWaiting_s-marginalUtilityOfPerforming_s)
183 Map<String, ActivityUtilityParameters> activityParams,
185 this.simulationPeriodInDays = scenarioConfig.getSimulationPeriodInDays();
189 marginalUtilityOfWaiting_s = scoringParameterSet.getMarginalUtlOfWaiting_utils_hr() / 3600.0;
190 marginalUtilityOfLateArrival_s = scoringParameterSet.getLateArrival_utils_hr() / 3600.0;
191 marginalUtilityOfEarlyDeparture_s = scoringParameterSet.getEarlyDeparture_utils_hr() / 3600.0;
192 marginalUtilityOfWaitingPt_s = scoringParameterSet.getMarginalUtlOfWaitingPt_utils_hr() / 3600.0 ;
193 marginalUtilityOfPerforming_s = scoringParameterSet.getPerforming_utils_hr() / 3600.0;
194 utilityOfLineSwitch = scoringParameterSet.getUtilityOfLineSwitch() ;
195 marginalUtilityOfMoney = scoringParameterSet.getMarginalUtilityOfMoney() ;
196 scoreActs = marginalUtilityOfPerforming_s != 0 || marginalUtilityOfWaiting_s != 0 ||
197 marginalUtilityOfLateArrival_s != 0 || marginalUtilityOfEarlyDeparture_s != 0;
199 utilParams = activityParams;
201 modeParams =
new TreeMap<>() ;
203 double worstMarginalUtilityOfTraveling_s = 0.0;
205 String modeName = mode.getKey();
211 abortedPlanScore = Math.min(
212 Math.min(marginalUtilityOfLateArrival_s, marginalUtilityOfEarlyDeparture_s),
213 Math.min(worstMarginalUtilityOfTraveling_s-marginalUtilityOfPerforming_s, marginalUtilityOfWaiting_s-marginalUtilityOfPerforming_s)
222 this.utilParams.put( activityType , params );
227 return this.utilParams.get( activityType );
231 this.modeParams.put( mode , params );
236 return this.modeParams.get( mode );
293 marginalUtilityOfWaiting_s,
294 marginalUtilityOfLateArrival_s,
295 marginalUtilityOfEarlyDeparture_s,
296 marginalUtilityOfWaitingPt_s,
297 marginalUtilityOfPerforming_s,
299 marginalUtilityOfMoney,
302 usingOldScoringBelowZeroUtilityDuration,
303 this.simulationPeriodInDays);
Builder setMarginalUtilityOfWaitingPt_s(double marginalUtilityOfWaitingPt_s)
boolean usingOldScoringBelowZeroUtilityDuration
final double marginalUtilityOfLateArrival_s
Builder setActivityParameters(String activityType, ActivityUtilityParameters params)
ActivityUtilityParameters getActivityParameters(String activityType)
final boolean usingOldScoringBelowZeroUtilityDuration
Builder setUsingOldScoringBelowZeroUtilityDuration(boolean usingOldScoringBelowZeroUtilityDuration)
boolean isUsingOldScoringBelowZeroUtilityDuration()
final double marginalUtilityOfWaitingPt_s
final double marginalUtilityOfEarlyDeparture_s
Builder setMarginalUtilityOfPerforming_s(double marginalUtilityOfPerforming_s)
double marginalUtilityOfWaiting_s
final Map< String, ModeUtilityParameters > modeParams
Builder setAbortedPlanScore(double abortedPlanScore)
ModeUtilityParameters getModeParameters(String mode)
Builder(final Scenario scenario, final Person person)
double marginalUtilityOfEarlyDeparture_s
ScoringParameterSet getScoringParameters(String subpopulation)
final ScoringConfigGroup scoring()
Builder setMarginalUtilityOfMoney(double marginalUtilityOfMoney)
Builder setMarginalUtilityOfEarlyDeparture_s(double marginalUtilityOfEarlyDeparture_s)
ScoringParameters build()
Builder setMarginalUtilityOfWaiting_s(double marginalUtilityOfWaiting_s)
Builder(final ScoringConfigGroup configGroup, final ScoringConfigGroup.ScoringParameterSet scoringParameterSet, Map< String, ActivityUtilityParameters > activityParams, final ScenarioConfigGroup scenarioConfig)
double marginalUtilityOfPerforming_s
final double marginalUtilityOfWaiting_s
double marginalUtilityOfLateArrival_s
static String getSubpopulation(HasPlansAndId<?, ?> person)
final String getValue(final String param_name)
final Map< String, ActivityUtilityParameters > utilParams
final double abortedPlanScore
final Map< String, ActivityUtilityParameters > utilParams
final double marginalUtilityOfMoney
Builder setMarginalUtilityOfLateArrival_s(double marginalUtilityOfLateArrival_s)
ModeUtilityParameters build()
ScenarioConfigGroup scenario()
final double marginalUtilityOfPerforming_s
double marginalUtilityOfMoney
double utilityOfLineSwitch
Builder(final ScoringConfigGroup configGroup, final ScoringConfigGroup.ScoringParameterSet scoringParameterSet, final ScenarioConfigGroup scenarioConfig)
double getMarginalUtilityOfTraveling()
ScoringParameters(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)
final double simulationPeriodInDays
Builder setScoreActs(boolean scoreActs)
double marginalUtilityOfWaitingPt_s
Builder setModeParameters(String mode, ModeUtilityParameters params)
final double utilityOfLineSwitch
final Map< String, ModeUtilityParameters > modeParams
Builder setUtilityOfLineSwitch(double utilityOfLineSwitch)