Class SteepestDescentMinimizer
- java.lang.Object
-
- dev.nm.solver.multivariate.unconstrained.c2.steepestdescent.SteepestDescentMinimizer
-
- All Implemented Interfaces:
Minimizer<C2OptimProblem,IterativeSolution<Vector>>
,IterativeC2Minimizer
,IterativeMinimizer<C2OptimProblem>
,MultivariateMinimizer<C2OptimProblem,IterativeSolution<Vector>>
,Optimizer<C2OptimProblem,IterativeSolution<Vector>>
- Direct Known Subclasses:
ConjugateGradientMinimizer
,FirstOrderMinimizer
,GaussNewtonMinimizer.MySteepestDescent
,NewtonRaphsonMinimizer
,PowellMinimizer
,QuasiNewtonMinimizer
,ZangwillMinimizer
public abstract class SteepestDescentMinimizer extends Object implements IterativeC2Minimizer
A steepest descent algorithm finds the minimum by moving along the negative of the steepest gradient direction. In each iteration, we compute a direction, e.g., dk = -g as in the first order approximation. We search along this direction for an improved minimizer by analytically computing αk that minimizes f(xk + αk * dk). The minimizer xk+1 = xk + αk * dk is updated. This procedure is repeated until the increment |αk * dk| becomes sufficiently small, hence convergence.- See Also:
- "Andreas Antoniou and Wu-Sheng Lu, "Algorithms 5.2, 5.3, 5.5," Practical Optimization: Algorithms and Engineering Applications."
- Wikipedia: Gradient descent
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
SteepestDescentMinimizer.SteepestDescentImpl
This is an implementation of the steepest descent method.
-
Field Summary
Fields Modifier and Type Field Description protected double
epsilon
a precision parameter: when a number |x| ≤ ε, it is considered 0protected double
maxIterations
the maximum number of iterations
-
Constructor Summary
Constructors Constructor Description SteepestDescentMinimizer(double epsilon, int maxIterations)
Construct a multivariate minimizer using a steepest descent method.SteepestDescentMinimizer(LineSearch linesearch, double epsilon, int maxIterations)
Construct a multivariate minimizer using a steepest descent method.
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description abstract IterativeSolution<Vector>
solve(C2OptimProblem problem)
Solve a minimization problem with a C2 objective function.
-
-
-
Constructor Detail
-
SteepestDescentMinimizer
public SteepestDescentMinimizer(LineSearch linesearch, double epsilon, int maxIterations)
Construct a multivariate minimizer using a steepest descent method.- Parameters:
linesearch
- the line search method used in each iterationepsilon
- a precision parameter: when a number |x| ≤ ε, it is considered 0maxIterations
- the maximum number of iterations
-
SteepestDescentMinimizer
public SteepestDescentMinimizer(double epsilon, int maxIterations)
Construct a multivariate minimizer using a steepest descent method.- Parameters:
epsilon
- a precision parameter: when a number |x| ≤ ε, it is considered 0maxIterations
- the maximum number of iterations
-
-
Method Detail
-
solve
public abstract IterativeSolution<Vector> solve(C2OptimProblem problem) throws Exception
Solve a minimization problem with a C2 objective function.- Specified by:
solve
in interfaceOptimizer<C2OptimProblem,IterativeSolution<Vector>>
- Parameters:
problem
- a minimization problem with a C2 objective function- Returns:
- a minimizer
- Throws:
Exception
- when there is an error solving the problem
-
-