BestIndividualFile.java

/**
 * 
 */
package progen.output.outputers;

import progen.kernel.population.Individual;
import progen.output.HistoricalData;
import progen.output.datacollectors.DataCollector;
import progen.output.plugins.Plugin;

/**
 * @author jirsis
 * @since 2.0
 */
public class BestIndividualFile extends FileOutput {

  private static final String END_OF_LINE_SYMBOL = ")\n";
  private static final String WHITE_SPACE_SYMBOL = " ";

  public BestIndividualFile() {
    super("bestIndividual.txt", false);
  }

  @Override
  public void print() {
    this.init();
    final HistoricalData historical = HistoricalData.makeInstance();
    DataCollector data;

    data = historical.getCurrentDataCollector("ExperimentIndividualData");
    final Plugin plugin = data.getPlugin("best");

    final Individual individual = (Individual) plugin.getValue();

    printADF(individual);
    printRPB(individual);
    this.close();
  }

  private void printRPB(final Individual individual) {
    for (int i = 0; i < individual.getTotalRPB(); i++) {
      getWriter().println("(defun RPB" + i + WHITE_SPACE_SYMBOL);
      getWriter().println(Formatter.tree(individual.getTrees().get("RPB" + i)));
      getWriter().println(END_OF_LINE_SYMBOL);
    }
  }

  private void printADF(final Individual individual) {
    for (int i = 0; i < individual.getTotalADF(); i++) {
      getWriter().println("(defun ADF" + i + WHITE_SPACE_SYMBOL);
      getWriter().println(Formatter.tree(individual.getTrees().get("ADF" + i)));
      getWriter().println(END_OF_LINE_SYMBOL);
    }
  }
}