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.log4j.Logger;
26 import org.apache.logging.log4j.core.layout.PatternLayout;
101 this.filename = filename;
105 static final String OUTPUT_PREFIX =
"output_";
107 public static final String
DIVIDER =
"###################################################";
111 public static final PatternLayout
DEFAULTLOG4JLAYOUT = PatternLayout.newBuilder().withPattern(
"%d{ISO8601} %5p %C{1}:%L %m%n").build();
134 public static void main(
final String[] args) {
135 if ((args == null) || (args.length == 0)) {
136 System.out.println(
"No argument given!");
137 System.out.println(
"Usage: Controler config-file [dtd-file]");
138 System.out.println();
157 this(args.length > 0 ? args[0] : null, null, null);
161 this(configFileName, null, null);
173 if (scenario != null) {
178 if (configFileName == null) {
180 if (config == null) {
181 throw new IllegalArgumentException(
"Either the config or the filename of a configfile must be set to initialize the Controler.");
196 this.overrides = scenario == null ?
218 this.injectorCreated =
true;
222 public void install() {
223 bind(Key.get(
new TypeLiteral<List<AbstractQSimModule>>() {
224 }, Names.named(
"overrides"))).toInstance(overridingQSimModules);
233 final Set<AbstractModule> standardModules = Collections.singleton(
236 public void install(){
260 return this.
injector.getInstance(com.google.inject.Injector.class).getInstance(Key.get(
new TypeLiteral<Map<String, TravelTime>>() {}))
302 if (this.injectorCreated) {
306 if ( scenario == null ) {
307 log.error(
"Trying to get Scenario before it was instanciated.");
308 log.error(
"When passing a config file or a config file path to the Controler constructor," );
309 log.error(
"Scenario will be loaded first when the run() method is invoked." );
310 throw new IllegalStateException(
"Trying to get Scenario before is was instanciated." );
324 public void processEvent(
Event event) {
332 public void install() {
333 addEventHandlerBinding().toInstance(handler);
340 throw new UnsupportedOperationException();
344 public void resetHandlers(
int iteration) {
345 throw new UnsupportedOperationException();
349 public void initProcessing() {
350 throw new UnsupportedOperationException();
354 public void afterSimStep(
double time) {
355 throw new UnsupportedOperationException();
359 public void finishProcessing() {
360 throw new UnsupportedOperationException();
393 return this.
injector.getInstance(com.google.inject.Injector.class).getInstance(Key.get(
new TypeLiteral<Map<String, TravelDisutilityFactory>>(){}))
429 public void install() {
430 addControlerListenerBinding().toInstance(controlerListener);
439 public void install() {
440 this.bindScoringFunctionFactory().toInstance(scoringFunctionFactory);
448 public void install() {
456 if (this.injectorCreated) {
457 throw new RuntimeException(
"Too late for configuring the Controler. This can only be done before calling run.");
464 if (this.injectorCreated) {
465 throw new RuntimeException(
"Too late for configuring the Controler. This can only be done before calling run.");
467 this.modules = Arrays.asList(modules);
472 if (this.injectorCreated) {
473 throw new RuntimeException(
"Too late for configuring the Controler. This can only be done before calling run.");
475 overridingQSimModules.add(qsimModule);
482 public void install() {
483 installQSimModule(qsimModule);
496 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()
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)
ParallelEventHandlingConfigGroup parallelEventHandling
Controler(final String configFileName)
IterationStopWatch getStopwatch()
final LeastCostPathCalculatorFactory getLeastCostPathCalculatorFactory()
final Controler addQSimModule(AbstractQSimModule qsimModule)
final Controler addOverridingQSimModule(AbstractQSimModule qsimModule)
static AbstractModule override(final Iterable<? extends AbstractModule > modules, final AbstractModule abstractModule)
com.google.inject.Injector injector
OutputDirectoryHierarchy getControlerIO()