Class BFGSMinimizer
- java.lang.Object
-
- dev.nm.solver.multivariate.unconstrained.c2.steepestdescent.SteepestDescentMinimizer
-
- dev.nm.solver.multivariate.unconstrained.c2.quasinewton.QuasiNewtonMinimizer
-
- dev.nm.solver.multivariate.unconstrained.c2.quasinewton.BFGSMinimizer
-
- All Implemented Interfaces:
Minimizer<C2OptimProblem,IterativeSolution<Vector>>
,IterativeC2Minimizer
,IterativeMinimizer<C2OptimProblem>
,MultivariateMinimizer<C2OptimProblem,IterativeSolution<Vector>>
,Optimizer<C2OptimProblem,IterativeSolution<Vector>>
public class BFGSMinimizer extends QuasiNewtonMinimizer
The Broyden-Fletcher-Goldfarb-Shanno method is a quasi-Newton method to solve unconstrained nonlinear optimization problems. The Hessian matrix of the objective function needs not to be computed at any stage. The Hessian is updated by analyzing successive gradient vectors instead.- See Also:
- "Andreas Antoniou, Wu-Sheng Lu, "Eq. 7.57, Section 7.6," Practical Optimization: Algorithms and Engineering Applications."
- Wikipedia: BFGS method
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
BFGSMinimizer.BFGSImpl
an implementation of the BFGS algorithm-
Nested classes/interfaces inherited from class dev.nm.solver.multivariate.unconstrained.c2.quasinewton.QuasiNewtonMinimizer
QuasiNewtonMinimizer.QuasiNewtonImpl
-
Nested classes/interfaces inherited from class dev.nm.solver.multivariate.unconstrained.c2.steepestdescent.SteepestDescentMinimizer
SteepestDescentMinimizer.SteepestDescentImpl
-
-
Field Summary
-
Fields inherited from class dev.nm.solver.multivariate.unconstrained.c2.steepestdescent.SteepestDescentMinimizer
epsilon, maxIterations
-
-
Constructor Summary
Constructors Constructor Description BFGSMinimizer(boolean isFletcherSwitch, double epsilon, int maxIterations)
Construct a multivariate minimizer using the BFGS method.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static Matrix
dampedBFGSHessianUpdate(Matrix H, Vector gamma, Vector delta)
Damped BFGS Hessian update.IterativeSolution<Vector>
solve(C2OptimProblem problem)
Solve a minimization problem with a C2 objective function.static Matrix
updateHessianInverse1(Matrix S, Matrix gamma, Matrix delta)
Sk+1 = Sk + (1 + γ'Sγ/γ'δ)/γ'δ * δδ' -(δγ'S + Sγδ') / γ'δ, where S = H-1static Matrix
updateHessianInverse2(Matrix S, Matrix gamma, Matrix delta)
P + γγ' / γ'δ - P %*% γγ' %*% P / γ'Pδ, where P = S-1 is the Hessian.
-
-
-
Constructor Detail
-
BFGSMinimizer
public BFGSMinimizer(boolean isFletcherSwitch, double epsilon, int maxIterations)
Construct a multivariate minimizer using the BFGS method.- Parameters:
epsilon
- a precision parameter: when a number |x| ≤ ε, it is considered 0maxIterations
- the maximum number of iterationsisFletcherSwitch
- indicate whether to use the Fletcher switch
-
-
Method Detail
-
updateHessianInverse1
public static Matrix updateHessianInverse1(Matrix S, Matrix gamma, Matrix delta)
Sk+1 = Sk + (1 + γ'Sγ/γ'δ)/γ'δ * δδ' -(δγ'S + Sγδ') / γ'δ, where S = H-1- Parameters:
S
- the inverse of a Hessiangamma
- γdelta
- δ- Returns:
- an updated Hessian matrix
-
updateHessianInverse2
public static Matrix updateHessianInverse2(Matrix S, Matrix gamma, Matrix delta)
P + γγ' / γ'δ - P %*% γγ' %*% P / γ'Pδ, where P = S-1 is the Hessian.- Parameters:
S
- the inverse of a Hessiangamma
- γdelta
- δ- Returns:
- an updated Hessian matrix
-
dampedBFGSHessianUpdate
public static Matrix dampedBFGSHessianUpdate(Matrix H, Vector gamma, Vector delta)
Damped BFGS Hessian update.- Parameters:
H
- a Hessian matrixgamma
- γdelta
- δ- Returns:
- an updated Hessian matrix
-
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 interfaceOptimizer<C2OptimProblem,IterativeSolution<Vector>>
- Specified by:
solve
in classSteepestDescentMinimizer
- Parameters:
problem
- a minimization problem with a C2 objective function- Returns:
- a minimizer
- Throws:
Exception
- when there is an error solving the problem
-
-