
<ConsistencyModule:> cumulatives_min(+StartTimes, +Durations, +Heights, +Assigned, +MachineConsumptions)

   Multi-resource cumulatives constraint on specified tasks with required minimum resource consumptions.

Arguments
   StartTimes          Collection of N start times for tasks (domain variables or integers)
   Durations           Collection of N duration for tasks (domain variables or integers)
   Heights             Collection of N resource usages (positive) or productions (negative) by tasks (domain variables or integers) with the assigned machine
   Assigned            Collection of N ID of machine assigned to tasks (domain variables or integers)
   MachineConsumptions Collection of M minimum amount of resource consumptions for machines (integers)

Type
   library(gfd)

Description

   A multi-resource cumulatives scheduling constraint - scheduling of M
   machines providing resources for N tasks. StartTimes, Durations, Heights 
   and Assigned are collections (a la collection_to_list/2) of equal size N 
   of domain variables or integers. MinUsages is a collection of M 
   integers. The declarative meaning is:
   If there are N tasks and M machines, each machine having a minimum of 
   produce that must be consumed at any single time-point, and each task 
   starting at a certain start  time, having a certain duration and 
   consuming/producing a certain (constant) amount of produce for the 
   machine assigned to the task, then the sum of resource consumption for each
   machine by all the tasks must be at least the minimum for that machine at
   any time. 

   Any input variables which are not already domain variables are turned
   into domain variables with default domain.

   This constraint generalise the cumulative constraint to multi-resources,
   and is also more flexible, in that tasks can both produce and consume a
   resource.

    Note that the Gecode implementation of this constraint has index starting
    from 0, i.e. the numbering for the machines starts from 0. These native 
    indices are mapped to the  ECLiPSe indices starting from 1 with an 
    additional dummy zero'th machine that is not used. A version of this 
    constraint that uses native Gecode indexing is available 
    as cumulatives_min_g/5.

    ConsistencyModule is the optional module specification to give the 
    consistency level for the propagation for this constraint: 
    gfd_vc for value consistency.

    This constraint is known as cumulatives in the global constraint
    catalog, where CTR is "greater than or equal to" case  The constraint is 
    implemented using Gecode's cumulatives constraint (with extra constraints 
    on task end-times if any task duration is a domain variable).


Examples
   

[eclipse 7]: cumulatives_min([2,1,4,2,5,3,1],[-2,4,2,3,2,2,4],
                [2,1,-1,2, 2,-1,1], [1,1,1,1,1,2,2], [1,0]).  % Succeed
 
[eclipse 8]: cumulatives_min([2,1,4,2,5,3,1],[2,4,2,3,2,2,4],
                [-2,1,-1,2,2,-1,1], [1,1,1,1,1,2,2], [1,1]). % fails 




See Also
   disjunctive / 2, cumulatives / 5, eclipse_6 : collection_to_list / 2, lists : collection_to_list / 2, cumulative / 4
