pub struct LinearInequalityConstraints {
pub a: Array2<f64>,
pub b: Array1<f64>,
}Fields§
§a: Array2<f64>§b: Array1<f64>Implementations§
Source§impl LinearInequalityConstraints
impl LinearInequalityConstraints
Sourcepub fn new(a: Array2<f64>, b: Array1<f64>) -> Result<Self, String>
pub fn new(a: Array2<f64>, b: Array1<f64>) -> Result<Self, String>
Construct with the equal-row-count invariant enforced. The dimensions
a.nrows() == b.len() are required by every downstream KKT / active-set
routine; routing every construction site through this constructor
eliminates a class of “rows out of sync” bugs at the type boundary.
Sourcepub fn canonicalized(&self) -> Result<Self, String>
pub fn canonicalized(&self) -> Result<Self, String>
Canonicalize the system Aβ ≥ b into the scale-free form every
downstream tolerance assumes, PRESERVING row count and order (so cached
active-set row indices and warm-start hints remain valid):
- non-finite entries are rejected (a NaN row compares as neither feasible nor infeasible and silently evades active-set logic);
- an exactly-zero row
0ᵀβ ≥ b_iis INFEASIBLE forb_i > 0(rejected loudly); forb_i ≤ 0it is vacuous and kept verbatim — its geometric slack is+∞, so it can never activate downstream; - every nonzero row is normalized to unit norm,
(a_i, b_i)/‖a_i‖, sob_ibecomes the signed distance of the constraint hyperplane from the origin and every absolute slack / violation / rank tolerance applied later is automatically scale-relative:1e-20·β ≥ 1e-20andβ ≥ 1canonicalize to the same row, as they are the same half-space.
Sourcepub fn from_per_coordinate_lower_bounds(
lower_bounds: &Array1<f64>,
) -> Option<Self>
pub fn from_per_coordinate_lower_bounds( lower_bounds: &Array1<f64>, ) -> Option<Self>
Build the per-coordinate β_i >= lower_bounds[i] inequality system.
Non-finite entries are treated as “no bound” and skipped; returns
None when every entry is non-finite so callers can short-circuit
the no-constraint case without allocating the empty A/b pair.
Trait Implementations§
Source§impl Clone for LinearInequalityConstraints
impl Clone for LinearInequalityConstraints
Source§fn clone(&self) -> LinearInequalityConstraints
fn clone(&self) -> LinearInequalityConstraints
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for LinearInequalityConstraints
impl Debug for LinearInequalityConstraints
Source§impl From<LinearInequalityConstraints> for ConstraintSet
impl From<LinearInequalityConstraints> for ConstraintSet
Source§fn from(dense: LinearInequalityConstraints) -> Self
fn from(dense: LinearInequalityConstraints) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl Freeze for LinearInequalityConstraints
impl RefUnwindSafe for LinearInequalityConstraints
impl Send for LinearInequalityConstraints
impl Sync for LinearInequalityConstraints
impl Unpin for LinearInequalityConstraints
impl UnsafeUnpin for LinearInequalityConstraints
impl UnwindSafe for LinearInequalityConstraints
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
Mutably borrows from an owned value. Read more
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,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T, U> Imply<T> for U
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>
Converts
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>
Converts
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.