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: BoundBias/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