MATSIM
RunScenarioWithCustomScoring.java
Go to the documentation of this file.
1 /* *********************************************************************** *
2  * project: org.matsim.* *
3  * *
4  * *********************************************************************** *
5  * *
6  * copyright : (C) 2008 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 tutorial.programming.example21tutorialTUBclass.class2016.scoring;
20 
21 import org.apache.log4j.Logger;
22 import org.matsim.api.core.v01.Scenario;
24 import org.matsim.core.config.Config;
39 
40 
42 
43 
44  public static void main(String[] args) {
45 
46  // This loads a default matsim config:
47  Config config = ConfigUtils.loadConfig("input/ha2/ha2policyCaseConfig.xml");
48 
49  //Relative path locations must be relative to the project folder (both in the config and here)
50  config.controler().setOverwriteFileSetting( OverwriteFileSetting.deleteDirectoryIfExists );
51  config.controler().setLastIteration(10);
52  // This loads the scenario
53  final Scenario scenario = ScenarioUtils.loadScenario(config) ;
54  final KindergartenArrivalHandler kindergartenArrivalHandler = new KindergartenArrivalHandler();
55 
56  Controler controler = new Controler( scenario ) ;
57  controler.addOverridingModule(new AbstractModule() {
58  @Override
59  public void install() {
60  addEventHandlerBinding().toInstance(kindergartenArrivalHandler);
61  }
62  });;
63 
65 
66  @Override
67  public void notifyIterationEnds(IterationEndsEvent event) {
68  Logger.getLogger(getClass()).info("Kids in kindergarten 8142 :"+kindergartenArrivalHandler.kinder );
69  }
70  });
71 
73 
74  @Override
75  public ScoringFunction createNewScoringFunction(Person person) {
76  SumScoringFunction sumScoringFunction = new SumScoringFunction();
77 
78  // Score activities, legs, payments and being stuck
79  // with the default MATSim scoring based on utility parameters in the config file.
80  final CharyparNagelScoringParameters params =
81  new CharyparNagelScoringParameters.Builder(scenario, person.getId()).build();
82  sumScoringFunction.addScoringFunction(new KindergartenActivityScoring(person.getId(), kindergartenArrivalHandler));
83  sumScoringFunction.addScoringFunction(new CharyparNagelLegScoring(params, scenario.getNetwork()));
84  sumScoringFunction.addScoringFunction(new CharyparNagelMoneyScoring(params));
85  sumScoringFunction.addScoringFunction(new CharyparNagelAgentStuckScoring(params));
86  return sumScoringFunction;
87 
88  }
89 
90  });
91 
92  controler.run();
93 
94  }
95 
96 }
final void setScoringFunctionFactory(final ScoringFunctionFactory scoringFunctionFactory)
Definition: Controler.java:376
void addScoringFunction(BasicScoring scoringFunction)
final void addOverridingModule(AbstractModule abstractModule)
Definition: Controler.java:410
ControlerConfigGroup controler
Definition: Config.java:87
void addControlerListener(final ControlerListener controlerListener)
Definition: Controler.java:367
static Config loadConfig(final String filename, ConfigGroup...customModules)
static Scenario loadScenario(final Config config)