21 package org.matsim.core.config.groups;
23 import java.util.Arrays;
24 import java.util.Collection;
25 import java.util.Collections;
26 import java.util.HashMap;
27 import java.util.HashSet;
28 import java.util.LinkedHashMap;
32 import org.apache.logging.log4j.LogManager;
33 import org.apache.logging.log4j.Logger;
72 private static final String
WAITING =
"waiting";
173 return mode +
" interaction";
180 throw new IllegalArgumentException(key +
": getValue access disabled; use direct getter");
183 private static final String
msg =
" is deprecated config syntax; please use the more " +
184 "modern hierarchical format; your output_config.xml " +
185 "will be in the correct version; the old version will fail eventually, since we want to reduce the " +
186 "workload on this backwards compatibility (look into " +
187 "PlanCalcScoreConfigGroup or PlanCalcRouteConfigGroup if you want to know what we mean).";
190 public void addParam(
final String key,
final String value) {
192 if (key.startsWith(
"monetaryDistanceCostRate")) {
193 throw new RuntimeException(
"Please use monetaryDistanceRate (without `cost'). Even better, use config v2, " 194 +
"mode-parameters (see output of any recent run), and mode-specific monetary " +
"distance rate.");
195 }
else if (WAITING_PT.equals(key)) {
200 else if (key.startsWith(
"activityType_")) {
201 log.warn( key + msg );
202 usesDeprecatedSyntax = true ;
209 }
else if (key.startsWith(
"activityPriority_")) {
210 log.warn( key + msg );
211 usesDeprecatedSyntax = true ;
214 }
else if (key.startsWith(
"activityTypicalDuration_")) {
215 log.warn( key + msg );
216 usesDeprecatedSyntax = true ;
219 }
else if (key.startsWith(
"activityMinimalDuration_")) {
220 log.warn( key + msg );
221 usesDeprecatedSyntax = true ;
224 }
else if (key.startsWith(
"activityOpeningTime_")) {
225 log.warn( key + msg );
226 usesDeprecatedSyntax = true ;
229 }
else if (key.startsWith(
"activityLatestStartTime_")) {
230 log.warn( key + msg );
231 usesDeprecatedSyntax = true ;
234 }
else if (key.startsWith(
"activityEarliestEndTime_")) {
235 log.warn( key + msg );
236 usesDeprecatedSyntax = true ;
239 }
else if (key.startsWith(
"activityClosingTime_")) {
240 log.warn( key + msg );
241 usesDeprecatedSyntax = true ;
244 }
else if (key.startsWith(
"scoringThisActivityAtAll_")) {
245 log.warn( key + msg );
246 usesDeprecatedSyntax = true ;
249 }
else if (key.startsWith(
"traveling_")) {
250 log.warn( key + msg );
251 usesDeprecatedSyntax = true ;
254 }
else if (key.startsWith(
"marginalUtlOfDistance_")) {
255 log.warn( key + msg );
256 usesDeprecatedSyntax = true ;
259 }
else if (key.startsWith(
"monetaryDistanceRate_")) {
260 log.warn( key + msg );
261 usesDeprecatedSyntax = true ;
264 }
else if (
"monetaryDistanceRateCar".equals(key)) {
265 log.warn( key + msg );
266 usesDeprecatedSyntax = true ;
269 }
else if (
"monetaryDistanceRatePt".equals(key)) {
270 log.warn( key + msg );
271 usesDeprecatedSyntax = true ;
274 }
else if (key.startsWith(
"constant_")) {
275 log.warn( key + msg );
276 usesDeprecatedSyntax = true ;
282 else if (
"traveling".equals(key)) {
283 log.warn( key + msg );
284 usesDeprecatedSyntax = true ;
286 }
else if (
"travelingPt".equals(key)) {
287 log.warn( key + msg );
288 usesDeprecatedSyntax = true ;
290 }
else if (
"travelingWalk".equals(key)) {
291 log.warn( key + msg );
292 usesDeprecatedSyntax = true ;
294 }
else if (
"travelingOther".equals(key)) {
295 log.warn( key + msg );
296 usesDeprecatedSyntax = true ;
298 }
else if (
"travelingBike".equals(key)) {
299 log.warn( key + msg );
300 usesDeprecatedSyntax = true ;
305 else if (
"marginalUtlOfDistanceCar".equals(key)) {
306 log.warn( key + msg );
307 usesDeprecatedSyntax = true ;
309 }
else if (
"marginalUtlOfDistancePt".equals(key)) {
310 log.warn( key + msg );
311 usesDeprecatedSyntax = true ;
313 }
else if (
"marginalUtlOfDistanceWalk".equals(key)) {
314 log.warn( key + msg );
315 usesDeprecatedSyntax = true ;
317 }
else if (
"marginalUtlOfDistanceOther".equals(key)) {
318 log.warn( key + msg );
319 usesDeprecatedSyntax = true ;
324 else if (
"constantCar".equals(key)) {
325 log.warn( key + msg );
326 usesDeprecatedSyntax = true ;
328 }
else if (
"constantWalk".equals(key)) {
329 log.warn( key + msg );
330 usesDeprecatedSyntax = true ;
332 }
else if (
"constantOther".equals(key)) {
333 log.warn( key + msg );
334 usesDeprecatedSyntax = true ;
336 }
else if (
"constantPt".equals(key)) {
337 log.warn( key + msg );
338 usesDeprecatedSyntax = true ;
340 }
else if (
"constantBike".equals(key)) {
341 log.warn( key + msg );
342 usesDeprecatedSyntax = true ;
348 .asList(LATE_ARRIVAL, EARLY_DEPARTURE, PERFORMING, MARGINAL_UTL_OF_MONEY, UTL_OF_LINE_SWITCH, WAITING)
367 if ((actType == null)) {
371 this.activityTypesByNumber.put(number, actType);
388 Map<String, String> map = super.getComments();
389 map.put(FRACTION_OF_ITERATIONS_TO_START_SCORE_MSA,
390 "fraction of iterations at which MSA score averaging is started. The matsim theory department " 391 +
"suggests to use this together with switching off choice set innovation (where a similar switch exists), but it has not been tested yet.");
392 map.put(USING_OLD_SCORING_BELOW_ZERO_UTILITY_DURATION,
393 "There used to be a plateau between duration=0 and duration=zeroUtilityDuration. " 394 +
"This caused durations to evolve to zero once they were below zeroUtilityDuration, causing problems. Only use this switch if you need to be " 395 +
"backwards compatible with some old results. (changed nov'13)");
397 "[utils/hr] marginal utility of doing an activity. normally positive. also the opportunity cost of " 398 +
"time if agent is doing nothing. MATSim separates the resource value of time from the direct (dis)utility of travel time, see, e.g., " 399 +
"Boerjesson and Eliasson, TR-A 59 (2014) 144-158.");
400 map.put(LATE_ARRIVAL,
401 "[utils/hr] utility for arriving late (i.e. after the latest start time). normally negative");
402 map.put(EARLY_DEPARTURE,
403 "[utils/hr] utility for departing early (i.e. before the earliest end time). Normally negative. Probably " 404 +
"implemented correctly, but not tested.");
406 "[utils/hr] additional marginal utility for waiting. normally negative. this comes on top of the opportunity cost of time. Probably " 407 +
"implemented correctly, but not tested.");
409 "[utils/hr] additional marginal utility for waiting for a pt vehicle. normally negative. this comes on top of the opportunity cost " 410 +
"of time. Default: if not set explicitly, it is equal to traveling_pt!!!");
411 map.put(BRAIN_EXP_BETA,
412 "logit model scale parameter. default: 1. Has name and default value for historical reasons " 413 +
"(see Bryan Raney's phd thesis).");
414 map.put(LEARNING_RATE,
415 "new_score = (1-learningRate)*old_score + learningRate * score_from_mobsim. learning rates " 416 +
"close to zero emulate score averaging, but slow down initial convergence");
417 map.put(UTL_OF_LINE_SWITCH,
"[utils] utility of switching a line (= transfer penalty). Normally negative");
418 map.put(MARGINAL_UTL_OF_MONEY,
419 "[utils/unit_of_money] conversion of money (e.g. toll, distance cost) into utils. Normall positive (i.e. toll/cost/fare are processed as negative amounts of money).");
420 map.put(WRITE_EXPERIENCED_PLANS,
421 "write a plans file in each iteration directory which contains what each agent actually did, and the score it received.");
423 map.put(WRITE_SCORE_EXPLANATIONS,
424 "Write detailed score composition into plan attributes after execution.");
437 Set<String> activities =
new HashSet<>();
452 Set<String> modes =
new HashSet<>();
480 final Collection<ScoringParameterSet> parameters = (Collection<ScoringParameterSet>)
getParameterSets(
482 final Map<String, ScoringParameterSet> map =
new LinkedHashMap<>();
488 map.put(pars.getSubpopulation(), pars);
530 if (params == null) {
551 throw new IllegalArgumentException(
set.
getName());
558 if (previous != null) {
559 log.info(
"scoring parameters for subpopulation " + previous.
getSubpopulation() +
" were just replaced.");
566 super.addParameterSet(params);
592 throw new IllegalArgumentException(type);
603 final String s = ((ScoringParameterSet) module).getSubpopulation();
605 throw new IllegalStateException(
"already a parameter set for subpopulation " + s);
609 throw new IllegalArgumentException(module.
getName());
615 super.checkConsistency(config);
624 +
" Otherwise, crashes can be expected.");
647 for( String mode : scoringParameterSet.getModes().keySet() ){
654 if (
params.isScoringThisActivityAtAll() &&
params.getTypicalDuration().isUndefined()) {
656 +
", the typical duration is undefined. This will lead to errors that are difficult to debug, " 657 +
"so rather aborting here.");
833 public final static String
SET_TYPE =
"activityParams";
843 public static final String
TYPICAL_DURATION_CMT =
"typical duration of activity. needs to be defined and non-zero. in sec.";
883 public static final String
ACVITITY_TYPE_CMT =
"all activity types that occur in the plans file need to be defined by their own sections here";
923 final Map<String, String> map = super.getComments();
925 StringBuilder str =
new StringBuilder();
926 str.append(
"method to compute score at typical duration. Options: | ");
928 str.append(value.name());
933 str.append(
" for backwards compatibility (all activities same score; higher proba to drop long acts).");
988 "Setting minimalDuration different from zero is discouraged. It is probably implemented correctly, " 989 +
"but there is as of now no indication that it makes the results more realistic. KN, Sep'08" 1086 static final String SCORING_THIS_ACTIVITY_AT_ALL =
"scoringThisActivityAtAll";
1105 final static String
SET_TYPE =
"modeParams";
1107 private static final String MONETARY_DISTANCE_RATE =
"monetaryDistanceRate";
1108 private static final String MONETARY_DISTANCE_RATE_CMT =
"[unit_of_money/m] conversion of distance into money. Normally negative.";
1110 private static final String MARGINAL_UTILITY_OF_TRAVELING =
"marginalUtilityOfTraveling_util_hr";
1112 private static final String CONSTANT =
"constant";
1113 private static final String CONSTANT_CMT =
"[utils] alternative-specific constant. Normally per trip, but that is probably buggy for multi-leg trips.";
1115 public static final String MODE =
"mode";
1117 private static final String DAILY_MONETARY_CONSTANT =
"dailyMonetaryConstant";
1118 private static final String DAILY_MONETARY_CONSTANT_CMT =
"[unit_of_money/day] Fixed cost of mode, per day.";
1120 private static final String DAILY_UTILITY_CONSTANT =
"dailyUtilityConstant";
1122 private String mode = null;
1123 private double traveling = -6.0;
1124 private double distance = 0.0;
1125 private double monetaryDistanceRate = 0.0;
1126 private double constant = 0.0;
1127 private double dailyMonetaryConstant = 0.0;
1128 private double dailyUtilityConstant = 0.0;
1150 final Map<String, String> map = super.getComments();
1151 map.put(MARGINAL_UTILITY_OF_TRAVELING,
1152 "[utils/hr] additional marginal utility of traveling. normally negative. this comes on top " 1153 +
"of the opportunity cost of time");
1154 map.put(
"marginalUtilityOfDistance_util_m",
1155 "[utils/m] utility of traveling (e.g. walking or driving) per m, normally negative. this is " 1156 +
"on top of the time (dis)utility.");
1157 map.put(MONETARY_DISTANCE_RATE, MONETARY_DISTANCE_RATE_CMT);
1158 map.put(CONSTANT, CONSTANT_CMT );
1159 map.put(DAILY_UTILITY_CONSTANT,
"[utils] daily utility constant. " 1160 +
"default=0 to be backwards compatible");
1161 map.put(DAILY_MONETARY_CONSTANT, DAILY_MONETARY_CONSTANT_CMT ) ;
1172 public String getMode() {
1177 public
ModeParams setMarginalUtilityOfTraveling(
double traveling) {
1179 this.traveling = traveling;
1183 public
double getMarginalUtilityOfTraveling() {
1184 return this.traveling;
1188 public
double getMarginalUtilityOfDistance() {
1192 public
ModeParams setMarginalUtilityOfDistance(
double distance) {
1194 this.distance = distance;
1203 public
double getConstant() {
1204 return this.constant;
1212 this.constant = constant;
1220 public
double getMonetaryDistanceRate() {
1221 return this.monetaryDistanceRate;
1228 public
ModeParams setMonetaryDistanceRate(
double monetaryDistanceRate) {
1230 this.monetaryDistanceRate = monetaryDistanceRate;
1237 public
double getDailyMonetaryConstant() {
1238 return dailyMonetaryConstant;
1245 public
ModeParams setDailyMonetaryConstant(
double dailyMonetaryConstant) {
1246 this.dailyMonetaryConstant = dailyMonetaryConstant;
1251 public
double getDailyUtilityConstant() {
1252 return dailyUtilityConstant;
1256 public
ModeParams setDailyUtilityConstant(
double dailyUtilityConstant) {
1257 this.dailyUtilityConstant = dailyUtilityConstant;
1265 public static final String
SET_TYPE =
"scoringParameters";
1269 this.subpopulation = subpopulation;
1276 private String subpopulation = null;
1278 private double lateArrival = -18.0;
1279 private double earlyDeparture = -0.0;
1280 private double performing = +6.0;
1282 private double waiting = -0.0;
1284 private double marginalUtilityOfMoney = 1.0;
1286 private double utilityOfLineSwitch = -1;
1288 private Double waitingPt = null;
1299 this.lateArrival = lateArrival;
1304 return earlyDeparture;
1310 this.earlyDeparture = earlyDeparture;
1320 this.performing = performing;
1325 return marginalUtilityOfMoney;
1331 this.marginalUtilityOfMoney = marginalUtilityOfMoney;
1336 return utilityOfLineSwitch;
1342 this.utilityOfLineSwitch = utilityOfLineSwitch;
1347 return this.waiting;
1353 this.waiting = waiting;
1357 public String getSubpopulation() {
1358 return subpopulation;
1365 public
void setSubpopulation(String subpopulation) {
1367 if (this.subpopulation != null) {
1368 throw new IllegalStateException(
1369 "cannot change subpopulation in a scoring parameter set, as it is used for indexing.");
1372 this.subpopulation = subpopulation;
1377 return waitingPt != null ? waitingPt
1383 this.waitingPt = waitingPt;
1395 throw new IllegalArgumentException(type);
1408 throw new IllegalStateException(
"already a parameter set for activity type " + t);
1415 final String m = ((ModeParams) module).getMode();
1417 throw new IllegalStateException(
"already a parameter set for mode " + m);
1421 throw new IllegalArgumentException(module.
getName());
1426 return this.getActivityParamsPerType().keySet();
1430 Collection<ActivityParams> collection = (Collection<ActivityParams>)
getParameterSets(
1441 final Map<String, ActivityParams> map =
new LinkedHashMap<>();
1444 map.put(pars.getActivityType(), pars);
1451 return this.getActivityParamsPerType().get(actType);
1457 if (params == null) {
1467 final Map<String, ModeParams> map =
new LinkedHashMap<>();
1473 map.put(pars.getMode(), pars);
1476 return Collections.unmodifiableMap(map);
1484 if (modeParams == null) {
1494 if (previous != null) {
1498 log.info(
"mode parameters for mode " + previous.
getMode() +
" were just overwritten.");
1501 super.addParameterSet(params);
1507 if (previous != null) {
1509 log.error(
"ERROR: Activity parameters for activity type " + previous.
getActivityType()
1510 +
" were just overwritten. This happens most " 1511 +
"likely because you defined them in the config file and the Controler overwrites them. Or the other way " 1512 +
"round. pt interaction has problems, but doing what you are doing here will just cause " 1513 +
"other (less visible) problem. Please take the effort to discuss with the core team " 1514 +
"what needs to be done. kai, nov'12");
1517 +
" were just overwritten.");
1525 super.addParameterSet(params);
1536 super.checkConsistency(config);
1539 boolean hasOpeningAndClosingTime =
false;
1540 boolean hasOpeningTimeAndLatePenalty =
false;
1547 if (actType.isScoringThisActivityAtAll()) {
1550 if (actType.getOpeningTime().isDefined() && actType.getClosingTime().isDefined()) {
1551 hasOpeningAndClosingTime =
true;
1553 if (actType.getOpeningTime().seconds() == 0. && actType.getClosingTime().seconds() > 24. * 3600 - 1) {
1554 log.error(
"it looks like you have an activity type with opening time set to 0:00 and closing " 1555 +
"time set to 24:00. This is most probably not the same as not setting them at all. " 1556 +
"In particular, activities which extend past midnight may not accumulate scores.");
1560 hasOpeningTimeAndLatePenalty =
true;
1564 if (!hasOpeningAndClosingTime && !hasOpeningTimeAndLatePenalty) {
1565 log.info(
"NO OPENING OR CLOSING TIMES DEFINED!\n\n" 1566 +
"There is no activity type that has an opening *and* closing time (or opening time and late penalty) defined.\n" 1567 +
"This usually means that the activity chains can be shifted by an arbitrary\n" 1568 +
"number of hours without having an effect on the score of the plans, and thus\n" 1569 +
"resulting in wrong results / traffic patterns.\n" 1570 +
"If you are using MATSim without time adaptation, you can ignore this warning.\n\n");
1574 +
". Setting this different from zero is " 1575 +
"discouraged since there is already the marginal utility of time as a resource. The parameter was also used " 1576 +
"in the past for pt routing; if you did that, consider setting the new " 1577 +
"parameter waitingPt instead.");
1588 private double learningRate = 1.0;
1589 private double brainExpBeta = 1.0;
1590 private double pathSizeLogitBeta = 1.0;
1592 private boolean writeExperiencedPlans =
false;
1594 private Double fractionOfIterationsToStartScoreMSA = null;
1596 private boolean usingOldScoringBelowZeroUtilityDuration =
false;
1598 private boolean explainScores =
false;
1602 return fractionOfIterationsToStartScoreMSA;
1608 this.fractionOfIterationsToStartScoreMSA = fractionOfIterationsToStartScoreMSA;
1613 return learningRate;
1619 this.learningRate = learningRate;
1624 return brainExpBeta;
1630 this.brainExpBeta = brainExpBeta;
1635 return pathSizeLogitBeta;
1642 log.warn(
"Setting pathSizeLogitBeta different from zero is experimental. KN, Sep'08");
1644 this.pathSizeLogitBeta = beta;
1649 return usingOldScoringBelowZeroUtilityDuration;
1660 this.usingOldScoringBelowZeroUtilityDuration = usingOldScoringBelowZeroUtilityDuration;
1665 return writeExperiencedPlans;
1671 this.writeExperiencedPlans = writeExperiencedPlans;
1675 public
void setWriteScoreExplanations(
boolean explainScores) {
1676 this.explainScores = explainScores;
1681 return explainScores;
void setLateArrival_utils_hr(double lateArrival)
ActivityParams getActivityTypeByNumber(final String number)
static final String PERFORMING
void setLearningRate(double learningRate)
ActivityParams setClosingTime(final String closingTime)
ModeParams setMarginalUtilityOfDistance(double distance)
ConfigGroup createParameterSet(final String type)
OptionalTime minimalDuration
String getClosingTimeString()
void checkParameterSet(final ConfigGroup module)
static final String ONLYONCE
void setFractionOfIterationsToStartScoreMSA(Double fractionOfIterationsToStartScoreMSA)
void setMarginalUtilityOfMoney(double marginalUtilityOfMoney)
void addModeParams(final ModeParams params)
final ReflectiveDelegate delegate
boolean memorizingExperiencedPlans
double getPerforming_utils_hr()
ActivityParams setMinimalDuration(final double minimalDuration)
Map< String, ModeParams > getModes()
static final String other
void setMemorizingExperiencedPlans(boolean memorizingExperiencedPlans)
double getMarginalUtlOfWaitingPt_utils_hr()
static void createAndAddInteractionActivity(ScoringParameterSet scoringParameterSet, String mode)
void setMarginalUtilityOfMoney(double marginalUtilityOfMoney)
void addParameterSet(final ConfigGroup set)
ModeParams getOrCreateModeParams(String modeName)
Map< String, String > getParams()
boolean isWriteScoreExplanations()
double getMarginalUtilityOfMoney()
static ActivityParams createStageActivityParams(String mode)
static final String LATE_ARRIVAL
OptionalTime latestStartTime
ActivityParams setScoringThisActivityAtAll(boolean scoringThisActivityAtAll)
OptionalTime getLatestStartTime()
boolean isMemorizingExperiencedPlans()
static final String MARGINAL_UTL_OF_MONEY
void setMarginalUtlOfWaiting_utils_hr(double waiting)
ActivityParams getActivityParams(final String actType)
void setPerforming_utils_hr(double performing)
boolean isUsingOldScoringBelowZeroUtilityDuration()
Collection< ActivityParams > getActivityParams()
Double getFractionOfIterationsToStartScoreMSA()
ActivityParams getOrCreateActivityParams(final String actType)
double getLateArrival_utils_hr()
TypicalDurationScoreComputation getTypicalDurationScoreComputation()
double getMarginalUtlOfWaitingPt_utils_hr()
void addParam(final String key, final String value)
final Map< String, String > getComments()
double getPathSizeLogitBeta()
static final String TYPICAL_DURATION_CMT
void setMarginalUtlOfWaiting_utils_hr(final double waiting)
double getPathSizeLogitBeta()
double getUtilityOfLineSwitch()
String getOpeningTimeString()
void addModeParams(final ModeParams params)
void setFractionOfIterationsToStartScoreMSA(Double val)
ActivityParams setLatestStartTime(final double latestStartTime)
ModeParams getOrCreateModeParams(String modeName)
void setUtilityOfLineSwitch(double utilityOfLineSwitch)
Map< String, String > getComments()
static final String TRANSIT_ACTIVITY_TYPE
double getMarginalUtlOfWaiting_utils_hr()
static final String WRITE_SCORE_EXPLANATIONS
Double getFractionOfIterationsToStartScoreMSA()
Collection< String > getActivityTypes()
ActivityParams setTypicalDuration(final String typicalDuration)
static final String DEFAULT_SUBPOPULATION
ScoringParameterSet getScoringParameters(String subpopulation)
Map< String, ModeParams > getModes()
ActivityParams setOpeningTime(final double openingTime)
double getEarlyDeparture_utils_hr()
ModeParams setMonetaryDistanceRate(double monetaryDistanceRate)
static final String SET_TYPE
static final String TYPICAL_DURATION
void setLearningRate(double learningRate)
OptionalTime getClosingTime()
final boolean isInsistingOnDeprecatedConfigVersion()
boolean isWriteExperiencedPlans()
Collection< ActivityParams > getActivityParams()
ScoringParameterSet getOrCreateScoringParameters(String subpopulation)
ModeParams setConstant(double constant)
OptionalTime getOpeningTime()
static final String LEARNING_RATE
OptionalTime getEarliestEndTime()
Collection< String > getAllModes()
static final String GROUP_NAME
final Map< String, String > getParams()
static final OptionalTime parseOptionalTime(final String time)
boolean isUsingOldScoringBelowZeroUtilityDuration()
static final String USING_OLD_SCORING_BELOW_ZERO_UTILITY_DURATION
Map< String, String > getComments()
void setMarginalUtlOfWaitingPt_utils_hr(final Double waitingPt)
void setBrainExpBeta(double brainExpBeta)
ModeParams(final String mode)
void addParameterSet(final ConfigGroup set)
static final String BRAIN_EXP_BETA
void setPathSizeLogitBeta(double beta)
TypicalDurationScoreComputation typicalDurationScoreComputation
String getValue(final String key)
boolean isWriteScoreExplanations()
ScoringParameterSet(final String subpopulation)
String getSubpopulation()
double getMarginalUtlOfWaiting_utils_hr()
static final String ACVITITY_TYPE_CMT
final Map< String, ActivityParams > activityTypesByNumber
static final String WAITING_PT
OptionalTime earliestEndTime
final Map< String, ? extends Collection<? extends ConfigGroup > > getParameterSets()
String getTypicalDurationString()
String getLatestStartTimeString()
static final String PATH_SIZE_LOGIT_BETA
void setWriteScoreExplanations(boolean explainScores)
void setWriteExperiencedPlans(boolean writeExperiencedPlans)
ActivityParams setPriority(final double priority)
ActivityParams setTypicalDuration(final double typicalDuration)
OptionalTime typicalDuration
void setEarlyDeparture_utils_hr(double earlyDeparture)
ActivityParams(final String type)
static final String writeTime(final double seconds, final String timeformat)
static OptionalTime defined(double seconds)
double getEarlyDeparture_utils_hr()
static final String TYPICAL_DURATION_SCORE_COMPUTATION
OptionalTime getTypicalDuration()
void setPerforming_utils_hr(double performing)
final void checkConsistency(final Config config)
static final String SET_TYPE
OptionalTime getMinimalDuration()
void setBrainExpBeta(double brainExpBeta)
final void addParam(final String param_name, final String value)
RoutingConfigGroup routing()
String getEarliestEndTimeString()
void setLateArrival_utils_hr(double lateArrival)
void setUsingOldScoringBelowZeroUtilityDuration(boolean usingOldScoringBelowZeroUtilityDuration)
void addActivityParams(final ActivityParams params)
ModeParams setMarginalUtilityOfTraveling(double traveling)
void checkConsistency(Config config)
boolean isScoringThisActivityAtAll()
final TreeMap< String, String > params
static String createStageActivityType(String mode)
void setActivityType(final String type)
static final String UTL_OF_LINE_SWITCH
void setPathSizeLogitBeta(double beta)
void setUsingOldScoringBelowZeroUtilityDuration(boolean usingOldScoringBelowZeroUtilityDuration)
static final String FRACTION_OF_ITERATIONS_TO_START_SCORE_MSA
Collection< String > getActivityTypes()
boolean removeParameterSet(final ConfigGroup set)
boolean isWriteExperiencedPlans()
static final String EXPERIENCED_PLAN_KEY
double getUtilityOfLineSwitch()
double getMarginalUtilityOfMoney()
String getMinimalDurationString()
ActivityParams setOpeningTime(final String openingTime)
void setUtilityOfLineSwitch(double utilityOfLineSwitch)
ActivityParams getActivityParams(final String actType)
static OptionalTime undefined()
ActivityParams setEarliestEndTime(final double earliestEndTime)
ActivityParams setLatestStartTime(final String latestStartTime)
void setExplainScores(boolean value)
ActivityParams setEarliestEndTime(final String earliestEndTime)
static final String EARLY_DEPARTURE
boolean scoringThisActivityAtAll
void addScoringParameters(final ScoringParameterSet params)
final void testForLocked()
ActivityParams setTypicalDurationScoreComputation(TypicalDurationScoreComputation str)
void setWriteExperiencedPlans(boolean writeExperiencedPlans)
boolean usesDeprecatedSyntax
void setMarginalUtlOfWaitingPt_utils_hr(double val)
Collection< String > getNetworkModes()
double getLateArrival_utils_hr()
void setEarlyDeparture_utils_hr(double earlyDeparture)
final GlobalConfigGroup global()
static final String WRITE_EXPERIENCED_PLANS
void checkParameterSet(final ConfigGroup module)
double getPerforming_utils_hr()
ActivityParams setClosingTime(final double closingTime)
ConfigGroup createParameterSet(final String type)
void addActivityParams(final ActivityParams params)
ActivityParams setMinimalDuration(final String minimalDuration)
static final String WAITING
static final String ACTIVITY_TYPE
Map< String, ActivityParams > getActivityParamsPerType()
Map< String, ScoringParameterSet > getScoringParametersPerSubpopulation()