MATSIM
SubpopulationScoringParameters.java
Go to the documentation of this file.
1 /* *********************************************************************** *
2  * project: org.matsim.*
3  * *
4  * *********************************************************************** *
5  * *
6  * copyright : (C) 2013 by the members listed in the COPYING, *
7  * LICENSE and WARRANTY file. *
8  * email : info at matsim dot org *
9  * *
10  * *********************************************************************** *
11  * *
12  * This program is free software; you can redistribute it and/or modify *
13  * it under the terms of the GNU General Public License as published by *
14  * the Free Software Foundation; either version 2 of the License, or *
15  * (at your option) any later version. *
16  * See also COPYING, LICENSE and WARRANTY file *
17  * *
18  * *********************************************************************** */
19 package org.matsim.core.scoring.functions;
20 
21 import org.matsim.api.core.v01.Scenario;
28 import org.matsim.pt.PtConstants;
30 
31 import jakarta.inject.Inject;
32 import java.util.HashMap;
33 import java.util.Map;
34 
39  private final ScoringConfigGroup config;
42  private final Map<String, ScoringParameters> params = new HashMap<>();
43  private final Population population;
44 
45  @Inject
46  SubpopulationScoringParameters(PlansConfigGroup plansConfigGroup, ScoringConfigGroup scoringConfigGroup, ScenarioConfigGroup scenarioConfigGroup, Population population, TransitConfigGroup transitConfigGroup) {
47  this.config = scoringConfigGroup;
48  this.scConfig = scenarioConfigGroup;
49  this.transitConfigGroup = transitConfigGroup;
50  this.population = population ;
51  }
52 
54  this(scenario.getConfig().plans(), scenario.getConfig().scoring(), scenario.getConfig().scenario(), scenario.getPopulation(), scenario.getConfig().transit());
55  }
56 
57  @Override
59 // final String subpopulation = (String) PopulationUtils.getPersonAttribute( person, subpopulationAttributeName) ;
60  final String subpopulation = PopulationUtils.getSubpopulation( person );
61 
62  if (!this.params.containsKey(subpopulation)) {
63  /* lazy initialization of params. not strictly thread safe, as different threads could
64  * end up with different params-object, although all objects will have the same
65  * values in them due to using the same config. Still much better from a memory performance
66  * point of view than giving each ScoringFunction its own copy of the params.
67  */
68  ScoringParameters.Builder builder = new ScoringParameters.Builder(this.config, this.config.getScoringParameters(subpopulation), scConfig);
69  if (transitConfigGroup.isUseTransit()) {
70  // yyyy this should go away somehow. :-)
71 
72 
73 
75  transitActivityParams.setTypicalDuration(120.0);
76  transitActivityParams.setOpeningTime(0.) ;
77  transitActivityParams.setClosingTime(0.) ;
78  ActivityUtilityParameters.Builder modeParamsBuilder = new ActivityUtilityParameters.Builder(transitActivityParams);
79  modeParamsBuilder.setScoreAtAll(false);
80  builder.setActivityParameters(PtConstants.TRANSIT_ACTIVITY_TYPE, modeParamsBuilder.build());
81  }
82 
83  this.params.put(
84  subpopulation,
85  builder.build());
86  }
87 
88  return this.params.get(subpopulation);
89  }
90 }
static final String TRANSIT_ACTIVITY_TYPE
ActivityParams setTypicalDuration(final String typicalDuration)
ScoringParameterSet getScoringParameters(String subpopulation)
final ScoringConfigGroup scoring()
Definition: Config.java:407
static String getSubpopulation(HasPlansAndId<?, ?> person)
TransitConfigGroup transit()
Definition: Config.java:451
final PlansConfigGroup plans()
Definition: Config.java:415
ScenarioConfigGroup scenario()
Definition: Config.java:435