pub struct Certificate {
pub class: StationarityClass,
pub n_pairs: usize,
pub n_biactive: usize,
pub n_neither: usize,
pub multipliers_unique: bool,
pub residual: Number,
pub resid_tol: Number,
pub tight: bool,
pub primal_violation: Number,
pub feasible: bool,
pub worst_biactive_sign: Number,
}Expand description
What certify measured. Everything the verdict rests on is here.
Fields§
§class: StationarityClass§n_pairs: usize§n_biactive: usize§n_neither: usizePairs with neither side at zero — complementarity does not hold.
multipliers_unique: boolColumns of the stationarity system are linearly dependent, so the multipliers form a set rather than a point (MPCC-LICQ fails).
residual: Number‖A θ − ∇f‖∞ at the multipliers that decided the class.
resid_tol: NumberThe band residual is judged against: max(1e-6, tol) plus the
sqrt(tol) sign band, both times the dual scale (see certify).
tight: boolThe residual is within the floor alone,
max(1e-6, tol) times the dual scale. An S point that is not
tight reproduces ∇f only to the sqrt(tol) band: the driver keeps
it and reports it only if no formulation produces a tight one. With a
multiplier set, the test is on the sign-free fit, as the old gate
into the set search was; the search itself then takes the band.
primal_violation: NumberLargest violation of a row or variable bound at the point (pair sides included), in the model’s units.
feasible: boolprimal_violation is within CertificateInput::feas_tol. When it
is not, the class is None whatever the multipliers say.
worst_biactive_sign: NumberLargest-magnitude negative sign on a biactive pair, when the class
is decided by a sign (W with unique multipliers).
Trait Implementations§
Source§impl Clone for Certificate
impl Clone for Certificate
Auto Trait Implementations§
impl Freeze for Certificate
impl RefUnwindSafe for Certificate
impl Send for Certificate
impl Sync for Certificate
impl Unpin for Certificate
impl UnsafeUnpin for Certificate
impl UnwindSafe for Certificate
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