Class AdaptiveMetropolis
java.lang.Object
org.moeaframework.core.operator.real.MultiParentVariation
org.moeaframework.core.operator.real.AdaptiveMetropolis
- All Implemented Interfaces:
Configurable
,Variation
The adaptive metropolis (AM) operator. AM is a multiparent operator, allowing a user-defined number of parents
and offspring. AM produces normally-distributed clusters around each parent, where the shape of the distribution
is controlled by the covariance of the parents.
Internally, the Cholesky decomposition is used to update the resulting offspring distribution. Cholesky
decomposition requires that its input be positive definite. In order to guarantee this condition is satisfied,
all parents must be unique. In the event that the positive definite condition is not satisfied, no offspring are
produced and an empty array is returned by evolve(Solution[])
.
References:
- Vrugt, J.A., Robinson, B.A. and Hyman, J.M. "Self-Adaptive MultiMethod Search For Global Optimization in Real-Parameter Spaces." IEEE Transactions on Evolutionary Computation, pp. 1-17, 2009.
- Vrugt, J.A. and Robinson, B.A. "Improved Evolutionary Optimization from Genetically Adaptive Multimethod Search." Proceedings of the National Academy of Sciences of the United States of America, vol. 104, pp. 708 - 711, 2007.
- Gelman, A., Roberts, G.O. and Gilks, W.R. "Efficient Metropolis Jumping Rules." Bayesian Statistics, vol. 5, pp. 599-607, 1996.
-
Field Summary
Fields inherited from class org.moeaframework.core.operator.real.MultiParentVariation
numberOfOffspring, numberOfParents
-
Constructor Summary
ConstructorDescriptionConstructs an adaptive metropolis operator with default settings, taking 10 parents and producing 2 offspring.AdaptiveMetropolis
(int numberOfParents, int numberOfOffspring, double jumpRateCoefficient) Constructs an adaptive metropolis operator. -
Method Summary
Modifier and TypeMethodDescriptionSolution[]
Evolves one or more parent solutions (specified bygetArity
) and produces one or more child solutions.double
Returns the jump rate coefficient value.getName()
Returns the name of this variation operator.void
setJumpRateCoefficient
(double jumpRateCoefficient) Sets the jump rate coefficient, controlling the standard deviation of the covariance matrix.Methods inherited from class org.moeaframework.core.operator.real.MultiParentVariation
getArity, getNumberOfOffspring, getNumberOfParents, setNumberOfOffspring, setNumberOfParents
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.moeaframework.core.configuration.Configurable
applyConfiguration, getConfiguration
-
Constructor Details
-
AdaptiveMetropolis
public AdaptiveMetropolis()Constructs an adaptive metropolis operator with default settings, taking 10 parents and producing 2 offspring. The recommended value of2.4
is used for the jump rate coefficient. -
AdaptiveMetropolis
public AdaptiveMetropolis(int numberOfParents, int numberOfOffspring, double jumpRateCoefficient) Constructs an adaptive metropolis operator.- Parameters:
numberOfParents
- the number of parents required by this operatornumberOfOffspring
- the number of parents produced by this operatorjumpRateCoefficient
- the jump raote coefficient, controlling the standard deviation of the covariance matrix
-
-
Method Details
-
getName
Description copied from interface:Variation
Returns the name of this variation operator. This name should also be used as the prefix for any parameters. As such, the name should only contain alphanumeric characters, avoid using whitespace and other symbols.- Returns:
- the name of this variation operator
-
getJumpRateCoefficient
public double getJumpRateCoefficient()Returns the jump rate coefficient value.- Returns:
- the jump rate coefficient value
-
setJumpRateCoefficient
public void setJumpRateCoefficient(double jumpRateCoefficient) Sets the jump rate coefficient, controlling the standard deviation of the covariance matrix. The actual jump rate is calculated asMath.pow(jumpRateCoefficient / Math.sqrt(n), 2.0)
, wheren
is the number of decision variables. The recommended value is2.4
.- Parameters:
jumpRateCoefficient
- the jump rate coefficient value
-
evolve
Description copied from interface:Variation
Evolves one or more parent solutions (specified bygetArity
) and produces one or more child solutions. By contract, the parents must not be modified. The copy constructor should be used to create copies of the parents with these copies subsequently modified.- Parameters:
parents
- the array of parent solutions- Returns:
- an array of child solutions
-