Class FloatIntervalDomain

  • All Implemented Interfaces:
    java.lang.Cloneable

    public class FloatIntervalDomain
    extends FloatDomain
    implements java.lang.Cloneable
    Defines interval of numbers which is part of FDV definition which consist of one or several intervals.
    Version:
    4.8
    • Field Detail

      • intervals

        public FloatInterval[] intervals
        The values of the domain are encoded as a list of intervals.
      • size

        public int size
        It specifies number of intervals needed to encode the domain.
      • emptyDomain

        public static final FloatIntervalDomain emptyDomain
        An empty domain, so no constant creation of empty domains is required.
    • Constructor Detail

      • FloatIntervalDomain

        public FloatIntervalDomain()
        Empty constructor, does not initialize anything.
      • FloatIntervalDomain

        public FloatIntervalDomain​(int size)
        It creates an empty domain, with at least specified number of places in an array list for intervals.
        Parameters:
        size - defines the initial size of an array storing the intervals.
      • FloatIntervalDomain

        public FloatIntervalDomain​(double min,
                                   double max)
        It creates domain with all values between min and max.
        Parameters:
        min - defines the left bound of a domain.
        max - defines the right bound of a domain.
    • Method Detail

      • domainID

        public int domainID()
        It returns an unique identifier of the domain.
        Specified by:
        domainID in class Domain
        Returns:
        it returns an integer id of the domain.
      • previousDomain

        public FloatDomain previousDomain()
        Description copied from class: FloatDomain
        It returns domain at earlier level at which the change has occurred.
        Specified by:
        previousDomain in class FloatDomain
        Returns:
        previous domain
      • unionAdapt

        public void unionAdapt​(FloatInterval i)
        It adds interval of values to the domain. It adds at the end without checks for the correctness of domain representation.
        Overrides:
        unionAdapt in class FloatDomain
        Parameters:
        i - Interval which needs to be added to the domain.
      • addLastElement

        public void addLastElement​(double i)
        It adds a value to the domain. It adds at the end without checks for the correctness of domain representation.
        Parameters:
        i - value to be added
      • addDom

        public void addDom​(FloatDomain domain)
        It adds values as specified by the parameter to the domain. The input parameter can not be an empty set.
        Overrides:
        addDom in class FloatDomain
        Parameters:
        domain - Domain which needs to be added to the domain.
      • unionAdapt

        public void unionAdapt​(double min,
                               double max)
        It adds all values between min and max to the domain.
        Specified by:
        unionAdapt in class FloatDomain
        Parameters:
        min - the left bound of the interval being added.
        max - the right bound of the interval being added.
      • isIntersecting

        public boolean isIntersecting​(FloatDomain domain)
        Checks if two domains intersect.
        Overrides:
        isIntersecting in class FloatDomain
        Parameters:
        domain - the domain for which intersection is checked.
        Returns:
        true if domains are intersecting.
      • isIntersecting

        public boolean isIntersecting​(double min,
                                      double max)
        Description copied from class: FloatDomain
        It checks if interval min..max intersects with current domain.
        Specified by:
        isIntersecting in class FloatDomain
        Parameters:
        min - the left bound of the interval.
        max - the right bound of the interval.
        Returns:
        true if domain intersects with the specified interval.
      • clear

        public void clear()
        It removes all elements.
        Specified by:
        clear in class Domain
      • cloneLight

        public FloatIntervalDomain cloneLight()
        It clones the domain object, only data responsible for encoding domain values is cloned. All other fields must be set separately.
        Specified by:
        cloneLight in class FloatDomain
        Returns:
        It returns a clone of this domain.
      • contains

        public boolean contains​(FloatDomain domain)
        It specifies if the current domain contains the domain given as a parameter. It assumes that input parameter does not represent an empty domain.
        Overrides:
        contains in class FloatDomain
        Parameters:
        domain - for which we check if it is contained in the current domain.
        Returns:
        true if the supplied domain is cover by this domain.
      • complement

        public FloatDomain complement()
        It creates a complement of a domain.
        Specified by:
        complement in class FloatDomain
        Returns:
        it returns the complement of this domain.
      • contains

        public boolean contains​(int value)
        It checks if value belongs to the domain.
        Overrides:
        contains in class FloatDomain
        Parameters:
        value - which is checked if it exists in the domain.
        Returns:
        true if value belongs to the domain.
      • contains

        public boolean contains​(double value)
        Specified by:
        contains in class FloatDomain
      • nextValue

        public double nextValue​(double value)
      • valueEnumeration

        public ValueEnumeration valueEnumeration()
        It returns value enumeration of the domain values.
        Specified by:
        valueEnumeration in class FloatDomain
        Returns:
        valueEnumeration which can be used to enumerate one by one value from this domain.
      • intervalEnumeration

        public IntervalEnumeration intervalEnumeration()
        It returns interval enumeration of the domain values.
        Specified by:
        intervalEnumeration in class FloatDomain
        Returns:
        intervalEnumeration which can be used to enumerate intervals in this domain.
      • eq

        public boolean eq​(FloatDomain domain)
        It checks if the domain is equal to the supplied domain.
        Overrides:
        eq in class FloatDomain
        Parameters:
        domain - the domain which is compared to this domain.
        Returns:
        true if both domains contain the same elements, false otherwise.
      • getSize

        public int getSize()
        It returns the size of the domain.
        Specified by:
        getSize in class FloatDomain
        Returns:
        number of elements in this domain.
      • getSizeFloat

        public double getSizeFloat()
      • intersect

        public FloatDomain intersect​(FloatDomain domain)
        It interesects current domain with the one given as a parameter.
        Specified by:
        intersect in class FloatDomain
        Parameters:
        domain - domain with which the intersection needs to be computed.
        Returns:
        the intersection between supplied domain and this domain.
      • intersect

        public FloatDomain intersect​(double min,
                                     double max)
        In intersects current domain with the domain min..max.
        Specified by:
        intersect in class FloatDomain
        Parameters:
        min - the left bound of the interval (inclusive)
        max - the right bound of the interval (inclusive)
        Returns:
        the intersection between the specified interval and this domain.
      • subtract

        public FloatDomain subtract​(double value)
        Description copied from class: FloatDomain
        It intersects with the domain which is a complement of value.
        Overrides:
        subtract in class FloatDomain
        Parameters:
        value - the value for which the complement is computed
        Returns:
        the domain which does not contain specified value.
      • isEmpty

        public boolean isEmpty()
        It returns true if given domain is empty.
        Specified by:
        isEmpty in class Domain
        Returns:
        true if the given domain is empty.
      • max

        public double max()
        It returns the maximum value in a domain.
        Specified by:
        max in class FloatDomain
        Returns:
        the largest value present in the domain.
      • min

        public double min()
        It returns the minimum value in a domain.
        Specified by:
        min in class FloatDomain
        Returns:
        the smallest value present in the domain.
      • removeInterval

        public void removeInterval​(int position)
        It removes the counter-th interval from the domain.
        Parameters:
        position - it specifies the position of the removed interval.
      • setDomain

        public void setDomain​(FloatDomain domain)
        It sets the domain to the specified domain.
        Specified by:
        setDomain in class FloatDomain
        Parameters:
        domain - the domain from which this domain takes all elements.
      • setDomain

        public void setDomain​(double min,
                              double max)
        It sets the domain to all values between min and max.
        Specified by:
        setDomain in class FloatDomain
        Parameters:
        min - the left bound of the interval (inclusive).
        max - the right bound of the interval (inclusive).
      • singleton

        public boolean singleton()
        It returns true if given domain has only one element.
        Specified by:
        singleton in class Domain
        Returns:
        true if the domain contains only one element.
      • singleton

        public boolean singleton​(double c)
        It returns true if given domain has only one element equal c.
        Overrides:
        singleton in class FloatDomain
        Parameters:
        c - the value to which the only element should be equal to.
        Returns:
        true if the domain contains only one element c.
      • subtract

        public FloatDomain subtract​(FloatDomain domain)
        It subtracts domain from current domain and returns the result.
        Overrides:
        subtract in class FloatDomain
        Parameters:
        domain - the domain which is subtracted from this domain.
        Returns:
        the result of the subtraction.
      • subtract

        public FloatIntervalDomain subtract​(double min,
                                            double max)
        It subtracts min..max from current domain and returns the result.
        Specified by:
        subtract in class FloatDomain
        Parameters:
        min - the left bound of the interval (inclusive).
        max - the right bound of the interval (inclusive).
        Returns:
        the result of the subtraction.
      • union

        public FloatDomain union​(FloatDomain domain)
        It computes union of dom1 from dom2 and returns the result.
        Overrides:
        union in class FloatDomain
        Parameters:
        domain - the domain for which the union is computed.
        Returns:
        the union of this domain with the supplied one.
      • union

        public FloatDomain union​(double min,
                                 double max)
        It computes union of current domain and an interval min..max;
        Overrides:
        union in class FloatDomain
        Parameters:
        min - the left bound of the interval (inclusive).
        max - the right bound of the interval (inclusive).
        Returns:
        the union of this domain and the interval.
      • union

        public FloatDomain union​(double value)
        It computes union of dom1 and value and returns the result.
        Overrides:
        union in class FloatDomain
        Parameters:
        value - it specifies the value which is being added.
        Returns:
        domain which is a union of this one and the value.
      • toString

        public java.lang.String toString()
        It returns string description of the domain (only values in the domain).
        Specified by:
        toString in class Domain
      • toStringConstraints

        public java.lang.String toStringConstraints()
        It returns string description of the constraints attached to the domain.
        Specified by:
        toStringConstraints in class Domain
        Returns:
        the string description.
      • toStringFull

        public java.lang.String toStringFull()
        It returns complete string description containing all relevant information.
        Specified by:
        toStringFull in class Domain
        Returns:
        complete description of the domain.
      • inMin

        public void inMin​(int storeLevel,
                          Var var,
                          double min)
        It updates the domain according to the minimum value and stamp value. It informs the variable of a change if it occurred.
        Overrides:
        inMin in class FloatDomain
        Parameters:
        storeLevel - level of the store at which the update occurs.
        var - variable for which this domain is used.
        min - the minimum value to which the domain is updated.
      • inMax

        public void inMax​(int storeLevel,
                          Var var,
                          double max)
        It updates the domain according to the maximum value and stamp value. It informs the variable of a change if it occurred.
        Overrides:
        inMax in class FloatDomain
        Parameters:
        storeLevel - level of the store at which the update occurs.
        var - variable for which this domain is used.
        max - the maximum value to which the domain is updated.
      • in

        public void in​(int storeLevel,
                       Var var,
                       double min,
                       double max)
        It updates the domain to have values only within the interval min..max. The type of update is decided by the value of stamp. It informs the variable of a change if it occurred.
        Specified by:
        in in class FloatDomain
        Parameters:
        storeLevel - level of the store at which the update occurs.
        var - variable for which this domain is used.
        min - the minimum value to which the domain is updated.
        max - the maximum value to which the domain is updated.
      • in

        public void in​(int storeLevel,
                       Var var,
                       FloatDomain domain)
        It updates the domain to have values only within the domain. The type of update is decided by the value of stamp. It informs the variable of a change if it occurred.
        Overrides:
        in in class FloatDomain
        Parameters:
        storeLevel - level of the store at which the update occurs.
        var - variable for which this domain is used.
        domain - the domain according to which the domain is updated.
      • noIntervals

        public int noIntervals()
        It returns the number intervals into which this domain is split.
        Specified by:
        noIntervals in class FloatDomain
        Returns:
        the number of intervals in the domain.
      • intervalNo

        public int intervalNo​(double value)
        It specifies the position of the interval which contains specified value.
        Parameters:
        value - value for which an interval containing it is searched.
        Returns:
        the position of the interval containing the specified value.
      • getInterval

        public FloatInterval getInterval​(int position)
        Description copied from class: FloatDomain
        It returns required interval.
        Specified by:
        getInterval in class FloatDomain
        Parameters:
        position - the position of the interval.
        Returns:
        the interval, or null if the required interval does not exist.
      • inComplement

        public void inComplement​(int storeLevel,
                                 Var var,
                                 double complement)
        It updates the domain to not contain the value complement. It informs the variable of a change if it occurred.
        Overrides:
        inComplement in class FloatDomain
        Parameters:
        storeLevel - level of the store at which the update occurs.
        var - variable for which this domain is used.
        complement - value which is removed from the domain if it belonged to the domain.
      • inComplement

        public void inComplement​(int storeLevel,
                                 Var var,
                                 double min,
                                 double max)
        Description copied from class: FloatDomain
        It updates the domain so it does not contain the supplied interval. It informs the variable of a change if it occurred.
        Specified by:
        inComplement in class FloatDomain
        Parameters:
        storeLevel - level of the store at which the update occurs.
        var - variable for which this domain is used.
        min - the left bound of the interval (inclusive).
        max - the right bound of the interval (inclusive).
      • inShift

        public void inShift​(int storeLevel,
                            Var var,
                            FloatDomain domain,
                            double shift)
        It updates the domain to contain the elements as specifed by the domain, which is shifted. E.g. {1..4} + 3 = 4..7
        Specified by:
        inShift in class FloatDomain
        Parameters:
        storeLevel - level of the store at which the update occurs.
        var - variable for which this domain is used.
        domain - the domain according to which the domain is updated.
        shift - the shift which is used to shift the domain supplied as argument.
      • isSparseRepresentation

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

        public boolean isNumeric()
        It specifies if domain is a finite domain of numeric values (integers).
        Specified by:
        isNumeric in class Domain
        Returns:
        true if domains contains numeric values.
      • leftElement

        public double leftElement​(int intervalNo)
        It returns the left most element of the given interval.
        Overrides:
        leftElement in class FloatDomain
        Parameters:
        intervalNo - the interval number.
        Returns:
        the left bound of the specified interval.
      • rightElement

        public double rightElement​(int intervalNo)
        It returns the left most element of the given interval.
        Overrides:
        rightElement in class FloatDomain
        Parameters:
        intervalNo - the interval number.
        Returns:
        the right bound of the specified interval.
      • removeLevel

        public void removeLevel​(int level,
                                Var var)
        It removes a level of a domain. If domain is represented as a list of domains, the domain pointer within variable will be updated.
        Specified by:
        removeLevel in class Domain
        Parameters:
        level - the level which is being removed.
        var - the variable to which this domain belonged to.
      • putSearchConstraint

        public 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 vector of constraints if vector was not cloned.
        Specified by:
        putSearchConstraint in class Domain
        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.
      • removeSearchConstraint

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

        public 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.
        Specified by:
        removeSearchConstraint in class Domain
        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.
      • recentDomainPruning

        public FloatDomain recentDomainPruning​(int storeLevel)
        It removes a constraint from a domain, it should only be called by removeConstraint function of Variable object.
        Specified by:
        recentDomainPruning in class FloatDomain
        Parameters:
        storeLevel - the current store level.
        Returns:
        emptyDomain if domain did not change at current level, or the set of values which have been removed at current level.
      • sizeConstraintsOriginal

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

        public java.lang.String checkInvariants()
        It is a function to check if the object is in consistent state.
        Specified by:
        checkInvariants in class Domain
        Returns:
        String describing the violated invariant, null if no invariant is violated.
      • unionAdapt

        public void unionAdapt​(double value)
        Description copied from class: FloatDomain
        It adds a values to the domain.
        Overrides:
        unionAdapt in class FloatDomain
        Parameters:
        value - value being added to the domain.
      • subtractAdapt

        public void subtractAdapt​(double value)
        Description copied from class: FloatDomain
        It removes value from the domain. It adapts current (this) domain.
        Specified by:
        subtractAdapt in class FloatDomain
        Parameters:
        value - the value for which the complement is computed
      • subtractAdapt

        public void subtractAdapt​(double minValue,
                                  double maxValue)
        Description copied from class: FloatDomain
        It removes all values between min and max to the domain.
        Specified by:
        subtractAdapt in class FloatDomain
        Parameters:
        minValue - the left bound of the interval being removed.
        maxValue - the right bound of the interval being removed.
      • intersectAdapt

        public int intersectAdapt​(FloatDomain domain)
        Description copied from class: FloatDomain
        It computes an intersection with a given domain and stores it in this domain.
        Specified by:
        intersectAdapt in class FloatDomain
        Parameters:
        domain - domain with which the intersection is being computed.
        Returns:
        type of event which has occurred due to the operation.
      • unionAdapt

        public int unionAdapt​(FloatDomain union)
        Description copied from class: FloatDomain
        It computes a union between this domain and the domain provided as a parameter. This domain is changed to reflect the result.
        Overrides:
        unionAdapt in class FloatDomain
        Parameters:
        union - the domain with is used for the union operation with this domain.
        Returns:
        it returns information about the pruning event which has occurred due to this operation.
      • intersectAdapt

        public int intersectAdapt​(int min,
                                  int max)
        Description copied from class: FloatDomain
        It computes an intersection of this domain with an interval [min..max]. It adapts this domain to the result of the intersection.
        Specified by:
        intersectAdapt in class FloatDomain
        Parameters:
        min - the minimum value of the interval used in the intersection computation.
        max - the maximum value of the interval used in the intersection computation.
        Returns:
        it returns information about the pruning event which has occurred due to this operation.
      • sizeOfIntersection

        public int sizeOfIntersection​(FloatDomain domain)
        Description copied from class: FloatDomain
        It computes the size of the intersection between this domain and the domain supplied as a parameter.
        Overrides:
        sizeOfIntersection in class FloatDomain
        Parameters:
        domain - the domain with which the intersection is computed.
        Returns:
        the size of the intersection.
      • contains

        public boolean contains​(double min,
                                double max)
        Description copied from class: FloatDomain
        It checks if an interval min..max belongs to the domain.
        Specified by:
        contains in class FloatDomain
        Parameters:
        min - the minimum value of the interval being checked
        max - the maximum value of the interval being checked
        Returns:
        true if value belongs to the domain.