/** * Creates a new TimeAllocationMutator with a mutation range as defined in * the configuration (module "TimeAllocationMutator", param "mutationRange"). */ public TripTimeAllocationMutator(Config config, Provider<TripRouter> tripRouterProvider) { super(config.global()); this.tripRouterProvider = tripRouterProvider; this.mutationRange = config.timeAllocationMutator().getMutationRange() ; this.affectingDuration = config.timeAllocationMutator().isAffectingDuration() ; PlansConfigGroup.ActivityDurationInterpretation actDurInterpr = ( config.plans().getActivityDurationInterpretation() ) ; if ( actDurInterpr == PlansConfigGroup.ActivityDurationInterpretation.minOfDurationAndEndTime ) { useActivityDurations = true ; } else if ( actDurInterpr == PlansConfigGroup.ActivityDurationInterpretation.endTimeOnly ) { useActivityDurations = false ; } else if ( actDurInterpr == PlansConfigGroup.ActivityDurationInterpretation.tryEndTimeThenDuration ) { throw new UnsupportedOperationException( "need to clarify the correct setting here. Probably not a big deal, but not done yet. kai, aug'10") ; } else { throw new IllegalStateException( "beahvior not defined for this configuration setting") ; } }
public TimeAllocationMutator(Provider<TripRouter> tripRouterProvider, PlansConfigGroup plansConfigGroup, TimeAllocationMutatorConfigGroup timeAllocationMutatorConfigGroup, GlobalConfigGroup globalConfigGroup, final Population population) { super(globalConfigGroup); this.tripRouterProvider = tripRouterProvider; this.activityDurationInterpretation = plansConfigGroup.getActivityDurationInterpretation(); this.mutationRange = timeAllocationMutatorConfigGroup.getMutationRange(); this.affectingDuration = timeAllocationMutatorConfigGroup.isAffectingDuration(); // in case we have subpopulations and individual settings for them if (plansConfigGroup.getSubpopulationAttributeName() != null && timeAllocationMutatorConfigGroup.isUseIndividualSettingsForSubpopulations() && population != null) { this.subpopulationAttribute = plansConfigGroup.getSubpopulationAttributeName(); this.subpopulationMutationRanges = new HashMap<>(); this.subpopulationAffectingDuration = new HashMap<>(); this.personAttributes = population.getPersonAttributes(); Collection<? extends ConfigGroup> settings = timeAllocationMutatorConfigGroup.getParameterSets(TimeAllocationMutatorSubpopulationSettings.SET_NAME); for (ConfigGroup group : settings) { TimeAllocationMutatorSubpopulationSettings subpopulationSettings = (TimeAllocationMutatorSubpopulationSettings) group; String subpopulation = subpopulationSettings.getSubpopulation(); this.subpopulationMutationRanges.put(subpopulation, subpopulationSettings.getMutationRange()); this.subpopulationAffectingDuration.put(subpopulation, subpopulationSettings.isAffectingDuration()); log.info("Found individual time mutator settings for subpopulation: " + subpopulation); } } else { this.personAttributes = null; this.subpopulationAttribute = null; this.subpopulationMutationRanges = null; this.subpopulationAffectingDuration = null; } }
if ( config.timeAllocationMutator().isAffectingDuration() ) {