Class PropSumFullBoolIncr

  • All Implemented Interfaces:
    Comparable<Propagator>, ICause, Identity

    public class PropSumFullBoolIncr
    extends PropSumFullBool
    A propagator for SUM(x_i) = y + b, where x_i are boolean variables, maintained incrementally.
    Based on "Bounds Consistency Techniques for Long Linear Constraint"
    W. Harvey and J. Schimpf

    Since:
    18/03/11
    Author:
    Charles Prud'homme
    • Constructor Detail

      • PropSumFullBoolIncr

        public PropSumFullBoolIncr​(BoolVar[] variables,
                                   int pos,
                                   Operator o,
                                   int b)
        Creates a sum propagator: SUM(x_i) Op b, where x_i are boolean variables, maintained incrementally. Coefficients are induced by pos: those before pos (included) are equal to 1, the other ones are equal to -1.
        Parameters:
        variables - list of boolean variables
        pos - position of the last positive (induced) coefficient
        o - operator
        b - bound to respect
    • Method Detail

      • propagate

        public void propagate​(int evtmask)
                       throws ContradictionException
        Description copied from class: Propagator
        Call the main filtering algorithm to apply to the Domain of the Variable objects. It considers the current state of this objects to remove some values from domains and/or instantiate some variables. Calling this method is done from 2 (and only 2) steps:
        - at the initial propagation step,
        - when involved in a reified constraint.
        It should initialized the internal data structure and apply filtering algorithm from scratch.
        Overrides:
        propagate in class PropSum
        Parameters:
        evtmask - type of propagation event this must consider.
        Throws:
        ContradictionException - when a contradiction occurs, like domain wipe out or other incoherencies.
      • propagate

        public void propagate​(int idxVarInProp,
                              int mask)
                       throws ContradictionException
        Description copied from class: Propagator
        Incremental filtering algorithm defined within the Propagator, called whenever the variable of index idxVarInProp has changed. This method calls a CUSTOM_PROPAGATION (coarse-grained) by default.

        This method should be overridden if the argument reactToFineEvt is set to true in the constructor. Otherwise, it executes propagate(PropagatorEventType.CUSTOM_PROPAGATION.getStrengthenedMask());

        Overrides:
        propagate in class Propagator<IntVar>
        Parameters:
        idxVarInProp - index of the variable var in this
        mask - type of event
        Throws:
        ContradictionException - if a contradiction occurs
      • prepare

        protected void prepare()
        Description copied from class: PropSum
        Prepare the propagation: compute sumLB, sumUB and I
        Overrides:
        prepare in class PropSumFullBool