Once ALL constraints have been processed, call this to fix variables or
reduce their domain if possible.
Note that this also tighten some constraint that are the only one blocking
in one direction. Currently we only do that for implication, so that if we
have two Booleans such that a + b <= 1 we transform that to = 1 and we
remove one variable since we have now an equivalence relation.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-08-06 UTC."],[[["The `DualBoundStrengthening` class identifies and processes variables with free movement in one direction or within specific bounds."],["It utilizes constraint analysis to detect these variables and potentially reduce large bounds, which is beneficial before scaling."],["The class provides methods to specify constraints on variable movement and to strengthen the model by fixing variables or tightening bounds based on these constraints."],["It's crucial to call the `Reset` method before processing constraints and the `Strengthen` method after processing to apply the detected improvements."]]],["The `DualBoundStrengthening` class detects variables with directional freedom or bound-limited movement. Key actions include: identifying how far a variable can decrease freely (`CanFreelyDecreaseUntil`), marking variables that cannot decrease/increase/move (`CannotDecrease`, `CannotIncrease`, `CannotMove`), and recording the number of deleted constraints (`NumDeletedConstraints`). It processes linear constraints (`ProcessLinearConstraint`), resets its state (`Reset`), and tightens variable domains and constraints once all constraints are processed (`Strengthen`). This process is important to reduce large bounds before scaling.\n"]]