Class MetricFileWriter

java.lang.Object
org.moeaframework.analysis.io.MetricFileWriter
All Implemented Interfaces:
Closeable, AutoCloseable, OutputWriter

public class MetricFileWriter extends Object implements OutputWriter
Writes metric files. A metric file is the output of Evaluator and contains on each line one or more metrics separated by whitespace from one parameterization.

This writer can append the results to the file, if a previous file exists. By reading the previous file with a MetricFileReader, this writer will begin appending after the last valid entry. Query the getNumberOfEntries() to determine how many valid entries are contained in the file.

See Also:
  • Field Details

    • NUMBER_OF_METRICS

      public static final int NUMBER_OF_METRICS
      The number of metrics supported by MetricFileWriter.
      See Also:
  • Constructor Details

    • MetricFileWriter

      public MetricFileWriter(Indicators indicators, File file, MetricFileWriter.MetricFileWriterSettings settings) throws IOException
      Constructs an output writer for writing metric files to the specified file. If the file already exists, a cleanup operation is first performed. The cleanup operation removes any invalid entries from the file. The getNumberOfEntries() can then be used to resume evaluation from the last recorded entry.
      Parameters:
      indicators - the indicators to evaluate
      file - the file to which the metrics are written
      settings - the settings for writing metric files
      Throws:
      IOException - if an I/O error occurred
  • Method Details

    • getNumberOfEntries

      public int getNumberOfEntries()
      Description copied from interface: OutputWriter
      Returns the number of entries in the file. If the file already existed, this returns the number of complete entries in the output file. This value is incremented on every invocation to the OutputWriter.append(org.moeaframework.analysis.io.ResultEntry) method.
      Specified by:
      getNumberOfEntries in interface OutputWriter
      Returns:
      the number of entries in the file
    • append

      public void append(ResultEntry entry)
      Evaluates the specified non-dominated population and outputs the resulting metrics to the file.
      Specified by:
      append in interface OutputWriter
      Parameters:
      entry - the non-dominated population and optional attributes
    • getMetricIndex

      public static int getMetricIndex(String value)
      Gets the index of the metric. This should match the order that columns are written in append(ResultEntry).
      Parameters:
      value - the metric
      Returns:
      the index of the metric
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
    • append

      public static MetricFileWriter append(Indicators indicators, File file) throws IOException
      Opens the metric file in append mode. If the file already exists, this writer will validate the contents, remove any invalid entries at the end of the file, and report the number of valid entries in the file.
      Parameters:
      indicators - the indicators to evaluate
      file - the file
      Returns:
      the metric file writer
      Throws:
      IOException - if an I/O error occurred
    • overwrite

      public static MetricFileWriter overwrite(Indicators indicators, File file) throws IOException
      Opens the metric file in overwrite mode. Any existing file will be deleted.
      Parameters:
      indicators - the indicators to evaluate
      file - the file
      Returns:
      the metric file writer
      Throws:
      IOException - if an I/O error occurred