code: protected void searchStarted() {
          // initialize
          init();
          // (re)set metadata
          startTime = System.currentTimeMillis();
          stopTime = JamesConstants.INVALID_TIMESTAMP;
          currentSteps = 0;
          lastImprovementTime = JamesConstants.INVALID_TIMESTAMP;
          stepsSinceLastImprovement = JamesConstants.INVALID_STEP_COUNT;
          minDelta = JamesConstants.INVALID_DELTA;
      }
docs: <p>
  This method is called when a search run is started.
  It first initializes and validates the search by calling {@link #init()}, which may throw a
  {@link SearchException} if initialization fails because the search has not been configured validly.
  Moreover, any {@link JamesRuntimeException} could be thrown in case initialization depends on
  malfunctioning components.
  After initialization, all general per run metadata is (re)set, such as the step count and execution time.
  </p>
  <p>
  Always call <code>super.searchStarted()</code> when overriding this method.
  Note however that it is preferred to override {@link #init()} instead.
  </p>
  
  @throws SearchException if initialization fails, e.g. because the search has not been configured validly
  @throws JamesRuntimeException in general, any {@link JamesRuntimeException} may be thrown
  in case of a malfunctioning component used during initialization