Class Cumulative

Direct Known Subclasses:
CumulativeUnary

public class Cumulative extends CumulativeBasic
Cumulative implements the scheduling constraint using

edge-finding (edgeFind) algorithms based on

Petr Vilim, "Edge Finding Filtering Algorithm for Discrete Cumulative Resources in O(kn log n)", Principles and Practice of Constraint Programming - CP 2009 Volume 5732 of the series Lecture Notes in Computer Science pp 802-816.

and

Joseph Scott, "Filtering Algorithms for Discrete Cumulative Resources", MSc thesis, Uppsala University, Department of Information Technology, 2010, no IT 10 048,

edge-finding algorithm with quadratic complexity (edgeFindQuad) is based on

Roger Kameugne, Laure Pauline Fotso, Joseph Scott, and Youcheu Ngo-Kateu, "A quadratic edge-finding filtering algorithm for cumulative resource constraints", Constraints, 2014, July, vol. 19, no. 3, pp. 243--269.

Version:
4.8
See Also:
  • Field Details

    • taskReversed

      TaskView[] taskReversed
    • doEdgeFind

      private boolean doEdgeFind
    • doQuadraticEdgeFind

      private boolean doQuadraticEdgeFind
    • preComputedCapacities

      private Set<Integer> preComputedCapacities
    • preComputedCapMap

      private int[] preComputedCapMap
    • taskIncEstComparator

      protected Comparator<TaskView> taskIncEstComparator
    • taskDecLctComparator

      protected Comparator<TaskView> taskDecLctComparator
  • Constructor Details

    • Cumulative

      public Cumulative(IntVar[] starts, IntVar[] durations, IntVar[] resources, IntVar limit)
      It creates a cumulative constraint.
      Parameters:
      starts - variables denoting starts of the tasks.
      durations - variables denoting durations of the tasks.
      resources - variables denoting resource usage of the tasks.
      limit - the overall limit of resources which has to be used.
    • Cumulative

      public Cumulative(List<? extends IntVar> starts, List<? extends IntVar> durations, List<? extends IntVar> resources, IntVar limit)
      It creates a cumulative constraint.
      Parameters:
      starts - variables denoting starts of the tasks.
      durations - variables denoting durations of the tasks.
      resources - variables denoting resource usage of the tasks.
      limit - the overall limit of resources which has to be used.
  • Method Details

    • doQuadraticEdgeFind

      public void doQuadraticEdgeFind(boolean doQEF)
    • 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 CumulativeBasic
      Parameters:
      store - constraint store within which the constraint consistency is being checked.
    • edgeFind

      private void edgeFind(Store store)
    • edgeFind

      private void edgeFind(Store store, TaskView[] tn)
    • detectOrder

      private int[] detectOrder(ThetaLambdaTree tree, TaskView[] t, int[] lctInvOrder, long C)
    • adjustBounds

      private void adjustBounds(Store store, ThetaLambdaTree tree, TaskView[] t, int[] prec, long cap)
    • edgeFindQuad

      private void edgeFindQuad(Store store)
    • edgeFindQuad

      private void edgeFindQuad(Store store, TaskView[] tn)
    • filterZeroTasks

      TaskView[] filterZeroTasks(TaskView[] ts)
    • getDefaultConsistencyPruningEvent

      public int getDefaultConsistencyPruningEvent()
      Overrides:
      getDefaultConsistencyPruningEvent in class CumulativeBasic
    • toString

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

      private long divRoundUp(long a, long b)