Class Domain

  • Direct Known Subclasses:
    FloatDomain, IntDomain, SetDomain

    public abstract class Domain
    extends java.lang.Object
    Defines a Domain and related operations on it.
    Version:
    4.7
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static FailException failException
      An exception used if failure encountered in functions in();
      Constraint[][] modelConstraints
      It specifies constraints which are attached to current domain, each array has different pruning event.
      int[] modelConstraintsToEvaluate
      It specifies the first position of a constraint which is satisfied.
      static int NOINFO
      It specifies the constant responsible of conveying a message that no information is provided by the domain when describing the change which has occurred within the domain.
      static int NONE
      It specifies the constant for NONE event, if event is NONE then the constraint is not attached to a variable.
      java.util.List<Constraint> searchConstraints
      It specifies constraints which are attached to current domain.
      boolean searchConstraintsCloned
      It specifies if the vector of constraints were cloned (if it was not cloned then the same vector is reused across domains with different stamps.
      int searchConstraintsToEvaluate
      It specifies the position of the last constraint which is still not yet satisfied.
      int stamp
      It specifies the level of this domain, which specifies at which store level it was created and used.
    • Constructor Summary

      Constructors 
      Constructor Description
      Domain()  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      abstract java.lang.String checkInvariants()
      It checks if the domain has correct state.
      abstract void clear()
      It removes all elements.
      abstract Domain clone()
      It clones the domain object.
      abstract Domain cloneLight()
      It clones the domain object, only data responsible for encoding domain values is cloned.
      java.util.List<Constraint> constraints()
      It returns all the constraints attached currently to the domain.
      abstract int domainID()
      It returns an unique identifier of the domain.
      abstract int[] getEventsInclusion​(int pruningEvent)
      It specifies what events should be executed if a given event occurs.
      abstract int getSize()
      It returns the size of the domain.
      abstract void in​(int level, Var var, Domain domain)
      It enforces that this domain is included within the specified domain.
      abstract boolean isEmpty()
      It returns true if given domain is empty.
      abstract boolean isNumeric()
      It specifies if domain is a finite domain of numeric values (integers).
      abstract boolean isSparseRepresentation()
      It specifies if the domain type is more suited to representing sparse domain.
      abstract int noConstraints()
      It returns the number of constraints
      int noSearchConstraints()
      It returns number of search constraints.
      abstract void putModelConstraint​(int storeLevel, Var var, Constraint C, int pruningEvent)
      It adds a constraint to a domain, it should only be called by putConstraint function of Variable object.
      abstract void putSearchConstraint​(int storeLevel, Var var, Constraint C)
      It adds a constraint to a domain, it should only be called by putConstraint function of Variable object.
      abstract void removeLevel​(int level, Var var)
      It removes the specified level.
      abstract void removeModelConstraint​(int storeLevel, Var var, Constraint c)
      It removes a constraint from a domain, it should only be called by removeConstraint function of Variable object.
      abstract void removeSearchConstraint​(int storeLevel, Var var, int position, Constraint c)
      It removes a constraint from a domain, it should only be called by removeConstraint function of Variable object.
      java.util.List<Constraint> searchConstraints()  
      void setStamp​(int stamp)
      It sets the stamp of the domain.
      abstract boolean singleton()
      It returns true if given domain has only one element.
      abstract boolean singleton​(Domain value)
      It returns true if given domain has only one element.
      int sizeConstraints()
      It returns all constraints which are associated with variable, even the ones which are already satisfied.
      abstract int sizeConstraintsOriginal()
      It returns all constraints which are associated with variable, even the ones which are already satisfied.
      int stamp()
      It returns the stamp of the domain.
      abstract java.lang.String toString()
      It returns string description of the domain (only values in the domain).
      abstract java.lang.String toStringConstraints()
      It returns string description of the constraints attached to the domain.
      abstract java.lang.String toStringFull()
      It returns complete string description containing all relevant information about the domain.
      abstract ValueEnumeration valueEnumeration()
      It returns value enumeration of the domain values.
      • Methods inherited from class java.lang.Object

        equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • NOINFO

        public static final int NOINFO
        It specifies the constant responsible of conveying a message that no information is provided by the domain when describing the change which has occurred within the domain.
        See Also:
        Constant Field Values
      • NONE

        public static final int NONE
        It specifies the constant for NONE event, if event is NONE then the constraint is not attached to a variable. Useful for constraints which are always satisfied or not satisfied after the first consistency function execution.
        See Also:
        Constant Field Values
      • failException

        public static final FailException failException
        An exception used if failure encountered in functions in();
      • modelConstraints

        public Constraint[][] modelConstraints
        It specifies constraints which are attached to current domain, each array has different pruning event.
      • modelConstraintsToEvaluate

        public int[] modelConstraintsToEvaluate
        It specifies the first position of a constraint which is satisfied. All constraints at earlier positions are not satisfied yet.
      • searchConstraints

        public java.util.List<Constraint> searchConstraints
        It specifies constraints which are attached to current domain.
      • searchConstraintsCloned

        public boolean searchConstraintsCloned
        It specifies if the vector of constraints were cloned (if it was not cloned then the same vector is reused across domains with different stamps. Only reading actions are allowed on not cloned vector of constraints.
      • searchConstraintsToEvaluate

        public int searchConstraintsToEvaluate
        It specifies the position of the last constraint which is still not yet satisfied.
      • stamp

        public int stamp
        It specifies the level of this domain, which specifies at which store level it was created and used. The domain is only valid (used) at a store level equal domain stamp.
    • Constructor Detail

      • Domain

        public Domain()
    • Method Detail

      • clear

        public abstract void clear()
        It removes all elements.
      • cloneLight

        public abstract Domain cloneLight()
        It clones the domain object, only data responsible for encoding domain values is cloned. All other fields must be set separately.
        Returns:
        return a clone of the domain. It aims at getting domain of the proper class type.
      • clone

        public abstract Domain clone()
        It clones the domain object.
        Overrides:
        clone in class java.lang.Object
      • valueEnumeration

        public abstract ValueEnumeration valueEnumeration()
        It returns value enumeration of the domain values.
        Returns:
        valueEnumeration which can be used to enumerate one by one value from this domain.
      • getSize

        public abstract int getSize()
        It returns the size of the domain.
        Returns:
        number of elements in this domain.
      • isEmpty

        public abstract boolean isEmpty()
        It returns true if given domain is empty.
        Returns:
        true if the given domain is empty.
      • removeModelConstraint

        public abstract void removeModelConstraint​(int storeLevel,
                                                   Var var,
                                                   Constraint c)
        It removes a constraint from a domain, it should only be called by removeConstraint function of Variable object. It is called for example in a situation when a constraint is satisfied.
        Parameters:
        storeLevel - specifies the current level of the store, from which it should be removed.
        var - specifies variable for which the constraint is being removed.
        c - the constraint which is being removed.
      • removeSearchConstraint

        public abstract void removeSearchConstraint​(int storeLevel,
                                                    Var var,
                                                    int position,
                                                    Constraint c)
        It removes a constraint from a domain, it should only be called by removeConstraint function of Variable object.
        Parameters:
        storeLevel - specifies the current level of the store, from which it should be removed.
        var - specifies variable for which the constraint is being removed.
        position - specifies the position of the removed constraint.
        c - the constraint which is being removed.
      • searchConstraints

        public java.util.List<Constraint> searchConstraints()
        Returns:
        it returns the array containing search constraints (the ones imposed after setting up the model).
      • setStamp

        public void setStamp​(int stamp)
        It sets the stamp of the domain.
        Parameters:
        stamp - defines the time stamp of the domain.
      • singleton

        public abstract boolean singleton()
        It returns true if given domain has only one element.
        Returns:
        true if the domain contains only one element.
      • singleton

        public abstract boolean singleton​(Domain value)
        It returns true if given domain has only one element.
        Parameters:
        value - value represented as domain object to which the domain must be equal to.
        Returns:
        true if the domain contains only one element.
      • noConstraints

        public abstract int noConstraints()
        It returns the number of constraints
        Returns:
        the number of constraints attached to this domain.
      • noSearchConstraints

        public int noSearchConstraints()
        It returns number of search constraints.
        Returns:
        the number of search constraints.
      • stamp

        public int stamp()
        It returns the stamp of the domain.
        Returns:
        the level of the domain.
      • toString

        public abstract java.lang.String toString()
        It returns string description of the domain (only values in the domain).
        Overrides:
        toString in class java.lang.Object
      • toStringConstraints

        public abstract java.lang.String toStringConstraints()
        It returns string description of the constraints attached to the domain.
        Returns:
        the string description.
      • toStringFull

        public abstract java.lang.String toStringFull()
        It returns complete string description containing all relevant information about the domain.
        Returns:
        complete description of the domain.
      • removeLevel

        public abstract void removeLevel​(int level,
                                         Var var)
        It removes the specified level. This function may re-instantiate the old copy of the domain (previous value) or recover from changes done at stamp level to get the previous value at level lower at provided level.
        Parameters:
        level - the level which is being removed.
        var - the variable to which this domain belonged to.
      • domainID

        public abstract int domainID()
        It returns an unique identifier of the domain.
        Returns:
        it returns an integer id of the domain.
      • isSparseRepresentation

        public abstract boolean isSparseRepresentation()
        It specifies if the domain type is more suited to representing sparse domain.
        Returns:
        true if sparse, false otherwise.
      • isNumeric

        public abstract boolean isNumeric()
        It specifies if domain is a finite domain of numeric values (integers).
        Returns:
        true if domains contains numeric values.
      • putModelConstraint

        public abstract void putModelConstraint​(int storeLevel,
                                                Var var,
                                                Constraint C,
                                                int pruningEvent)
        It adds a constraint to a domain, it should only be called by putConstraint function of Variable object. putConstraint function from Variable must make a copy of a list of model constraints if vector was not cloned.
        Parameters:
        storeLevel - the level at which the model constraint is to be added.
        var - variable to which the constraint is attached to.
        C - the constraint which is being attached to a variable.
        pruningEvent - the type of the prunning event required to check the consistency of the attached constraint.
      • putSearchConstraint

        public abstract void putSearchConstraint​(int storeLevel,
                                                 Var var,
                                                 Constraint C)
        It adds a constraint to a domain, it should only be called by putConstraint function of Variable object. putConstraint function from Variable must make a copy of a list of search constraints if vector was not cloned.
        Parameters:
        storeLevel - the level at which the search constraint is to be added.
        var - variable to which the constraint is attached to.
        C - the constraint which is being attached to a variable.
      • sizeConstraints

        public int sizeConstraints()
        It returns all constraints which are associated with variable, even the ones which are already satisfied.
        Returns:
        the number of constraint attached to this domain.
      • sizeConstraintsOriginal

        public abstract int sizeConstraintsOriginal()
        It returns all constraints which are associated with variable, even the ones which are already satisfied.
        Returns:
        the number of constraints attached to the original domain of the variable associated with this domain.
      • constraints

        public java.util.List<Constraint> constraints()
        It returns all the constraints attached currently to the domain. It should not be used extensively.
        Returns:
        an array of constraints currently attached to the domain.
      • in

        public abstract void in​(int level,
                                Var var,
                                Domain domain)
        It enforces that this domain is included within the specified domain.
        Parameters:
        level - store level at which this inclusion is enforced.
        var - variable which is informed of the change if any occurs.
        domain - the domain which restricts this domain.
      • checkInvariants

        public abstract java.lang.String checkInvariants()
        It checks if the domain has correct state.
        Returns:
        null if everything is ok, otherwise a string describing the problem.
      • getEventsInclusion

        public abstract int[] getEventsInclusion​(int pruningEvent)
        It specifies what events should be executed if a given event occurs.
        Parameters:
        pruningEvent - the pruning event for which we want to know what events it encompasses.
        Returns:
        an array specifying what events should be included given this event.