pub struct ComplementarityInfo {Show 15 fields
pub strategy: String,
pub accepted_by: Option<String>,
pub fallback: Option<String>,
pub reported: String,
pub summary: String,
pub solves: Vec<ComplementaritySolveInfo>,
pub total_iterations: usize,
pub max_abs_product: Option<f64>,
pub certificate: Option<ComplementarityCertificateInfo>,
pub b_stationarity: Option<ComplementarityBStationarityInfo>,
pub escapes: usize,
pub lifted: usize,
pub natural_residual: Option<f64>,
pub polish: Option<ComplementarityPolishInfo>,
pub polish_threshold: Option<f64>,
}Expand description
The complementarity driver’s record: which formulation answered, every
lowered solve it ran, and the stationarity certificate of the reported
point. Keyed like Python’s info["complementarity"].
statistics.iteration_count is the iteration count of the one lowered
solve whose point was reported; the driver runs several, and
Self::total_iterations is what the solve cost — the same honesty rule
as SecondOpinionInfo::total_iteration_count.
Fields§
§strategy: Stringcomplementarity_strategy: both, exact or continuation.
accepted_by: Option<String>The formulation whose strongly stationary answer was reported, or
None when no formulation answered.
fallback: Option<String>The formulation whose weakly stationary point was reported when no formulation answered, if that is what was reported.
reported: StringWhat was reported and on what grounds: answer, weak_fallback,
feasible_uncertified or verdict.
summary: StringThe driver’s one-line account, as printed on the console.
solves: Vec<ComplementaritySolveInfo>Every lowered solve, in order.
total_iterations: usizeIterations summed over every lowered solve.
max_abs_product: Option<f64>The reported point’s complementarity violation – the largest |G·H|
over one-sided pairs, the largest positive part of a mixed pair’s
products – or null when it has no point (a solve refused before
iteration 0).
certificate: Option<ComplementarityCertificateInfo>The stationarity certificate of the reported point; None only if the
model could not be evaluated there.
b_stationarity: Option<ComplementarityBStationarityInfo>The B-stationarity check of the reported point: run when it is
feasible and not certified S (S implies B). None when it did not
run. Additive; older reports without the field deserialize unchanged.
escapes: usizeBranch NLPs that moved the reported point off a non-B-stationary
one. Additive; reads 0 on reports written before the field existed.
lifted: usizePairs whose row was lifted into a variable (complementarity_lift):
their product rows were G·w, not G·H(x). Additive; reads 0 on
reports written before the field existed.
natural_residual: Option<f64>How complementary the reported point is: the largest min(|G|, |H|)
over its pairs, in the units of the pair sides. A point whose pairs
are complementary to tol reads near tol; one a relaxed stage left
at a nearly biactive pair reads near sqrt(τ) even when
max_abs_product reads τ. null when it could not be evaluated.
Additive; absent on reports written before the field existed.
polish: Option<ComplementarityPolishInfo>The branch re-solve of a nearly biactive answer, when it ran: whether
its point was taken, the residual before and after, and why it was
not taken. Absent when it did not run (the answer’s
natural_residual was within 10·tol, or the point was not a
feasible accepted one). Additive.
polish_threshold: Option<f64>The natural_residual above which the driver runs the branch
re-solve (10·tol). A residual at or below it was left alone on
purpose. Additive; absent on reports written before the field existed.
Trait Implementations§
Source§impl Clone for ComplementarityInfo
impl Clone for ComplementarityInfo
Source§fn clone(&self) -> ComplementarityInfo
fn clone(&self) -> ComplementarityInfo
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ComplementarityInfo
impl Debug for ComplementarityInfo
Source§impl<'de> Deserialize<'de> for ComplementarityInfo
impl<'de> Deserialize<'de> for ComplementarityInfo
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<ComplementarityInfo, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<ComplementarityInfo, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Serialize for ComplementarityInfo
impl Serialize for ComplementarityInfo
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl Forget for ComplementarityInfo
impl Freeze for ComplementarityInfo
impl RefUnwindSafe for ComplementarityInfo
impl Send for ComplementarityInfo
impl Sync for ComplementarityInfo
impl Unpin for ComplementarityInfo
impl UnsafeUnpin for ComplementarityInfo
impl UnwindSafe for ComplementarityInfo
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
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> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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