Class UniformDesignGenerator

java.lang.Object
org.moeaframework.util.weights.UniformDesignGenerator
All Implemented Interfaces:
WeightGenerator

public class UniformDesignGenerator extends Object implements WeightGenerator
Generates weights according to a uniform design of mixtures using the Hammersley low-discrepancy sequence generator. Uniform design has several advantages over NormalBoundaryIntersectionGenerator, including avoiding generating many weights on the boundary and avoiding the combinatorial growth of weights as the number of objectives increases.

Tan et al. first proposed the use of uniform design to generate weights for an MOEA, but their method becomes computationally prohibitive as the number of objectives or number of points increases. The use of the more efficient Hammersley method was proposed by Berenguer and Coello Coello (2015).

References:

  1. Tan Y., Y. Jiao, H. Li, and X. Wang (2013). "MOEA/D + uniform design: A new version of MOEA/D for optimization problems with many objectives." Computers & Operations Research, 40, 1648-1660.
  2. Berenguer, J.A.M. and C.A. Coello Coello (2015). "Evolutionary Many-Objective Optimization Based on Kuhn-Munkres' Algorithm." Evolutionary Multi-Criterion Optimization: 8th International Conference, pp. 3-17.
  • Constructor Details

    • UniformDesignGenerator

      public UniformDesignGenerator(int numberOfObjectives, int numberOfPoints)
      Constructs a new weight generator based on uniform design.
      Parameters:
      numberOfObjectives - the number of objectives
      numberOfPoints - the number of weights to generate
  • Method Details

    • size

      public int size()
      Description copied from interface: WeightGenerator
      Returns the number of weights that will be generated.
      Specified by:
      size in interface WeightGenerator
      Returns:
      the number of weights that will be generated
    • generateFirstKPrimes

      protected int[] generateFirstKPrimes(int k)
      Returns the first k prime numbers.
      Parameters:
      k - the number of prime numbers to return
      Returns:
      the first k prime numbers
    • generate

      public List<double[]> generate()
      Description copied from interface: WeightGenerator
      Returns the generated weights.
      Specified by:
      generate in interface WeightGenerator
      Returns:
      the generated weights