Package org.moeaframework.util.weights
Class UniformDesignGenerator
java.lang.Object
org.moeaframework.util.weights.UniformDesignGenerator
- All Implemented Interfaces:
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:
- 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.
- 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 Summary
ConstructorDescriptionUniformDesignGenerator
(int numberOfObjectives, int numberOfPoints) Constructs a new weight generator based on uniform design. -
Method Summary
Modifier and TypeMethodDescriptionList<double[]>
generate()
Returns the generated weights.protected int[]
generateFirstKPrimes
(int k) Returns the first k prime numbers.int
size()
Returns the number of weights that will be generated.
-
Constructor Details
-
UniformDesignGenerator
public UniformDesignGenerator(int numberOfObjectives, int numberOfPoints) Constructs a new weight generator based on uniform design.- Parameters:
numberOfObjectives
- the number of objectivesnumberOfPoints
- 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 interfaceWeightGenerator
- 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
Description copied from interface:WeightGenerator
Returns the generated weights.- Specified by:
generate
in interfaceWeightGenerator
- Returns:
- the generated weights
-