@Override
  public double getDistance(S solution, L solutionList) {
    List<Double> listOfDistances = knnDistances(solution, solutionList) ;
    listOfDistances.sort(Comparator.naturalOrder());

    int limit = Math.min(k, listOfDistances.size()) ;

    double result ;
    if (limit == 0) {
      result = 0.0 ;
    } else {
      double sum = 0.0;
      for (int i = 0; i < limit; i++) {
        sum += listOfDistances.get(i);
      }
      result = sum/limit ;
    }
    return result;
  }
@ Override public double getDistance ( S solution , L solutionList ) { List < Double > listOfDistances = knnDistances ( solution , solutionList ) ; listOfDistances . sort ( Comparator . naturalOrder ( ) ) ; int limit = Math . min ( k , listOfDistances . size ( ) ) ; double result ; if ( limit == 0 ) { result = 0.0 ; } else { double sum = 0.0 ; for ( int i = 0 ; i < limit ; i ++ ) { sum += listOfDistances . get ( i ) ; } result = sum / limit ; } return result ; }
Computes the knn distance. If the solution list size is lower than k, then k = size in the computation
@param solution
@param solutionList
@return