19 package org.matsim.core.controler;
21 import com.google.inject.Provider;
22 import org.apache.logging.log4j.LogManager;
23 import org.apache.logging.log4j.Logger;
32 import jakarta.inject.Inject;
35 class NewControler
extends AbstractController implements ControlerI {
37 private static final Logger log = LogManager.getLogger(NewControler.class);
39 private final Config config;
40 private final PrepareForSim prepareForSim;
41 private final PrepareForMobsim prepareForMobsim;
45 private final Provider<Mobsim> mobsimProvider;
47 private final TerminationCriterion terminationCriterion;
49 private final Set<ControlerListener> controlerListenersDeclaredByModules;
54 NewControler(
Config config, ControlerListenerManagerImpl controlerListenerManager, MatsimServices matsimServices,
58 Set<ControlerListener> controlerListenersDeclaredByModules,
ControllerConfigGroup controllerConfigGroup,
60 , PrepareForMobsim prepareForMobsim
62 super(controlerListenerManager, stopWatch, matsimServices);
64 this.prepareForMobsim = prepareForMobsim;
66 this.prepareForSim = prepareForSim;
67 this.eventsHandling = eventsHandling;
68 this.plansDumping = plansDumping;
69 this.plansReplanning = plansReplanning;
70 this.mobsimProvider = mobsimProvider;
71 this.plansScoring = plansScoring;
72 this.terminationCriterion = terminationCriterion;
73 this.dumpDataAtEnd = dumpDataAtEnd;
74 this.controlerListenersDeclaredByModules = controlerListenersDeclaredByModules;
75 this.controllerConfigGroup = controllerConfigGroup;
76 this.outputDirectoryHierarchy = outputDirectoryHierarchy;
80 public final void run() {
81 super.setupOutputDirectory(outputDirectoryHierarchy);
82 super.run(this.config);
83 OutputDirectoryLogging.closeOutputDirLogging();
87 protected final void loadCoreListeners() {
97 this.addCoreControlerListener(this.dumpDataAtEnd);
100 this.addCoreControlerListener(this.plansScoring);
101 this.addCoreControlerListener(this.plansReplanning);
102 this.addCoreControlerListener(this.plansDumping);
103 this.addCoreControlerListener(this.eventsHandling);
106 for (
ControlerListener controlerListener : this.controlerListenersDeclaredByModules) {
107 this.addControlerListener(controlerListener);
112 protected final void prepareForSim() {
113 this.prepareForSim.run();
117 protected final void prepareForMobsim() {
118 this.prepareForMobsim.run() ;
123 protected final void runMobSim() {
124 this.mobsimProvider.get().run();
128 protected final boolean mayTerminateAfterIteration(
int iteration) {
129 return terminationCriterion.mayTerminateAfterIteration(iteration);
133 protected final boolean shouldTerminate(
int iteration) {
134 return terminationCriterion.doTerminate(iteration);
boolean getDumpDataAtEnd()
void addConfigConsistencyChecker(final ConfigConsistencyChecker checker)