pub struct SqpResult {
pub x: Vec<Number>,
pub lambda_g: Vec<Number>,
pub lambda_x: Vec<Number>,
pub obj: Number,
pub status: SqpStatus,
pub n_iter: u32,
pub n_qp_solves: u32,
pub n_qp_working_set_changes: u32,
pub final_stationarity: Number,
pub final_constr_viol: Number,
pub working_set: Option<WorkingSet>,
}Fields§
§x: Vec<Number>§lambda_g: Vec<Number>§lambda_x: Vec<Number>§obj: Number§status: SqpStatus§n_iter: u32§n_qp_solves: u32§n_qp_working_set_changes: u32Active-set changes (adds + drops) summed over every step QP
solved during this call — the inner work a working-set warm
start exists to avoid. Reported separately from n_iter
because the two move independently: on a QP-shaped NLP the
outer loop always terminates in one iteration, so the entire
warm-start effect shows up here and nowhere else.
Excludes second-order-correction QPs, whose stats the line search does not surface.
final_stationarity: NumberFinal stationarity residual (max-norm of ∇f + Jᵀ λ_g + λ_x).
final_constr_viol: NumberFinal constraint violation (max-norm of c(x*) for
equalities plus bound-violation slack).
working_set: Option<WorkingSet>Final QP working set, suitable for warm-starting the next
optimize_with_warm_start call (§6 design-note contract).
None only when no QP was solved (e.g. cold-start declared
the iterate optimal at the very first KKT check).
Trait Implementations§
Auto Trait Implementations§
impl Freeze for SqpResult
impl RefUnwindSafe for SqpResult
impl Send for SqpResult
impl Sync for SqpResult
impl Unpin for SqpResult
impl UnsafeUnpin for SqpResult
impl UnwindSafe for SqpResult
Blanket Implementations§
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
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