MOEA Framework 2.12
API Specification

org.moeaframework.core.indicator
Class Hypervolume

java.lang.Object
  extended by org.moeaframework.core.indicator.NormalizedIndicator
      extended by org.moeaframework.core.indicator.Hypervolume
All Implemented Interfaces:
Indicator

public class Hypervolume
extends NormalizedIndicator

Hypervolume indicator. Represents the volume of objective space dominated by solutions in the approximation set.

Due to the computational burden of computing the hypervolume indicator and the various estimation algorithms available, the ability to redirect the hypervolume calculation to an external third-party executable is provided. See invokeNativeHypervolume(org.moeaframework.core.Problem, java.util.List, boolean) for details.


Field Summary
 
Fields inherited from class org.moeaframework.core.indicator.NormalizedIndicator
problem
 
Constructor Summary
Hypervolume(Problem problem, double[] minimum, double[] maximum)
          Constructs a hypervolume evaluator for the specified problem using the given minimum and maximum bounds.
Hypervolume(Problem problem, NondominatedPopulation referenceSet)
          Constructs a hypervolume evaluator for the specified problem and reference set.
Hypervolume(Problem problem, NondominatedPopulation referenceSet, double[] referencePoint)
          Constructs a hypervolume evaluator for the specified problem using the given reference set and reference point.
 
Method Summary
static double calculateHypervolume(List<Solution> population, int numberOfSolutions, int numberOfObjectives)
          The internal, unnormalized hypervolume calculation.
 double evaluate(NondominatedPopulation approximationSet)
          Returns the value of this unary quality indicator given the specified non-dominated population.
protected static void invert(Problem problem, Solution solution)
          Inverts the objective values since this hypervolume algorithm operates on maximization problems.
protected static double invokeNativeHypervolume(Problem problem, List<Solution> solutions, boolean isInverted)
          Since hypervolume calculation is expensive, this method provides the ability to execute a native process to calculate hypervolume.
 
Methods inherited from class org.moeaframework.core.indicator.NormalizedIndicator
getNormalizedReferenceSet, normalize
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Hypervolume

public Hypervolume(Problem problem,
                   NondominatedPopulation referenceSet)
Constructs a hypervolume evaluator for the specified problem and reference set.

Parameters:
problem - the problem
referenceSet - the reference set

Hypervolume

public Hypervolume(Problem problem,
                   NondominatedPopulation referenceSet,
                   double[] referencePoint)
Constructs a hypervolume evaluator for the specified problem using the given reference set and reference point.

Parameters:
problem - the problem
referenceSet - the reference set
referencePoint - the reference point

Hypervolume

public Hypervolume(Problem problem,
                   double[] minimum,
                   double[] maximum)
Constructs a hypervolume evaluator for the specified problem using the given minimum and maximum bounds.

Parameters:
problem - the problem
minimum - the minimum bounds of the set
maximum - the maximum bounds of the set
Method Detail

invert

protected static void invert(Problem problem,
                             Solution solution)
Inverts the objective values since this hypervolume algorithm operates on maximization problems.

Parameters:
problem - the problem
solution - the solution to be inverted

calculateHypervolume

public static double calculateHypervolume(List<Solution> population,
                                          int numberOfSolutions,
                                          int numberOfObjectives)
The internal, unnormalized hypervolume calculation. While this method is public, we do not encourage its use since incorrect arguments can cause unexpected behavior. Instead, use the Hypervolume(Problem, NondominatedPopulation) constructor to create a normalizing version of the hypervolume calculation.

Parameters:
population - the population
numberOfSolutions - the number of solutions
numberOfObjectives - the number of objectives
Returns:
the hypervolume metric

evaluate

public double evaluate(NondominatedPopulation approximationSet)
Description copied from interface: Indicator
Returns the value of this unary quality indicator given the specified non-dominated population.

Parameters:
approximationSet - the non-dominated population to be evaluated
Returns:
the value of this quality indicator given the specified non-dominated population

invokeNativeHypervolume

protected static double invokeNativeHypervolume(Problem problem,
                                                List<Solution> solutions,
                                                boolean isInverted)
Since hypervolume calculation is expensive, this method provides the ability to execute a native process to calculate hypervolume. If provided, the org.moeaframework.core.indicator.native.hypervolume system property defines the command for invoking the native hypervolume executable. The command is a MessageFormat pattern with the following arguments available for use:

Note: To avoid unnecessarily writing files, the command is first checked if the above arguments are specified. Use the exact argument string as shown above (e.g., {3}) in the command.

Parameters:
problem - the problem
solutions - the normalized and possibly inverted solutions
isInverted - true if the solutions are inverted; false otherwise
Returns:
the hypervolume value

MOEA Framework 2.12
API Specification

Copyright 2009-2016 MOEA Framework. All rights reserved.
Licensed under the GNU Lesser General Public License.
Return to the MOEA Framework homepage. Visit us on Github!