Beispiel #1
0
  public AbstractUtilityFunctionsSet<S> createUtilityFunction(
      List<Double> referencePoint, double[][] weights) {
    weights = WeightVector.invertWeights(weights, true);
    ASFWASFGA<S> aux = new ASFWASFGA<>(weights, referencePoint);

    return aux;
  }
Beispiel #2
0
  public GWASFGA(
      Problem<S> problem,
      int populationSize,
      int maxIterations,
      CrossoverOperator<S> crossoverOperator,
      MutationOperator<S> mutationOperator,
      SelectionOperator<List<S>, S> selectionOperator,
      SolutionListEvaluator<S> evaluator) {
    super(
        problem,
        populationSize,
        maxIterations,
        crossoverOperator,
        mutationOperator,
        selectionOperator,
        evaluator,
        null);
    setMaxPopulationSize(populationSize);

    double[][] weights = WeightVector.initUniformWeights2D(0.005, getMaxPopulationSize());

    int halfVectorSize = weights.length / 2;
    int evenVectorsSize = (weights.length % 2 == 0) ? halfVectorSize : (halfVectorSize + 1);
    int oddVectorsSize = halfVectorSize;

    double[][] evenVectors = new double[evenVectorsSize][getProblem().getNumberOfObjectives()];
    double[][] oddVectors = new double[oddVectorsSize][getProblem().getNumberOfObjectives()];

    int index = 0;
    for (int i = 0; i < weights.length; i = i + 2) evenVectors[index++] = weights[i];

    index = 0;
    for (int i = 1; i < weights.length; i = i + 2) oddVectors[index++] = weights[i];

    this.achievementScalarizingNadir = createUtilityFunction(this.getNadirPoint(), evenVectors);
    this.achievementScalarizingUtopia = createUtilityFunction(this.getReferencePoint(), oddVectors);
  }