Skip to content

Check whether bounds are dominated when selecting variables for elimination #15

Open
@Robbybp

Description

@Robbybp

If a potentially eliminated variable has bounds, we can ignore them if the bounds are dominated by bounds on the variables used to eliminate it. A rough sketch of a procedure to do this during the variable elimination procedure is:

  1. If a potentially eliminated variable has bounds,
  2. Temporarily remove these bounds.
  3. For each candidate constraint for elimination,
  4. Perform FBBT using the constraint. This propagates the bounds on the "defining" variables to the "candidate variable" via the equality constraint
  5. If the original bounds are dominated by (or equivalent to) the propagated bounds, then the original bounds are unnecessary and do not need to be converted into inequality constraints

A couple notes:

  • This works best if all variables have bounds, e.g. FBBT has already been performed on the model as a whole
  • This can be applied while selecting variables for elimination. In this case, we only check whether the "immediately defining" variables (e.g. b and c for a == b + c) have bounds that dominate the bounds of the candidate variable (e.g. a).
  • This can also be applied while performing elimination in-place. In this case, we check whether bounds on variables in the eliminated-space expression are dominating (e.g. b, d, and e for a == b + c and c == d + e). Neither of these necessarily produce tighter bounds, as bounds on either c or d + e could be dominating. It may also be possible to somehow look up the bounds on the d + e expression (which are now inequalities), but this may be some work to integrate into FBBT.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions