public class NelderMeadMinimizer extends Object implements IterativeC2Minimizer
Call solve(dev.nm.solver.problem.C2OptimProblem) to bind a
problem, then search(initialPoint) to execute the search. For an
n-dimensional objective, an explicit simplex has n + 1 vertices; otherwise
the implementation builds a default simplex around the first supplied point.
A search needs at least one point. Use a separate solution object for each
concurrent search, and do not modify simplex storage during a search.
This method uses objective values without evaluating supplied derivatives. It finds a local candidate, with no global-optimum guarantee. The epsilon stopping test compares successive best objective values after the minimum iteration count; it is not a bound on coordinate error.
import dev.nm.algebra.linear.vector.doubles.Vector;
import dev.nm.algebra.linear.vector.doubles.dense.DenseVector;
import dev.nm.analysis.function.rn2r1.AbstractRealScalarFunction;
import dev.nm.solver.problem.C2OptimProblemImpl;
import dev.nm.solver.multivariate.unconstrained.c2.NelderMeadMinimizer;
AbstractRealScalarFunction f = new AbstractRealScalarFunction(2) {
public Double evaluate(Vector x) {
double a = x.get(1) - 1.0;
double b = x.get(2) + 2.0;
return a * a + b * b;
}
};
NelderMeadMinimizer.Solution solution = new NelderMeadMinimizer(1e-12, 1000)
.solve(new C2OptimProblemImpl(f));
Vector best = solution.search(new DenseVector(4.0, 3.0));
assert f.evaluate(best) < 1e-8;
assert Math.abs(best.get(1) - 1.0) < 1e-3;
assert Math.abs(best.get(2) + 2.0) < 1e-3;
| Modifier and Type | Class and Description |
|---|---|
class |
NelderMeadMinimizer.Solution
This is the solution to an optimization problem by the Nelder-Mead method.
|
| Constructor and Description |
|---|
NelderMeadMinimizer(double alpha,
double gamma,
double rho,
double sigma,
double epsilon,
int maxIterations)
Construct a Nelder-Mead multivariate minimizer.
|
NelderMeadMinimizer(double epsilon,
int maxIterations)
Construct a Nelder-Mead multivariate minimizer.
|
| Modifier and Type | Method and Description |
|---|---|
NelderMeadMinimizer.Solution |
solve(C2OptimProblem problem)
Solve an optimization problem, e.g.,
OptimProblem. |
public NelderMeadMinimizer(double alpha,
double gamma,
double rho,
double sigma,
double epsilon,
int maxIterations)
alpha - the reflection coefficientgamma - the shrink/reduction coefficientrho - the contraction coefficientsigma - the shrink/reduction coefficientepsilon - a precision parameter: when a number |x| ≤ ε, it is
considered 0maxIterations - the maximum number of iterationspublic NelderMeadMinimizer(double epsilon,
int maxIterations)
epsilon - a precision parameter: when a number |x| ≤ ε, it is
considered 0maxIterations - the maximum number of iterationspublic NelderMeadMinimizer.Solution solve(C2OptimProblem problem)
OptimizerOptimProblem.solve in interface Optimizer<C2OptimProblem,IterativeSolution<Vector>>problem - an optimization problemCopyright © 2010-2026 NM Group. All Rights Reserved.