MATSIM
ConflictModule.java
Go to the documentation of this file.
1 package org.matsim.core.replanning.conflicts;
2 
3 import java.io.File;
4 import java.util.Random;
5 import java.util.Set;
6 
7 import org.apache.logging.log4j.LogManager;
8 import org.apache.logging.log4j.Logger;
12 
13 import com.google.inject.Binder;
14 import com.google.inject.Provides;
15 import com.google.inject.Singleton;
16 import com.google.inject.binder.LinkedBindingBuilder;
17 import com.google.inject.multibindings.Multibinder;
18 
24 public class ConflictModule extends AbstractModule {
25  private final static Logger logger = LogManager.getLogger(ConflictModule.class);
26 
27  private final static String OUTPUT_FILE = "conflicts.csv";
28 
29  @Override
30  public void install() {
31  // initialize the builder
32  getMultibinder(binder());
33  }
34 
35  @Provides
36  @Singleton
37  ConflictWriter provideConflictWriter(OutputDirectoryHierarchy outputDirectoryHierarchy) {
38  File outputPath = new File(outputDirectoryHierarchy.getOutputFilename(OUTPUT_FILE));
39  return new ConflictWriter(outputPath);
40  }
41 
42  @Provides
43  @Singleton
44  ConflictManager provideConflictManager(Set<ConflictResolver> resolvers, ConflictWriter writer) {
45  if (resolvers.size() > 0 && !getConfig().replanning().getPlanSelectorForRemoval()
47  logger.warn("The replanning.planSelectorForRemoval is not set to "
49  + ". This will likely cause problems with the conflict logic if you are not sure what you are doing.");
50  }
51 
52  Random random = MatsimRandom.getRandom(); // no need for local instance, not parallel!
53  return new ConflictManager(resolvers, writer, random);
54  }
55 
56  static Multibinder<ConflictResolver> getMultibinder(Binder binder) {
57  return Multibinder.newSetBinder(binder, ConflictResolver.class);
58  }
59 
69  static public LinkedBindingBuilder<ConflictResolver> bindResolver(Binder binder) {
70  return getMultibinder(binder).addBinding();
71  }
72 }
static LinkedBindingBuilder< ConflictResolver > bindResolver(Binder binder)
final ReplanningConfigGroup replanning()
Definition: Config.java:427