pub struct WeakBound {
pub row: usize,
pub var_row: usize,
pub lower: bool,
}Expand description
The step for the whole perturbation under the active set the path has reached: released bounds out of the operator with their multipliers constrained to stay at zero, and held variables kept where they are.
The multiplier constraint is not optional. The re-factored released operator drops the bound’s diagonal term, but the factor’s complementarity row for that bound still couples the direction through the base slack and multiplier it was built from, and without the constraint the released direction is measurably wrong: on a two-variable QP the free direction after a release came back [1.154, 0.194] against the analytic [1.227, 0.454]. A bound the classifier could not call active or inactive at the base point: variable on the bound with a multiplier of the same order as the slack, both order sqrt(mu). The solution map has a kink there, and no single linear step is right for both sides.
Fields§
§row: usizeBound-multiplier row in the compound KKT vector.
var_row: usizeVar-x row of the variable the bound covers.
lower: booltrue when the bound is the variable’s lower bound.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for WeakBound
impl RefUnwindSafe for WeakBound
impl Send for WeakBound
impl Sync for WeakBound
impl Unpin for WeakBound
impl UnsafeUnpin for WeakBound
impl UnwindSafe for WeakBound
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