fn try_tighten_variable_bound(
        &mut self,
        constraint: usize,
        variable: usize,
        coefficient: &OF,
        activity_direction: BoundDirection,
        activity_bound: &OF,
    ) -> (BoundDirection, BoundChange<OF>) {
        let bound_direction = activity_direction * NonZeroSign::from(coefficient);
        let bound_value = self.updates.variable_bound(variable, bound_direction).unwrap();
        let bound = activity_bound - coefficient * bound_value;

        let variable_bound = (self.updates.b(constraint) - bound) / coefficient;
        let change = self.updates.update_activity_variable_bound(variable, !bound_direction, variable_bound);
        (!bound_direction, change)
    }
/// Apply domain propagation through activation bounds for a constraint where all of the
/// relevant variable bounds are known.
///
/// # Arguments
///
/// * `constraint`: Index of the constraint under consideration.
/// * `variable`: Index of variable who's relevant variable bound is not known, with all other
/// variable bounds in this constraint being known.
/// * `coefficient`: Nonzero coefficient of the variable in the constraint.
/// * `direction`: Whether the activity lower- or upperbound should be used.
/// * `activity_bound`: Value of the activity lower- or upperbound.
///
/// # Return value
///
/// Tuple of:
///
/// * Direction of the bound that was changed (lower or upper).
/// * Change that was done (any at all, and if so, by how much or was there no bound before? See
/// the `update_bound` method for more).
Apply domain propagation through activation bounds for a constraint where all of the
relevant variable bounds are known.
Apply domain propagation through activation bounds for a constraint where all of the relevant variable bounds are known .
fn try_tighten_variable_bound(
        &mut self,
        constraint: usize,
        variable: usize,
        coefficient: &OF,
        activity_direction: BoundDirection,
        activity_bound: &OF,
    ) -> (BoundDirection, BoundChange<OF>) {
        let bound_direction = activity_direction * NonZeroSign::from(coefficient);
        let bound_value = self.updates.variable_bound(variable, bound_direction).unwrap();
        let bound = activity_bound - coefficient * bound_value;
        let variable_bound = (self.updates.b(constraint) - bound) / coefficient;
        let change = self.updates.update_activity_variable_bound(variable, !bound_direction, variable_bound);
        (!bound_direction, change)
    }
fn try_tighten_variable_bound ( & mut self , constraint : usize , variable : usize , coefficient : & OF , activity_direction : BoundDirection , activity_bound : & OF , ) -> ( BoundDirection , BoundChange < OF > ) { let bound_direction = activity_direction * NonZeroSign :: from ( coefficient ) ; let bound_value = self . updates . variable_bound ( variable , bound_direction ) . unwrap ( ) ; let bound = activity_bound - coefficient * bound_value ; let variable_bound = ( self . updates . b ( constraint ) - bound ) / coefficient ; let change = self . updates . update_activity_variable_bound ( variable , ! bound_direction , variable_bound ) ; ( ! bound_direction , change ) }
Apply domain propagation through activation bounds for a constraint where all of the
relevant variable bounds are known.
Apply domain propagation through activation bounds for a constraint where all of the relevant variable bounds are known .
&mut self
constraint
usize
variable
usize
coefficient
&OF
activity_direction
BoundDirection
activity_bound
&OF
&mut self
constraint
usize
variable
usize
coefficient
&OF
activity_direction
BoundDirection
activity_bound
&OF
return value
Tuple of.

Direction of the bound that was changed (lower or upper).
Change that was done (any at all, and if so, by how much or was there no bound before. See
the `update_bound` method for more).
Tuple of . Direction of the bound that was changed ( lower or upper ) . Change that was done ( any at all and if so by how much or was there no bound before . See the ` update_bound ` method for more ) .