code: public static <S extends Solution<?>> void nash(List<S> solutionsList, double[] nadirValues) {
      for (S solution : solutionsList) {
        double nash = nadirValues[0] - solution.getObjective(0);
        for (int i = 1; i < nadirValues.length; i++) {
          nash *= (nadirValues[i] - solution.getObjective(i));
        }
        // The Nash bargaining solution is originally maximized. To conform
        // with minimization the bargaining value is negated.
        setScalarizationValue(solution, -nash);
      }
    }
docs: Scalarization values based on the Nash bargaining solution.
  
  @param solutionsList A list of solutions.
  @param nadirValues   The disagreement point.