Class DefaultNormalizer

java.lang.Object
org.moeaframework.core.indicator.DefaultNormalizer

public class DefaultNormalizer extends Object
Class for constructing normalizers, allowing users to override defaults for specific problems. The search order is:
  1. A normalizer configured by the user by calling override(org.moeaframework.core.Problem, double[], double[])
  2. A normalizer configured by the user in the properties file "moeaframework.properties"
  3. The default normalizer computed from the provided reference set
If using the properties file, set the following two values:
   org.moeaframework.problem.NAME.normalization.minimum = 0,0,0
   org.moeaframework.problem.NAME.normalization.maximum = 1,1,1
 
Normalization can also be disabled on specific problems by setting:
   org.moeaframework.problem.NAME.normalization.disabled = true
 
In previous versions, hypervolume supported configuring an ideal and and reference point, which are analogous to the new minimum and maximum settings. These older settings are still supported. Additionally, hypervolume can also be configured using either a problem-specific or a global delta:
   org.moeaframework.problem.NAME.normalization.delta = 0.2
   org.moeaframework.core.indicator.hypervolume.delta = 0.2
 
  • Method Details

    • getInstance

      public static DefaultNormalizer getInstance()
      Returns the default normalizer used when computing performance indicators.
      Returns:
      the default normalizer
    • setInstance

      public static void setInstance(DefaultNormalizer instance)
      Sets the default normalizer used when computing performance indicators.
      Parameters:
      instance - the default normalizer
    • clearOverrides

      public void clearOverrides()
      Removes any overrides.
    • getNormalizer

      public Normalizer getNormalizer(Problem problem, NondominatedPopulation referenceSet)
      Returns the normalizer configured for the given problem and reference set.
      Parameters:
      problem - the problem
      referenceSet - the reference set
      Returns:
      the normalizer
    • getHypervolumeNormalizer

      public Normalizer getHypervolumeNormalizer(Problem problem, NondominatedPopulation referenceSet)
      Returns the normalizer used for hypervolume calculations for the given problem and reference set.
      Parameters:
      problem - the problem
      referenceSet - the reference set
      Returns:
      the hypervolume normalizer
    • override

      public void override(Problem problem, double[] minimum, double[] maximum)
      Provides specific minimum and maximum bounds used for normalizing the given problem.
      Parameters:
      problem - the problem
      minimum - the minimum bounds, the last value will be repeated if the problem has more objectives
      maximum - the maximum bounds, the last value will be repeated if the problem has more objectives
    • override

      public void override(String problemName, double[] minimum, double[] maximum)
      Provides specific minimum and maximum bounds used for normalizing the given problem.
      Parameters:
      problemName - the problem name
      minimum - the minimum bounds, the last value will be repeated if the problem has more objectives
      maximum - the maximum bounds, the last value will be repeated if the problem has more objectives
    • disableNormalization

      public void disableNormalization(Problem problem)
      Disables normalization for the given problem. The given name must match the value of Problem.getName().
      Parameters:
      problem - the problem
    • disableNormalization

      public void disableNormalization(String problemName)
      Disables normalization for the given problem. The given name must match the value of Problem.getName().
      Parameters:
      problemName - the problem name