Class Diff2

All Implemented Interfaces:
SatisfiedPresent, Stateful, UsesQueueVariable

public class Diff2 extends Diff
Diff2 constraint assures that any two rectangles from a vector of rectangles does not overlap in at least one direction.

Zero-width rectangles can be packed anywhere.

Version:
4.8
  • Field Details

    • idNumber

      static AtomicInteger idNumber
    • EvalRects

      Diff2Var[] EvalRects
    • exceptionListPresent

      boolean exceptionListPresent
    • exclusiveList

      public int[] exclusiveList
      It specifies a list of pairs of rectangles which can overlap.
  • Constructor Details

    • Diff2

      public Diff2(Rectangle[] rectangles, int[] exclusiveList, boolean doProfile)
      Conditional Diff2. The rectangles that are specified on the list Exclusive list is specified contains pairs of rectangles that are excluded from checking that they must be non-overlapping. The rectangles are numbered from 1, for example list [1, 3, 3, 4] specifies that rectangles 1 and 3 as well as 3 and 4 can overlap each other.
      Parameters:
      rectangles - a list of rectangles.
      exclusiveList - a list denoting the pair of rectangles, which can overlap
      doProfile - should profile be computed and used.
    • Diff2

      public Diff2(List<IntVar> o1, List<IntVar> o2, List<IntVar> l1, List<IntVar> l2, boolean profile)
      It creates a diff2 constraint.
      Parameters:
      o1 - list of variables denoting the origin in the first dimension.
      o2 - list of variables denoting the origin in the second dimension.
      l1 - list of variables denoting the length in the first dimension.
      l2 - list of variables denoting the length in the second dimension.
      profile - specifies if the profile should be computed.
    • Diff2

      public Diff2(List<? extends List<? extends IntVar>> rectangles)
      It creates a diff2 constraint.
      Parameters:
      rectangles - list of rectangles with origins and lengths in both dimensions.
    • Diff2

      public Diff2(List<? extends List<? extends IntVar>> rectangles, boolean profile)
      It creates a diff2 constraint.
      Parameters:
      rectangles - list of rectangles with origins and lengths in both dimensions.
      profile - specifies if the profile is computed and used.
    • Diff2

      public Diff2(List<? extends IntVar> o1, List<? extends IntVar> o2, List<? extends IntVar> l1, List<? extends IntVar> l2)
      It creates a diff2 constraint.
      Parameters:
      o1 - list of variables denoting the origin in the first dimension.
      o2 - list of variables denoting the origin in the second dimension.
      l1 - list of variables denoting the length in the first dimension.
      l2 - list of variables denoting the length in the second dimension.
    • Diff2

      public Diff2(IntVar[] origin1, IntVar[] origin2, IntVar[] length1, IntVar[] length2)
      It creates a diff2 constraint.
      Parameters:
      origin1 - list of variables denoting the origin in the first dimension.
      origin2 - list of variables denoting the origin in the second dimension.
      length1 - list of variables denoting the length in the first dimension.
      length2 - list of variables denoting the length in the second dimension.
    • Diff2

      public Diff2(IntVar[] o1, IntVar[] o2, IntVar[] l1, IntVar[] l2, boolean profile)
      It creates a diff2 constraint.
      Parameters:
      o1 - list of variables denoting the origin in the first dimension.
      o2 - list of variables denoting the origin in the second dimension.
      l1 - list of variables denoting the length in the first dimension.
      l2 - list of variables denoting the length in the second dimension.
      profile - specifies if the profile should be computed.
    • Diff2

      public Diff2(IntVar[][] rectangles)
      It creates a diff2 constraint.
      Parameters:
      rectangles - list of rectangles with origins and lengths in both dimensions.
    • Diff2

      public Diff2(IntVar[][] rectangles, boolean profile)
      It creates a diff2 constraint.
      Parameters:
      rectangles - list of rectangles with origins and lengths in both dimensions.
      profile - specifies if the profile is computed and used.
    • Diff2

      public Diff2(List<List<IntVar>> rectangles, List<List<Integer>> exclusiveList)
      Conditional Diff2. The rectangles that are specified on the list Exclusive are excluded from checking that they must be non-overlapping. The rectangles are numbered from 1, for example list [[1,3], [3,4]] specifies that rectangles 1 and 3 as well as 3 and 4 can overlap each other.
      Parameters:
      rectangles - - list of rectangles, each rectangle represented by a list of variables.
      exclusiveList - - list of rectangles pairs which can overlap.
    • Diff2

      public Diff2(IntVar[][] rect, List<List<Integer>> exclusive)
      Conditional Diff2. The rectangles that are specified on the list Exclusive are excluded from checking that they must be non-overlapping. The rectangles are numbered from 1, for example list [[1,3], [3,4]] specifies that rectangles 1 and 3 as well as 3 and 4 can overlap each other.
      Parameters:
      rect - - list of rectangles, each rectangle represented by a list of variables.
      exclusive - - list of rectangles pairs which can overlap.
  • Method Details

    • onList

      private Rectangle[] onList(int index, int[] exclusiveList)
    • notOverlapping

      boolean notOverlapping(int i, int j, int[] exclusiveList)
    • impose

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

      void narrowRectangles(Set<IntVar> fdvQueue)
      Overrides:
      narrowRectangles in class Diff
    • findRectangles

      boolean findRectangles(Rectangle r, int index, List<IntRectangle> UsedRect, List<Rectangle> ProfileCandidates, List<Rectangle> OverlappingRects, Set<IntVar> fdvQueue)
    • 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 Diff
      Returns:
      true if constraint is possible to verify that it is satisfied.
    • toString

      public String toString()
      Description copied from class: Constraint
      It produces a string representation of a constraint state.
      Overrides:
      toString in class Diff