public void adapt(){
  double[] zmin=new double[numberOfObjectives];
  double[] zmax=new double[numberOfObjectives];
  Arrays.fill(zmin,Double.POSITIVE_INFINITY);
  Arrays.fill(zmax,Double.NEGATIVE_INFINITY);
  for (  Solution solution : this) {
    for (int i=0; i < numberOfObjectives; i++) {
      zmin[i]=Math.min(zmin[i],solution.getObjective(i));
      zmax[i]=Math.max(zmax[i],solution.getObjective(i));
    }
  }
  weights.clear();
  for (  double[] weight : originalWeights) {
    double[] newWeight=weight.clone();
    for (int i=0; i < numberOfObjectives; i++) {
      newWeight[i]*=Math.max(0.01,zmax[i] - zmin[i]);
    }
    weights.add(Vector.normalize(newWeight));
  }
  minAngles=new double[weights.size()];
  for (int i=0; i < weights.size(); i++) {
    minAngles[i]=smallestAngleBetweenWeights(i);
  }
}

public void adapt ( ) { double [ ] zmin = new double [ numberOfObjectives ] ; double [ ] zmax = new double [ numberOfObjectives ] ; Arrays . fill ( zmin , Double . POSITIVE_INFINITY ) ; Arrays . fill ( zmax , Double . NEGATIVE_INFINITY ) ; for ( Solution solution : this ) { for ( int i = 0 ; i < numberOfObjectives ; i ++ ) { zmin [ i ] = Math . min ( zmin [ i ] , solution . getObjective ( i ) ) ; zmax [ i ] = Math . max ( zmax [ i ] , solution . getObjective ( i ) ) ; } } weights . clear ( ) ; for ( double [ ] weight : originalWeights ) { double [ ] newWeight = weight . clone ( ) ; for ( int i = 0 ; i < numberOfObjectives ; i ++ ) { newWeight [ i ] *= Math . max ( 0.01 , zmax [ i ] - zmin [ i ] ) ; } weights . add ( Vector . normalize ( newWeight ) ) ; } minAngles = new double [ weights . size ( ) ] ; for ( int i = 0 ; i < weights . size ( ) ; i ++ ) { minAngles [ i ] = smallestAngleBetweenWeights ( i ) ; } }
normalize the reference vectors .
