pub enum ProblemClass {
Lp,
ConvexQp,
ConvexQcqp,
NonconvexQp,
Nlp,
}Expand description
The mathematical class of a loaded problem, from most to least
specialized. See the module docs and dev-notes/lp-qp-routing.md.
Variants§
Lp
Linear objective, linear constraints.
ConvexQp
Convex quadratic objective, linear constraints (Hessian PSD).
ConvexQcqp
Convex quadratic objective and/or convex quadratic constraints. SOCP-representable; routes to the conic (SOCP) interior-point solver.
NonconvexQp
Quadratic objective with an indefinite (sense-adjusted) Hessian and
linear constraints. auto falls through to the NLP solver for a
local minimum; solver_selection=qp-active-set solves it directly with
the pounce-qp active-set engine, which takes an indefinite H
(gh #786) and returns a local minimum.
What “local minimum” means on that path is narrower than it reads, and
was narrower still before gh #848. The §4.5 inertia control shifts
H -> H + delta*I so the local model is convex; it does not move the
iterate, and at a saddle g = 0 makes the shifted step zero. So the
engine used to stop there and certify Optimal on the first-order
evidence alone — vanishing projected gradient, sign-admissible
working-set multipliers — which a saddle, and the constrained maximum
of min x0*x1 on x0 + x1 = 2, satisfy exactly. The engine now
exhibits a direction d with A_W d = 0 and d'Hd < 0 and follows it
before certifying, so an Optimal here is second-order. It is still
only local: nothing on this path rules out a better minimum elsewhere.
The linear-constraints half of that is load-bearing, not descriptive:
both consumers reach the model through
crate::qp_extract::extract_qp_with_map, which keeps only the
degree-≤1 part of every row. A quadratic row here would be silently
dropped, so a model carrying one classifies Self::Nlp instead —
see ClassReason::NonconvexQcqp.
Nlp
General nonlinear (transcendental terms, higher-degree polynomials, or anything the classifier cannot prove quadratic).
Implementations§
Trait Implementations§
Source§impl Clone for ProblemClass
impl Clone for ProblemClass
Source§fn clone(&self) -> ProblemClass
fn clone(&self) -> ProblemClass
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for ProblemClass
Source§impl Debug for ProblemClass
impl Debug for ProblemClass
impl Eq for ProblemClass
Source§impl PartialEq for ProblemClass
impl PartialEq for ProblemClass
impl StructuralPartialEq for ProblemClass
Auto Trait Implementations§
impl Freeze for ProblemClass
impl RefUnwindSafe for ProblemClass
impl Send for ProblemClass
impl Sync for ProblemClass
impl Unpin for ProblemClass
impl UnsafeUnpin for ProblemClass
impl UnwindSafe for ProblemClass
Blanket Implementations§
impl<T> Boilerplate for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T, U> Imply<T> for U
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more