Class SQPASVariation1

  • All Implemented Interfaces:
    SQPASVariation

    public class SQPASVariation1
    extends Object
    implements SQPASVariation
    This implementation is a modified version of Algorithm 15.4 in the reference to solve a general constrained minimization problem using Sequential Quadratic Programming.
    • Constructor Detail

      • SQPASVariation1

        public SQPASVariation1​(double epsilon)
        Construct a variation.
        Parameters:
        epsilon - a precision parameter: when a number |x| ≤ ε, it is considered 0
    • Method Detail

      • set

        public void set​(RealScalarFunction f,
                        RealVectorFunction g,
                        EqualityConstraints equal,
                        GreaterThanConstraints greater)
        Associate this variation to a particular general constrained minimization problem.
        Parameters:
        f - the objective function to be minimized
        g - the gradient function for f
        equal - the equality constraints
        greater - the greater-than-or-equal-to constraints
      • getInitialHessian

        public Matrix getInitialHessian​(Vector x0,
                                        Vector v0,
                                        Vector u0)
        Description copied from interface: SQPASVariation
        Get the initial Hessian matrix.
        Specified by:
        getInitialHessian in interface SQPASVariation
        Parameters:
        x0 - the initial minimizer
        v0 - the initial Lagrange multipliers for equality constraints (lambda)
        u0 - the initial Lagrange multipliers for inequality constraints (mu)
        Returns:
        the initial Hessian matrix, e.g., identity
      • updateHessian

        public Matrix updateHessian​(Vector x1,
                                    Vector v1,
                                    Vector u1,
                                    Vector d,
                                    Vector g0,
                                    Matrix Ae0,
                                    Matrix Ai0,
                                    Matrix W0)
        Update the Hessian matrix using the latest iterates.
        Specified by:
        updateHessian in interface SQPASVariation
        Parameters:
        x1 - the next minimizer
        v1 - the next Lagrange multipliers for equality constraints (lambda)
        u1 - the next Lagrange multipliers for inequality constraints (mu)
        d - the minimizer increment
        g0 - the gradient
        Ae0 - the set of active equality constraints
        Ai0 - the set of active inequality constraints
        W0 - the current Hessian matrix
        Returns:
        the next Hessian matrix
        See Also:
        "eqs. 15.41 - 15.44"
      • alpha

        public double alpha​(Vector x,
                            Vector d,
                            Vector v,
                            Vector u)
        Get the percentage increment along the minimizer increment direction.
        Specified by:
        alpha in interface SQPASVariation
        Parameters:
        x - the current minimizer
        d - the minimizer increment
        v - the Lagrange multipliers for equality constraints (lambda)
        u - the Lagrange multipliers for inequality constraints (mu)
        Returns:
        the percentage increment
        See Also:
        "eq. 15.36"