pub struct Iis {
pub constraints: Vec<ConstraintId>,
pub soc_constraints: Vec<SocConstraintId>,
pub var_bounds: Vec<(VarId, VarBoundKind)>,
}Expand description
An irreducible infeasible subsystem (IIS).
A minimal set of constraints and variable bounds that together make the model infeasible. Removing any single member makes the remaining subsystem feasible.
Backends that can diagnose infeasibility return one via
InfeasibilityDiagnosis::compute_iis. The members are keyed by the same ids the
model assigns (ConstraintId, SocConstraintId, VarId), so
Iis::report can name them against the Model.
Fields§
§constraints: Vec<ConstraintId>Algebraic constraints in the IIS.
soc_constraints: Vec<SocConstraintId>Second-order-cone constraints in the IIS.
var_bounds: Vec<(VarId, VarBoundKind)>Variable bounds in the IIS, each (variable, which bound).
Implementations§
Source§impl Iis
impl Iis
Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
The total number of members (constraints, SOC constraints, and variable bounds) in the IIS.
Sourcepub fn report<'a>(&'a self, model: &'a Model) -> IisReport<'a>
pub fn report<'a>(&'a self, model: &'a Model) -> IisReport<'a>
A human-readable, model-aware listing of this IIS.
It names every constraint and variable bound in the subsystem using the
model’s own names. Render with ToString::to_string or by printing.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Iis
impl RefUnwindSafe for Iis
impl Send for Iis
impl Sync for Iis
impl Unpin for Iis
impl UnsafeUnpin for Iis
impl UnwindSafe for Iis
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,
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