org.ddogleg.optimization.impl
Class EquationsBFGS
- java.lang.Object
-
- org.ddogleg.optimization.impl.EquationsBFGS
-
public class EquationsBFGS extends java.lang.ObjectEquations for updating the approximate Hessian matrix using BFGS equations.
Forward:
B(k+1) = B(k) + [B(k)*s*s'*B(k)]/[s'*B*s] + y*y'/[y'*s]Inverse:
H(k+1) = (I-p*s*y')*H(k)*(I-p*y*s') + p*s*s'
- B = symmetric positive definite forward n by n matrix.
- H = symmetric positive definite inverse n by n matrix.
- s = x(k+1)-x(k) vector change in state.
- y = x'(k+1)-x'(k) vector change in gradient.
- p = 1/(y'*s)
>0
-
-
Constructor Summary
Constructors Constructor and Description EquationsBFGS()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method and Description static voidconjugateUpdateC(org.ejml.data.DenseMatrix64F C, org.ejml.data.DenseMatrix64F d, org.ejml.data.DenseMatrix64F y, double step, org.ejml.data.DenseMatrix64F tempV0, org.ejml.data.DenseMatrix64F tempV1)[1] D.static voidconjugateUpdateD(org.ejml.data.DenseMatrix64F C, org.ejml.data.DenseMatrix64F d, org.ejml.data.DenseMatrix64F y, double step, org.ejml.data.DenseMatrix64F tempV0)[1] D.static voidinverseUpdate(org.ejml.data.DenseMatrix64F H, org.ejml.data.DenseMatrix64F s, org.ejml.data.DenseMatrix64F y, org.ejml.data.DenseMatrix64F tempV0, org.ejml.data.DenseMatrix64F tempV1)Inverse update equation that orders the multiplications to minimize the number of operations.static voidnaiveInverseUpdate(org.ejml.data.DenseMatrix64F H, org.ejml.data.DenseMatrix64F s, org.ejml.data.DenseMatrix64F y)Naive but easy to visually verify implementation of the inverse BFGS update.
-
-
-
Method Detail
-
naiveInverseUpdate
public static void naiveInverseUpdate(org.ejml.data.DenseMatrix64F H, org.ejml.data.DenseMatrix64F s, org.ejml.data.DenseMatrix64F y)Naive but easy to visually verify implementation of the inverse BFGS update. Primarily for testing purposes.- Parameters:
H- inverse matrix being updateds- change in statey- change in gradient
-
inverseUpdate
public static void inverseUpdate(org.ejml.data.DenseMatrix64F H, org.ejml.data.DenseMatrix64F s, org.ejml.data.DenseMatrix64F y, org.ejml.data.DenseMatrix64F tempV0, org.ejml.data.DenseMatrix64F tempV1)Inverse update equation that orders the multiplications to minimize the number of operations.- Parameters:
H- symmetric inverse matrix being updateds- change in statey- change in gradienttempV0- Storage vector of length NtempV1- Storage vector of length N
-
conjugateUpdateD
public static void conjugateUpdateD(org.ejml.data.DenseMatrix64F C, org.ejml.data.DenseMatrix64F d, org.ejml.data.DenseMatrix64F y, double step, org.ejml.data.DenseMatrix64F tempV0)[1] D. Byatt and I. D. Coope and C. J. Price, "Effect of limited precision on the BFGS quasi-Newton algorithm" Proc. of 11th Computational Techniques and Applications Conference CTAC-2003
- Parameters:
C-d-y-tempV0-
-
conjugateUpdateC
public static void conjugateUpdateC(org.ejml.data.DenseMatrix64F C, org.ejml.data.DenseMatrix64F d, org.ejml.data.DenseMatrix64F y, double step, org.ejml.data.DenseMatrix64F tempV0, org.ejml.data.DenseMatrix64F tempV1)[1] D. Byatt and I. D. Coope and C. J. Price, "Effect of limited precision on the BFGS quasi-Newton algorithm" Proc. of 11th Computational Techniques and Applications Conference CTAC-2003
- Parameters:
C-d-y-tempV0-
-
-
DataMelt 3.0 © DataMelt by jWork.ORG