public void run() { // yy move config reading into the c'tor. Lock config there. Force everybody who wants to // modify the config to // do this by loading it before the controler. // yy move events into the c'tor. ... Similarly. // (Yet with this simplified controler you cannot get at the scenario or the events between ctor // and run, // so this is really of less importance here. kai, sep'12) this.config.addConfigConsistencyChecker(new ConfigConsistencyCheckerImpl()); ControlerUtils.checkConfigConsistencyAndWriteToLog( this.config, "Complete config dump after reading the config file:"); this.setupOutputDirectory( config.controler().getOutputDirectory(), config.controler().getRunId(), OutputDirectoryHierarchy.OverwriteFileSetting.overwriteExistingFiles); this.network = this.scenario.getNetwork(); this.population = this.scenario.getPopulation(); this.events = EventsUtils.createEventsManager(config); // add a couple of useful event handlers: this.events.addHandler(new VolumesAnalyzer(3600, 24 * 3600 - 1, this.network)); this.legTimes = new CalcLegTimes(); this.events.addHandler(legTimes); this.travelTimeCalculator = TravelTimeCalculator.create(this.network, this.config.travelTimeCalculator()); this.events.addHandler(travelTimeCalculator); super.run(config); }
@Override protected void prepareForSim() { ControlerUtils.checkConfigConsistencyAndWriteToLog( this.config, "Config dump before doIterations:"); ParallelPersonAlgorithmRunner.run( this.population, this.config.global().getNumberOfThreads(), new ParallelPersonAlgorithmRunner.PersonAlgorithmProvider() { @Override public AbstractPersonAlgorithm getPersonAlgorithm() { return new PersonPrepareForSim( createRoutingAlgorithm(), KnSimplifiedController.this.scenario); } }); }