MATSIM
ConflictWriter.java
Go to the documentation of this file.
1 package org.matsim.core.replanning.conflicts;
2 
3 import java.io.BufferedWriter;
4 import java.io.File;
5 import java.io.IOException;
6 import java.io.UncheckedIOException;
7 import java.util.ArrayList;
8 import java.util.Arrays;
9 import java.util.Collections;
10 import java.util.List;
11 import java.util.Map;
12 
13 import org.matsim.core.utils.io.IOUtils;
14 
20 public class ConflictWriter {
21  private final File outputPath;
22 
23  public ConflictWriter(File outputPath) {
24  this.outputPath = outputPath;
25  }
26 
27  public void write(int iteration, int rejectedToInitial, int rejectedToRandom, Map<String, Integer> conflictCounts) {
28  boolean writeHeader = !outputPath.exists();
29 
30  List<String> resolvers = new ArrayList<>(conflictCounts.keySet());
31  Collections.sort(resolvers);
32 
33  try {
34  BufferedWriter writer = IOUtils.getAppendingBufferedWriter(outputPath.getPath());
35 
36  if (writeHeader) {
37  List<String> header = new ArrayList<>(
38  Arrays.asList("iteration", "rejected_total", "switched_to_initial", "switched_to_random"));
39  resolvers.stream().map(r -> "resolver:" + r).forEach(header::add);
40 
41  writer.write(String.join(";", header) + "\n");
42  }
43 
44  List<String> row = new ArrayList<>(Arrays.asList(String.valueOf(iteration), //
45  String.valueOf(rejectedToInitial + rejectedToRandom), //
46  String.valueOf(rejectedToInitial), //
47  String.valueOf(rejectedToRandom) //
48  ));
49 
50  for (String resolver : resolvers) {
51  row.add(String.valueOf(conflictCounts.get(resolver)));
52  }
53 
54  writer.write(String.join(";", row) + "\n");
55 
56  writer.close();
57  } catch (IOException e) {
58  throw new UncheckedIOException(e);
59  }
60  }
61 }
static BufferedWriter getAppendingBufferedWriter(String filename)
Definition: IOUtils.java:553
void write(int iteration, int rejectedToInitial, int rejectedToRandom, Map< String, Integer > conflictCounts)