19 package org.matsim.core.controler;
21 import com.google.inject.Key;
22 import com.google.inject.Provider;
23 import com.google.inject.TypeLiteral;
24 import com.google.inject.name.Names;
25 import org.apache.logging.log4j.LogManager;
26 import org.apache.logging.log4j.Logger;
27 import org.apache.logging.log4j.core.layout.PatternLayout;
98 activitiescsv(
"activities.csv")
104 this.filename = filename;
108 static final String OUTPUT_PREFIX =
"output_";
110 public static final String
DIVIDER =
"###################################################";
112 private static final Logger
log = LogManager.getLogger(
Controler.class);
114 public static final PatternLayout
DEFAULTLOG4JLAYOUT = PatternLayout.newBuilder().withPattern(
"%d{ISO8601} %5p %C{1}:%L %m%n").build();
137 public static void main(
final String[] args) {
138 if ((args == null) || (args.length == 0)) {
139 System.out.println(
"No argument given!");
140 System.out.println(
"Usage: Controler config-file [dtd-file]");
141 System.out.println();
160 this(args.length > 0 ? args[0] : null, null, null);
164 this(configFileName, null, null);
176 if (scenario != null) {
181 if (configFileName == null) {
183 if (config == null) {
184 throw new IllegalArgumentException(
"Either the config or the filename of a configfile must be set to initialize the Controler.");
199 this.overrides = scenario == null ?
209 if (!injectorCreated) {
210 this.injectorCreated =
true;
214 public void install() {
215 bind(Key.get(
new TypeLiteral<List<AbstractQSimModule>>() {
216 }, Names.named(
"overrides"))).toInstance(overridingQSimModules);
225 final Set<AbstractModule> standardModules = Collections.singleton(
228 public void install(){
270 return this.
injector.getInstance(com.google.inject.Injector.class).getInstance(Key.get(
new TypeLiteral<Map<String, TravelTime>>() {}))
312 if (this.injectorCreated) {
316 if ( scenario == null ) {
317 log.error(
"Trying to get Scenario before it was instanciated.");
318 log.error(
"When passing a config file or a config file path to the Controler constructor," );
319 log.error(
"Scenario will be loaded first when the run() method is invoked." );
320 throw new IllegalStateException(
"Trying to get Scenario before is was instanciated." );
334 public void processEvent(
Event event) {
342 public void install() {
343 addEventHandlerBinding().toInstance(handler);
350 throw new UnsupportedOperationException();
354 public void resetHandlers(
int iteration) {
355 throw new UnsupportedOperationException();
359 public void initProcessing() {
360 throw new UnsupportedOperationException();
364 public void afterSimStep(
double time) {
365 throw new UnsupportedOperationException();
369 public void finishProcessing() {
370 throw new UnsupportedOperationException();
386 this.injectorCreated =
false;
411 return this.
injector.getInstance(com.google.inject.Injector.class).getInstance(Key.get(
new TypeLiteral<Map<String, TravelDisutilityFactory>>(){}))
447 public void install() {
448 addControlerListenerBinding().toInstance(controlerListener);
457 public void install() {
458 this.bindScoringFunctionFactory().toInstance(scoringFunctionFactory);
466 public void install() {
474 if (this.injectorCreated) {
475 throw new RuntimeException(
"Too late for configuring the Controler. This can only be done before calling run.");
482 if (this.injectorCreated) {
483 throw new RuntimeException(
"Too late for configuring the Controler. This can only be done before calling run.");
485 this.modules = Arrays.asList(modules);
490 if (this.injectorCreated) {
491 throw new RuntimeException(
"Too late for configuring the Controler. This can only be done before calling run.");
493 overridingQSimModules.add(qsimModule);
500 public void install() {
501 installQSimModule(qsimModule);
514 public void install() {
final Controler addOverridingModule(AbstractModule abstractModule)
final void setScoringFunctionFactory(final ScoringFunctionFactory scoringFunctionFactory)
static final PatternLayout DEFAULTLOG4JLAYOUT
void removeConfigConsistencyChecker(final Class clazz)
void configure(QSimComponentsConfig components)
final EventsManager getEvents()
static final String DIVIDER
static Config loadConfig(final String filename, ConfigGroup... customModules)
Controler(final Scenario scenario)
List< AbstractModule > modules
TravelDisutility createTravelDisutility(TravelTime timeCalculator)
final void setModules(AbstractModule... modules)
final TravelTime getLinkTravelTimes()
EventsManagerConfigGroup eventsManager()
void configure(QSimComponentsConfig components)
final TravelDisutilityFactory getTravelDisutilityFactory()
final TravelDisutility createTravelDisutilityCalculator()
Controler(final Config config)
final com.google.inject.Injector getInjector()
List< AbstractQSimModule > overridingQSimModules
Integer getIterationNumber()
final CalcLinkStats getLinkStats()
final Provider< TripRouter > getTripRouterProvider()
final Scenario getScenario()
static AbstractModule emptyModule()
static void main(final String[] args)
void addConfigConsistencyChecker(final ConfigConsistencyChecker checker)
Controler(final String configFileName, final Config config, Scenario scenario)
final VolumesAnalyzer getVolumes()
DefaultFiles(String filename)
final ScoringFunctionFactory getScoringFunctionFactory()
static void assertNotNull(Object obj)
final StrategyManager getStrategyManager()
final void setTerminationCriterion(final TerminationCriterion terminationCriterion)
Controler(final String[] args)
static com.google.inject.Injector createInjector(final Config config, Module... modules)
final Controler configureQSimComponents(QSimComponentsConfigurator configurator)
final ScoreStats getScoreStats()
static final String DIRECTORY_ITERS
void addControlerListener(final ControlerListener controlerListener)
Controler(final String configFileName)
IterationStopWatch getStopwatch()
final LeastCostPathCalculatorFactory getLeastCostPathCalculatorFactory()
final Controler addQSimModule(AbstractQSimModule qsimModule)
final Controler addOverridingQSimModule(AbstractQSimModule qsimModule)
final void resetInjector()
static AbstractModule override(final Iterable<? extends AbstractModule > modules, final AbstractModule abstractModule)
com.google.inject.Injector injector
OutputDirectoryHierarchy getControlerIO()