pounce-convex 0.8.0

Interior-point solvers for the convex problem classes in POUNCE: LP, convex QP, and conic programs (SOCP, exponential and power cones, SDP, and SOS) via a Mehrotra predictor-corrector with an HSDE embedding. Shares the pounce-linsol sparse symmetric factorization backbone with the NLP path.
Documentation

pounce-convex

Interior-point solvers for POUNCE's convex problem classes: LP and convex QP today, with cone-generic scaffolding for the conic family (SOCP, exponential/power cones, SDP) planned.

This crate is Phase 2 of the LP/QP routing plan (dev-notes/lp-qp-routing.md). It provides a bare primal-dual interior-point method for convex QP in standard form:

minimize    ½ xᵀP x + cᵀx
subject to  A x = b
            G x ≤ h

LP is the P = 0 case and is solved by the same driver.

Design

  • Cone-generic. The interior-point iteration is built over a [cones::Cone] trait with only the nonnegative orthant (cones::nonneg) implemented. Later phases add SOC / PSD / exp / pow cones behind the same trait, so the driver is extended, not rewritten.
  • Shared factorization. The symmetric indefinite KKT system is solved through pounce_linsol::Factorization — the same factor-once / solve-many handle the NLP path uses (feral by default, MA57 optional). No new linear-algebra dependency.
  • Mehrotra predictor-corrector with HSDE. The iteration uses a Mehrotra predictor-corrector step over a homogeneous self-dual embedding (use_hsde defaults to true — see [hsde]/[hsde_nonsym]), with Ruiz equilibration ([equilibrate]) on the non-HSDE path for badly-scaled data. The SOC / exponential / power / PSD cones (cones::{soc,exp,power, psd}) are present as tested building blocks for the conic family.

Status

Solves convex LP and QP correctly (validated against problems with analytically known optima, and exercised by the head-to-head benchmark suites benchmarks/lp_convex and benchmarks/qp_convex against the general NLP path). Wired into the CLI dispatch (crates/pounce-cli/src/dispatch.rs): solver_selection=auto routes LP and convex QP here (and convex QCQP to the same crate's SOCP IPM), and solver_selection=lp-ipm | qp-ipm | socp force it explicitly. The conic (SOCP / exponential / power / PSD) family beyond the QP/LP path is still under construction.