MATSIM
ExampleIndividualizedScoringParametersPerPerson.java
Go to the documentation of this file.
1 package tutorial.programming.individualizedScoringParameters;
2 
3 import com.google.inject.Inject;
4 import org.matsim.api.core.v01.Id;
9 
10 import java.util.HashMap;
11 import java.util.Map;
12 
17  private final Scenario scenario;
18 
19  // For avoiding re-generating the parameters at each call, we store them in a map once created.
20  private Map<Id<Person>,CharyparNagelScoringParameters> cache = new HashMap<>();
21 
22  @Inject
24  this.scenario = scenario;
25  }
26 
27  @Override
29  if ( cache.containsKey( person.getId() ) ) return cache.get( person.getId() );
30 
31  final CharyparNagelScoringParameters.Builder builder = new CharyparNagelScoringParameters.Builder(scenario, person.getId());
32 
33  // tune. Here hard-coded for lisibility, but should be computed/read from person attributes.
34  builder.getActivityParameters( "h" ).setTypicalDuration_s( 8 * 3600 );
35  builder.getModeParameters( "car" ).setMarginalUtilityOfTraveling_s( -6 );
36 
37  final CharyparNagelScoringParameters parameters = builder.build();
38  cache.put( person.getId() , parameters );
39  return parameters;
40  }
41 }