Program: 180731
Project: 180731
Buggy source:
/** 
 * Runs the bias analyser
 * @param args No input parameters
 */
public static void main(String[] args){
  RegressionModelCUBIC model=new RegressionModelCUBIC();
  SemanticModule semMod=model.getSemanticModule();
  semMod.start();
  ArrayList<BehaviourManager> storage=new ArrayList<BehaviourManager>();
  for (int i=0; i < 100; i++) {
    RampedHalfAndHalfInitialiser rhh=new RampedHalfAndHalfInitialiser(model);
    model.setPopulationSize(1000);
    List<CandidateProgram> testPop=rhh.getInitialPopulation();
    for (    CandidateProgram prog : testPop) {
      Representation progRep=semMod.codeToBehaviour(prog);
      boolean match=false;
      for (      BehaviourManager bddMan : storage) {
        if (bddMan.getBehaviour().equals(progRep)) {
          match=true;
          bddMan.addProgram(prog);
        }
      }
      if (match == false) {
        BehaviourManager bddMan=new BehaviourManager(progRep);
        bddMan.addProgram(prog);
        storage.add(bddMan);
      }
    }
  }
  System.out.println("String_Node_Str");
  System.out.println("String_Node_Str" + storage.size());
  ArrayList<String> output=new ArrayList<String>();
  BehaviourManager example=storage.get(0);
  if (example.getBehaviour() instanceof BooleanRepresentation) {
    output.add("String_Node_Str" + "String_Node_Str");
  }
 else   if (example.getBehaviour() instanceof AntRepresentation) {
    output.add("String_Node_Str" + "String_Node_Str");
  }
 else   if (example.getBehaviour() instanceof RegressionRepresentation) {
    output.add("String_Node_Str" + "String_Node_Str");
  }
  for (int i=0; i < storage.size(); i++) {
    BehaviourManager thisOne=storage.get(i);
    if (thisOne.getBehaviour() instanceof BooleanRepresentation) {
      output.add(i + "String_Node_Str" + ((double)thisOne.getFrequency() / 100)+ "String_Node_Str"+ ((BooleanRepresentation)thisOne.getBehaviour()).getBDD().nodeCount()+ "String_Node_Str"+ ((BooleanRepresentation)thisOne.getBehaviour()).getBDD().satCount()+ "String_Node_Str");
    }
 else     if (thisOne.getBehaviour() instanceof AntRepresentation) {
      output.add(i + "String_Node_Str" + ((double)thisOne.getFrequency() / 100)+ "String_Node_Str"+ countMoves(((AntRepresentation)thisOne.getBehaviour()).getAntRepresentation())+ "String_Node_Str"+ getLastO(((AntRepresentation)thisOne.getBehaviour()).getAntRepresentation())+ "String_Node_Str");
    }
 else     if (thisOne.getBehaviour() instanceof RegressionRepresentation) {
      output.add(i + "String_Node_Str" + ((double)thisOne.getFrequency() / 100)+ "String_Node_Str"+ ((RegressionRepresentation)thisOne.getBehaviour()).getRegressionRepresentation().size()+ "String_Node_Str"+ ((RegressionRepresentation)thisOne.getBehaviour()).isConstant()+ "String_Node_Str");
    }
  }
  FileManip.doOutput(new File("String_Node_Str"),output,"String_Node_Str",false);
  semMod.stop();
}

Fixed version (ground truth):
/** 
 * Runs the bias analyser
 * @param args No input parameters
 */
public static void main(String[] args){
  RegressionModelCUBIC model=new RegressionModelCUBIC();
  SemanticModule semMod=model.getSemanticModule();
  semMod.start();
  ArrayList<BehaviourManager> storage=new ArrayList<BehaviourManager>();
  for (int i=0; i < 100; i++) {
    RampedHalfAndHalfInitialiser rhh=new RampedHalfAndHalfInitialiser(model);
    model.setPopulationSize(1000);
    List<CandidateProgram> testPop=rhh.getInitialPopulation();
    for (    CandidateProgram prog : testPop) {
      Representation progRep=semMod.codeToBehaviour(prog.getRootNode());
      boolean match=false;
      for (      BehaviourManager bddMan : storage) {
        if (bddMan.getBehaviour().equals(progRep)) {
          match=true;
          bddMan.addProgram(prog);
        }
      }
      if (match == false) {
        BehaviourManager bddMan=new BehaviourManager(progRep);
        bddMan.addProgram(prog);
        storage.add(bddMan);
      }
    }
  }
  System.out.println("String_Node_Str");
  System.out.println("String_Node_Str" + storage.size());
  ArrayList<String> output=new ArrayList<String>();
  BehaviourManager example=storage.get(0);
  if (example.getBehaviour() instanceof BooleanRepresentation) {
    output.add("String_Node_Str" + "String_Node_Str");
  }
 else   if (example.getBehaviour() instanceof AntRepresentation) {
    output.add("String_Node_Str" + "String_Node_Str");
  }
 else   if (example.getBehaviour() instanceof RegressionRepresentation) {
    output.add("String_Node_Str" + "String_Node_Str");
  }
  for (int i=0; i < storage.size(); i++) {
    BehaviourManager thisOne=storage.get(i);
    if (thisOne.getBehaviour() instanceof BooleanRepresentation) {
      output.add(i + "String_Node_Str" + ((double)thisOne.getFrequency() / 100)+ "String_Node_Str"+ ((BooleanRepresentation)thisOne.getBehaviour()).getBDD().nodeCount()+ "String_Node_Str"+ ((BooleanRepresentation)thisOne.getBehaviour()).getBDD().satCount()+ "String_Node_Str");
    }
 else     if (thisOne.getBehaviour() instanceof AntRepresentation) {
      output.add(i + "String_Node_Str" + ((double)thisOne.getFrequency() / 100)+ "String_Node_Str"+ countMoves(((AntRepresentation)thisOne.getBehaviour()).getAntRepresentation())+ "String_Node_Str"+ getLastO(((AntRepresentation)thisOne.getBehaviour()).getAntRepresentation())+ "String_Node_Str");
    }
 else     if (thisOne.getBehaviour() instanceof RegressionRepresentation) {
      output.add(i + "String_Node_Str" + ((double)thisOne.getFrequency() / 100)+ "String_Node_Str"+ ((RegressionRepresentation)thisOne.getBehaviour()).getRegressionRepresentation().size()+ "String_Node_Str"+ ((RegressionRepresentation)thisOne.getBehaviour()).isConstant()+ "String_Node_Str");
    }
  }
  FileManip.doOutput(new File("String_Node_Str"),output,"String_Node_Str",false);
  semMod.stop();
}