Class EquationsBFGS
java.lang.Object
org.ddogleg.optimization.quasinewton.EquationsBFGS
Equations 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
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
conjugateUpdateC
(DMatrixRMaj C, DMatrixRMaj d, DMatrixRMaj y, double step, DMatrixRMaj tempV0, DMatrixRMaj tempV1) [1] D.static void
conjugateUpdateD
(DMatrixRMaj C, DMatrixRMaj d, DMatrixRMaj y, double step, DMatrixRMaj tempV0) [1] D.static void
inverseUpdate
(DMatrixRMaj H, DMatrixRMaj s, DMatrixRMaj y, DMatrixRMaj tempV0, DMatrixRMaj tempV1) BFGS inverse hessian update equation that orders the multiplications to minimize the number of operations.static void
update
(DMatrixRMaj H, DMatrixRMaj s, DMatrixRMaj y, DMatrixRMaj tempV0, DMatrixRMaj tempV1) DFP Hessian update equation.
-
Constructor Details
-
EquationsBFGS
public EquationsBFGS()
-
-
Method Details
-
update
public static void update(DMatrixRMaj H, DMatrixRMaj s, DMatrixRMaj y, DMatrixRMaj tempV0, DMatrixRMaj tempV1) DFP Hessian update equation. See class description for equations- Parameters:
H
- symmetric inverse matrix being updateds
- change in state (new - old)y
- change in gradient (new - old)tempV0
- Storage vector
-
inverseUpdate
public static void inverseUpdate(DMatrixRMaj H, DMatrixRMaj s, DMatrixRMaj y, DMatrixRMaj tempV0, DMatrixRMaj tempV1) BFGS inverse hessian 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(DMatrixRMaj C, DMatrixRMaj d, DMatrixRMaj y, double step, DMatrixRMaj 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(DMatrixRMaj C, DMatrixRMaj d, DMatrixRMaj y, double step, DMatrixRMaj tempV0, DMatrixRMaj 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
-