Class BFGSMinimizer

    • 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 0
        maxIterations - the maximum number of iterations
        isFletcherSwitch - 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 Hessian
        gamma - γ
        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 Hessian
        gamma - γ
        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 matrix
        gamma - γ
        delta - δ
        Returns:
        an updated Hessian matrix