Class Circuit

  • All Implemented Interfaces:
    SatisfiedPresent, Stateful, UsesQueueVariable

    public class Circuit
    extends Alldiff
    implements Stateful
    Circuit constraint assures that all variables build a Hamiltonian circuit. Value of every variable x[i] points to the next variable in the circuit. Variables create one circuit.
    Version:
    4.8
    • Field Detail

      • chainLength

        int chainLength
      • firstConsistencyCheck

        boolean firstConsistencyCheck
      • idd

        int idd
      • sccLength

        int sccLength
      • val

        int[] val
      • idNumber

        static java.util.concurrent.atomic.AtomicInteger idNumber
      • valueIndex

        java.util.Hashtable<Var,​java.lang.Integer> valueIndex
      • firstConsistencyLevel

        int firstConsistencyLevel
      • random

        java.util.Random random
    • Constructor Detail

      • Circuit

        public Circuit​(IntVar[] list)
        It constructs a circuit constraint.
        Parameters:
        list - variables which must form a circuit.
      • Circuit

        public Circuit​(java.util.List<IntVar> list)
        It constructs a circuit constraint.
        Parameters:
        list - variables which must form a circuit.
    • Method Detail

      • consistency

        public void consistency​(Store store)
        Description copied from class: Constraint
        It is a (most probably incomplete) consistency function which removes the values from variables domains. Only values which do not have any support in a solution space are removed.
        Overrides:
        consistency in class Alldiff
        Parameters:
        store - constraint store within which the constraint consistency is being checked.
      • alldifferent

        void alldifferent​(Store store,
                          java.util.LinkedHashSet<IntVar> fdvs)
      • firstNode

        int firstNode​(int current)
      • impose

        public void impose​(Store store)
        Description copied from class: Constraint
        It imposes the constraint in a given store.
        Overrides:
        impose in class Alldiff
        Parameters:
        store - the constraint store to which the constraint is imposed to.
      • lastNode

        int lastNode​(Store store,
                     int current)
      • oneCircuit

        void oneCircuit​(Store store,
                        java.util.LinkedHashSet<IntVar> fdvs)
      • satisfied

        public boolean satisfied()
        Description copied from interface: SatisfiedPresent
        It checks if the constraint is satisfied. It can return false even if constraint is satisfied but not all variables in its scope are grounded. It needs to return true if all variables in its scope are grounded and constraint is satisfied.

        Implementations of this interface for constraints that are not PrimitiveConstraint may require constraint imposition and consistency check as a requirement to work correctly.

        Specified by:
        satisfied in interface SatisfiedPresent
        Overrides:
        satisfied in class Alldifferent
        Returns:
        true if constraint is possible to verify that it is satisfied.
      • sccs

        void sccs​(Store store)
      • toString

        public java.lang.String toString()
        Description copied from class: Constraint
        It produces a string representation of a constraint state.
        Overrides:
        toString in class Alldiff
      • removeLevel

        public void removeLevel​(int level)
        Description copied from interface: Stateful
        This function is called in case of the backtrack, so a constraint can clear the queue of changed variables which is no longer valid. This function is called *before* all timestamps, variables, mutablevariables have reverted to their previous value.
        Specified by:
        removeLevel in interface Stateful
        Parameters:
        level - the level which is being removed.
      • updateChains

        void updateChains​(IntVar v)
      • visit

        int visit​(int k)
      • dominanceFilter

        private void dominanceFilter()
      • graphDominance

        private boolean graphDominance​(int root)
      • reversedGraphDominance

        private boolean reversedGraphDominance​(int root)