@Override public String toString(){
  StringBuffer BfString=new StringBuffer();
  BfString.append("\tBest first.\n\tStart set: ");
  if (m_starting == null) {
    BfString.append("no attributes\n");
  }
 else {
    BfString.append(startSetToString() + "\n");
  }
  BfString.append("\tSearch direction: ");
  if (m_searchDirection == SELECTION_BACKWARD) {
    BfString.append("backward\n");
  }
 else {
    if (m_searchDirection == SELECTION_FORWARD) {
      BfString.append("forward\n");
    }
 else {
      BfString.append("bi-directional\n");
    }
  }
  BfString.append("\tStale search after " + m_maxStale + " node expansions\n");
  BfString.append("\tTotal number of subsets evaluated: " + m_totalEvals + "\n");
  BfString.append("\tMerit of best subset found: " + Utils.doubleToString(Math.abs(m_bestMerit),8,3) + "\n");
  return BfString.toString();
}

@ Override public String toString ( ) { StringBuffer BfString = new StringBuffer ( ) ; BfString . append ( "\tBest first.\n\tStart set: " ) ; if ( m_starting == null ) { BfString . append ( "no attributes\n" ) ; } else { BfString . append ( startSetToString ( ) + "\n" ) ; } BfString . append ( "\tSearch direction: " ) ; if ( m_searchDirection == SELECTION_BACKWARD ) { BfString . append ( "backward\n" ) ; } else { if ( m_searchDirection == SELECTION_FORWARD ) { BfString . append ( "forward\n" ) ; } else { BfString . append ( "bi-directional\n" ) ; } } BfString . append ( "\tStale search after " + m_maxStale + " node expansions\n" ) ; BfString . append ( "\tTotal number of subsets evaluated: " + m_totalEvals + "\n" ) ; BfString . append ( "\tMerit of best subset found: " + Utils . doubleToString ( Math . abs ( m_bestMerit ) , 8 , 3 ) + "\n" ) ; return BfString . toString ( ) ; }
returns a description of the search as a string
