org.apache.mahout.ep.package-info Maven / Gradle / Ivy
Show all versions of mahout-mr Show documentation
/**
* Provides basic evolutionary optimization using recorded-step
* mutation.
*
* With this style of optimization, we can optimize a function {@code f: R^n -> R} by stochastic
* hill-climbing with some of the benefits of conjugate gradient style history encoded in the mutation function.
* This mutation function will adapt to allow weakly directed search rather than using the somewhat more
* conventional symmetric Gaussian.
*
* With recorded-step mutation, the meta-mutation parameters are all auto-encoded in the current state of each point.
* This avoids the classic problem of having more mutation rate parameters than are in the original state and then
* requiring even more parameters to describe the meta-mutation rate. Instead, we store the previous point and one
* omni-directional mutation component. Mutation is performed by first mutating along the line formed by the previous
* and current points and then adding a scaled symmetric Gaussian. The magnitude of the omni-directional mutation is
* then mutated using itself as a scale.
*
* Because it is convenient to not restrict the parameter space, this package also provides convenient parameter
* mapping methods. These mapping methods map the set of reals to a finite open interval (a,b) in such a way that
* {@code lim_{x->-\inf} f(x) = a} and {@code lim_{x->\inf} f(x) = b}. The linear mapping is defined so that
* {@code f(0) = (a+b)/2} and the exponential mapping requires that a and b are both positive and has
* {@code f(0) = sqrt(ab)}. The linear mapping is useful for values that must stay roughly within a range but
* which are roughly uniform within the center of that range. The exponential
* mapping is useful for values that must stay within a range but whose distribution is roughly exponential near
* geometric mean of the end-points. An identity mapping is also supplied.
*/
package org.apache.mahout.ep;