The CLP Procedure

CUMULATIVE Statement

  • CUMULATIVE cumulative_constraint-1 <…cumulative_constraint-n>;

Each cumulative_constraint is specified in the following form, where the options can be specified in any order and are subject to the restrictions that follow:

(<START=(list)> <DURATION=(list)> <END=(list)> <DEMAND=(list)> <CAPACITY=capacity> )

  • You must specify at least two of the START=, DURATION=, and END= options.

  • At least one of the START=, DURATION=, and END= options must specify a list of numeric variables.

  • The number of values in the lists that are specified in the START=, DURATION=, END=, and DEMAND= options must be the same.

The CUMULATIVE statement specifies one or more cumulative (scheduling) constraints. A cumulative constraint conveys that a collection of tasks (activities) is to be executed on a resource that has limited capacity. Each task is defined by its start time, duration (processing time), end time (finish time), and demand (resource usage). A task i is said to overlap a time point t if and only if its start time is less than or equal to t and its end time is strictly greater than t. The cumulative constraint enforces that at each point in time, the accumulated demand (resource usage) of the tasks that overlap the time point does not exceed the specified capacity of the resource.

A cumulative constraint also enforces the following equation for all tasks i:

normal s normal t normal a normal r normal t normal bar normal t normal i normal m normal e left-bracket i right-bracket plus normal d normal u normal r normal a normal t normal i normal o normal n left-bracket i right-bracket equals normal e normal n normal d normal bar normal t normal i normal m normal e left-bracket i right-bracket

You can specify the following options (you must specify at least two of the START=, END=, and DURATION= options):

START=(variables |integers )

specifies a list of task starting times. If you specify this option, the number of variables or integers must match the number of variables or integers that are specified in each of the specified END=, DURATION=, and DEMAND= options.

DURATION=(variables |nonnegative-integers )
DUR=(variables |nonnegative-integers )

specifies a list of task processing durations. If you specify this option, the number of variables or nonnegative-integers must match the number of variables or integers that are specified in each of the specified START=, END=, and DEMAND= options.

END=(variables |integers )

specifies a list of task ending times. If you specify this option, the number of variables or integers must match the number of variables or integers that are specified in each of the specified START=, DURATION=, and DEMAND= options.

DEMAND=(variables |nonnegative-integers )
HEIGHT=(variables |nonnegative-integers )

specifies a list of task demands. If you specify this option, the number of variables or nonnegative-integers must match the number of variables or integers that are specified in each of the specified START=, END=, and DURATION= options. If you omit this option, the demand of each corresponding task is 1.

CAPACITY=variable |nonnegative-integer
LIMIT=variable |nonnegative-integer

specifies the capacity limit of the corresponding resource. If you omit this option, the capacity of each corresponding resource is 1.

Last updated: January 26, 2024