# SuanShu, a Java numerical and statistical library

com.numericalmethod.suanshu.optimization.multivariate.unconstrained.c2.conjugatedirection

## Class PowellMinimizer

• All Implemented Interfaces:
Minimizer<C2OptimProblem,IterativeSolution<Vector>>, IterativeC2Minimizer, IterativeMinimizer<C2OptimProblem>, MultivariateMinimizer<C2OptimProblem,IterativeSolution<Vector>>, Optimizer<C2OptimProblem,IterativeSolution<Vector>>

public class PowellMinimizer
extends SteepestDescentMinimizer
Powell's algorithm, starting from an initial point, performs a series of line searches in one iteration. The line search directions, except the last one, are all linearly independent. The major advantage of Powell’s algorithm is that the Hessian needs not be supplied, stored or manipulated. However, this algorithm has a few drawbacks and is superseded by Zangwill’s algorithm. For example, in an iteration, linear dependence can sometimes arise, which may fail to find complete the set of linearly independent directions that span En, even in the case of a convex quadratic problem.
"Andreas Antoniou, Wu-Sheng Lu, "Theorem 6.5, Algorithm 6.4," Practical Optimization: Algorithms and Engineering Applications."
• ### Nested Class Summary

Nested Classes
Modifier and Type Class and Description
protected class  PowellMinimizer.PowellImpl
an implementation of Powell's algorithm
• ### Nested classes/interfaces inherited from class com.numericalmethod.suanshu.optimization.multivariate.unconstrained.c2.steepestdescent.SteepestDescentMinimizer

SteepestDescentMinimizer.SteepestDescentImpl

• ### Fields inherited from class com.numericalmethod.suanshu.optimization.multivariate.unconstrained.c2.steepestdescent.SteepestDescentMinimizer

epsilon, maxIterations
• ### Constructor Summary

Constructors
Constructor and Description
PowellMinimizer(double epsilon, int maxIterations)
Construct a multivariate minimizer using the Powell method.
• ### Method Summary

All Methods
Modifier and Type Method and Description
IterativeSolution<Vector> solve(C2OptimProblem problem)
Solve a minimization problem with a C2 objective function.
• ### Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
• ### Constructor Detail

• #### PowellMinimizer

public PowellMinimizer(double epsilon,
int maxIterations)
Construct a multivariate minimizer using the Powell method.
Parameters:
epsilon - a precision parameter: when a number |x| ≤ ε, it is considered 0
maxIterations - the maximum number of iterations
• ### Method Detail

• #### solve

public IterativeSolution<Vector> solve(C2OptimProblem problem)
throws Exception
Description copied from class: SteepestDescentMinimizer
Solve a minimization problem with a C2 objective function.
Specified by:
solve in interface Optimizer<C2OptimProblem,IterativeSolution<Vector>>
Specified by:
solve in class SteepestDescentMinimizer
Parameters:
problem - a minimization problem with a C2 objective function
Returns:
a minimizer
Throws:
Exception - when there is an error solving the problem