pub struct Constraint {
pub coefficients: Vec<Coefficient>,
pub bias: Bound,
}
Expand description
Represents a linear constraint in the form: sum(coeff_i * var_i) + bias >= 0.
Fields§
§coefficients: Vec<Coefficient>
Vector of (variable_name, coefficient) pairs
bias: Bound
Bias/constant term with potential bounds
Implementations§
Source§impl Constraint
impl Constraint
Sourcepub fn dot(&self, values: &IndexMap<String, Bound>) -> Bound
pub fn dot(&self, values: &IndexMap<String, Bound>) -> Bound
Computes the dot product of the constraint coefficients with variable bounds.
This calculates the range of possible values for the linear combination of variables in this constraint, excluding the bias term.
§Arguments
values
- Map of variable names to their bounds
§Returns
A bound representing the min and max possible values of the dot product
Sourcepub fn evaluate(&self, values: &IndexMap<String, Bound>) -> Bound
pub fn evaluate(&self, values: &IndexMap<String, Bound>) -> Bound
Evaluates the constraint against variable bounds.
Computes whether the constraint (dot product + bias >= 0) is satisfied for the given variable bounds.
§Arguments
values
- Map of variable names to their bounds
§Returns
A bound where:
- .0 is 1 if the constraint is satisfied with lower bounds, 0 otherwise
- .1 is 1 if the constraint is satisfied with upper bounds, 0 otherwise
Sourcepub fn negate(&self) -> Constraint
pub fn negate(&self) -> Constraint
Creates the negation of this constraint.
Transforms the constraint from (ax + b >= 0) to (-ax - b - 1 >= 0), which is equivalent to (ax + b < 0).
§Returns
A new Constraint
representing the negation of this constraint
Auto Trait Implementations§
impl Freeze for Constraint
impl RefUnwindSafe for Constraint
impl Send for Constraint
impl Sync for Constraint
impl Unpin for Constraint
impl UnwindSafe for Constraint
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> 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