Class VectorAngleDistanceScalingComparator

java.lang.Object
org.moeaframework.algorithm.single.VectorAngleDistanceScalingComparator
All Implemented Interfaces:
Comparator<Solution>, AggregateObjectiveComparator, DominanceComparator

public class VectorAngleDistanceScalingComparator extends Object implements AggregateObjectiveComparator
The vector angle distance scaling aggregate function. The distance between the origin and the objective vector is scaled by the cosine angle between the objective vector and a target vector.

References:

  1. E. J. Hughes. "Multiple Single Objective Pareto Sampling." 2003 Congress on Evolutionary Computation, pp. 2678-2684.
  • Constructor Details

    • VectorAngleDistanceScalingComparator

      public VectorAngleDistanceScalingComparator(double[] weights)
      Constructs a new instance of the vector angle distance scaling aggregate function with the given weights.
      Parameters:
      weights - the weight vector; must have a magnitude of 1.0
    • VectorAngleDistanceScalingComparator

      public VectorAngleDistanceScalingComparator(double[] weights, double q)
      Constructs a new instance of the vector angle distance scaling aggregate function with the given weights.
      Parameters:
      weights - the weight vector; must have a magnitude of 1.0
      q - factor for scaling the effects of the angle
  • Method Details

    • getAngleScalingFactor

      public double getAngleScalingFactor()
      Returns the factor for scaling the effects of the angle.
      Returns:
      the factor for scaling the effects of the angle
    • getWeights

      public double[] getWeights()
      Description copied from interface: AggregateObjectiveComparator
      Returns the weights used by this aggregate function.
      Specified by:
      getWeights in interface AggregateObjectiveComparator
      Returns:
      the weights
    • compare

      public int compare(Solution solution1, Solution solution2)
      Description copied from interface: DominanceComparator
      Compares the two solutions using a dominance relation, returning -1 if solution1 dominates solution2, 1 if solution2 dominates solution1, and 0 if the solutions are non-dominated.
      Specified by:
      compare in interface Comparator<Solution>
      Specified by:
      compare in interface DominanceComparator
      Parameters:
      solution1 - the first solution
      solution2 - the second solution
      Returns:
      -1 if solution1 dominates solution2, 1 if solution2 dominates solution1, and 0 if the solutions are non-dominated
    • calculateFitness

      public double calculateFitness(Solution solution)
      Description copied from interface: AggregateObjectiveComparator
      Calculates the aggregate (fitness) value of the solution using this aggregate function.
      Specified by:
      calculateFitness in interface AggregateObjectiveComparator
      Parameters:
      solution - the solution
      Returns:
      the aggregate value (smaller is better)
    • calculateFitness

      public static double calculateFitness(Solution solution, double[] weights, double q)
      Computes the vector angle distance scaling aggregate fitness of the solution. One weight should be given for each objective.
      Parameters:
      solution - the solution
      weights - the weight vector
      q - factor for scaling the effects of the angle
      Returns:
      the fitness, where smaller values are preferred