docs: protected void initializeNeighborhood() {
      double[] x = new double[populationSize];
      int[] idx = new int[populationSize];
  
      for (int i = 0; i < populationSize; i++) {
        // calculate the distances based on weight vectors
        for (int j = 0; j < populationSize; j++) {
          x[j] = MOEADUtils.distVector(lambda[i], lambda[j]);
          idx[j] = j;
        }
  
        // find 'niche' nearest neighboring subproblems
        MOEADUtils.minFastSort(x, idx, populationSize, neighborSize);
  
        System.arraycopy(idx, 0, neighborhood[i], 0, neighborSize);
      }
    }