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.9
  • Field Details

    • chainLength

      int chainLength
    • firstConsistencyCheck

      boolean firstConsistencyCheck
    • graph

      MutableVar[] graph
    • idd

      int idd
    • sccLength

      int sccLength
    • val

      int[] val
    • idNumber

      static AtomicInteger idNumber
    • valueIndex

      Hashtable<Var,Integer> valueIndex
    • firstConsistencyLevel

      int firstConsistencyLevel
    • graphDominance

    • random

      Random random
  • Constructor Details

    • Circuit

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

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

    • 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, LinkedHashSet<IntVar> fdvs)
    • firstNode

      int firstNode(int current)
    • getDefaultConsistencyPruningEvent

      public int getDefaultConsistencyPruningEvent()
      Overrides:
      getDefaultConsistencyPruningEvent in class Alldiff
    • 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, 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 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)