class kona.linalg.matrices.hessian.ReducedKKTMatrix(vector_factories, optns=None)[source]

Bases: kona.linalg.matrices.hessian.basic.BaseHessian

Reduced approximation of the KKT matrix using a 2nd order adjoint formulation.

For problems with only equality constraints, the KKT system is given as:

\[\begin{split}\begin{bmatrix} \nabla_x^2 \mathcal{L} && \nabla_x c^T \\ \nabla_x c_{eq} && 0 \end{bmatrix} \begin{bmatrix} \Delta x \\ \Delta \lambda \end{bmatrix} = \begin{bmatrix} -\nabla_x \mathcal{f} - \lambda^T \nabla_x c \\ - c \end{bmatrix}\end{split}\]

where \(\mathcal{L}\) is the Lagrangian defined as:

\[\mathcal{L}(x, u(x), \lambda) = F(x, u(x)) + \lambda^T c(x, u(x))\]

For problems with inequality constraints, slack variables \(s\) are introduced alongside a log-barrier term for non-negativity, such that the Lagrangian \(\mathcal{L}\) becomes:

\[\mathcal{L}(x, u(x), \lambda) = F(x, u(x)) + \lambda_{eq}^T c_{eq}(x, u(x)) + \lambda_{ineq}^T \left[c_{ineq}(x, u(x)) - s\right] + \frac{1}{2}\mu\sum_{i=1}^{n_{ineq}}ln(s_i)\]

The inequality constrained KKT system is then defined as:

\[\begin{split}\begin{bmatrix} \nabla_x^2 \mathcal{L} && 0 && \nabla_x c_{eq}^T && \nabla_x c_{ineq}^T \\ 0 && \Sigma && 0 && I \\ \nabla_x c_{eq} && 0 && 0 && 0 \\ \nabla_x c_{ineq} && I && 0 && 0 \end{bmatrix} \begin{bmatrix} \Delta x \\ \Delta s \\ \Delta \lambda_{eq} \\ \Delta \lambda_{ineq} \end{bmatrix} = \begin{bmatrix} -\nabla_x \mathcal{f} - \lambda_{eq}^T \nabla_x c_{eq} -\lambda_{eq}^T \nabla_x c_{eq} \\ \lambda^T \mu * S^{-1}e \\ - c_{eq} \\ - c_{ineq} + s \end{bmatrix}\end{split}\]


Currently, Kona does not have any optimization algorithms that support inequality constraints. The slack implementation in this matrix is part of an ongoing development effort to support inequality constraints at a future date.

  • product_tol (float) – Tolerance for 2nd order adjoint system solutions.
  • grad_scale, feas_scale (scale,) – Optimality metric normalization factors.
  • krylov (KrylovSolver) – A krylov solver object used to solve the system defined by this matrix.
  • dRdU, dCdX, dCdU (dRdX,) – Various abstract jacobians used in calculating the mat-vec product.
linearize(at_kkt, at_state, at_adjoint, obj_scale=1.0, cnstr_scale=1.0)[source]

Linearize the KKT matrix at the given KKT, state, adjoint and barrier point. This method does not perform any factorizations or matrix operations.

  • at_kkt (ReducedKKTVector) – KKT vector at which the product is evaluated
  • at_state (StateVector) – State point at which the product is evaluated.
  • at_adjoint (StateVector) – 1st order adjoint variables at which the product is evaluated.
  • obj_scale (float, optional) – Factor by which the objective component of the product is scaled.
  • cnstr_scale (float, optional) – Factor by which the constraint component of the product is scaled.
product(in_vec, out_vec)[source]

Matrix-vector product for the reduced KKT system.