@Inject SubpopulationScoringParameters(PlansConfigGroup plansConfigGroup, PlanCalcScoreConfigGroup planCalcScoreConfigGroup, ScenarioConfigGroup scenarioConfigGroup, Population population, TransitConfigGroup transitConfigGroup) { this.config = planCalcScoreConfigGroup; this.scConfig = scenarioConfigGroup; this.transitConfigGroup = transitConfigGroup; this.personAttributes = population.getPersonAttributes(); this.subpopulationAttributeName = plansConfigGroup.getSubpopulationAttributeName(); }
private static String identifySubpopulation( final ReplanningGroup g, final Scenario sc) { final String attName = sc.getConfig().plans().getSubpopulationAttributeName(); final ObjectAttributes atts = sc.getPopulation().getPersonAttributes(); String name = null; for ( Person p : g.getPersons() ) { final String persSubPop = (String) atts.getAttribute( p.getId().toString() , attName ); if ( persSubPop == null && name != null ) throw new RuntimeException( "inconsistent subpopulations in group "+g ); if ( name != null && !name.equals( persSubPop ) ) throw new RuntimeException( "inconsistent subpopulations in group "+g ); name = persSubPop; } return name; }
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; } }
private String getSubpopName(Person person) { return "yy_" + getSubpopName( person.getId(), this.population.getPersonAttributes(), this.scenario.getConfig().plans().getSubpopulationAttributeName() ) ; } public static final String getSubpopName( Id<Person> personId, ObjectAttributes personAttributes, String subpopAttrName ) {
public Builder( final Scenario scenario, final Id<Person> person ) { this( scenario.getConfig().planCalcScore(), scenario.getConfig().planCalcScore().getScoringParameters( (String) scenario.getPopulation().getPersonAttributes().getAttribute( person.toString(), scenario.getConfig().plans().getSubpopulationAttributeName() ) ), scenario.getConfig().scenario() ); }
setSubpopulationAttributeName(plansConfigGroup.getSubpopulationAttributeName()); for (Map.Entry<StrategyConfigGroup.StrategySettings, PlanStrategy> entry : planStrategies.entrySet()) { PlanStrategy strategy = entry.getValue();