/* returns all the solutions as strings, one per line
  */
 public String getAllSolutionStrings() {
   StringBuffer sb = new StringBuffer();
   for (int i = 0; i < solutions.length; i++) {
     sb.append(solutions[i]);
   }
   return sb.toString();
 }
 public String getModuleInfo() {
   // return "";
   StringBuffer sb = new StringBuffer("<p>Overview: Evaluate the performance of ");
   sb.append("a classifier.");
   sb.append("<p>Detailed Description: Given a PredictionModelModule and a ");
   sb.append("Table of examples, use the model to predict a value for each ");
   sb.append("example.  The percentage of correct predictions for each output ");
   sb.append("feature is calculated and output in a ParameterPoint.");
   sb.append("<p>Data Handling: This module does not modify the input data. ");
   sb.append("<p>Scalability: This module will make predictions for each ");
   sb.append("example in the Table; there must be sufficient memory to hold ");
   sb.append("each prediction.");
   return sb.toString();
 }
  /* returns a string with info on the ranges, obj constraints, etc
   */
  public String getSpaceDefinitionString() {
    StringBuffer sb = new StringBuffer();

    sb.append("\nRanges:\n");
    sb.append("\t_Name_\t_Min_\t_Max_\n");
    for (int i = 0; i < ranges.length; i++) {
      sb.append("\t");
      sb.append(ranges[i].getName());
      sb.append("\t");
      sb.append(ranges[i].getMin());
      sb.append("\t");
      sb.append(ranges[i].getMax());
      sb.append("\n");
    }
    sb.append("\nObjective Constraint:\n");
    sb.append("\t_Name_\t_Is Maximizing?_\n");
    sb.append("\t");
    sb.append(objConstraints.getName());
    sb.append("\t");
    sb.append(objConstraints.isMaximizing());
    sb.append("\n");
    return (sb.toString());
  }
  /**
   * Construct a string representing the current status of the population, best members, maybe worst
   * members, whatever.
   */
  public String statusString() {
    StringBuffer sb = new StringBuffer(1024);
    sb.append("\nBest performance ");
    sb.append(solutions[bestSolution].getObjective());
    sb.append(" looking for ");
    sb.append(this.convergenceTarget);
    sb.append("\n    -");
    sb.append(solutions[bestSolution]);

    sb.append('\n');
    sb.append("Worst performance : ");
    sb.append(solutions[worstSolution].getObjective());
    sb.append('\n');
    sb.append("Average performance : ");
    sb.append(this.getAverage());
    sb.append('\n');
    return sb.toString();
  }