Function cp::ParallelSchedule(resourceCapacity, jobBinding, jobBegin, jobDuration, jobEnd, jobWeight)

# cp::ParallelSchedule

The function cp::ParallelSchedule(c,j,s_j,d_j,e_j,w_j) models a resource that can handle multiple jobs $$j$$ at the same time. The capacity of the resource is $$c$$ units. The job $$j$$ starts at period $$s_j$$ and is active up to but not including period $$e_j$$, during $$d_j$$ periods. Job $$j$$ requires (a weight of) $$w_j$$ units of the resource.

## Mathematical Formulation

cp::ParallelSchedule(c,j,s_j,d_j,e_j,w_j) is equivalent to

$\begin{split}\begin{array}{l} \forall t: \sum_{j|s_j\leq{}t<e_j} w_j\leq c \\ \forall j: s_j + d_j = e_j. \end{array}\end{split}$

## Function Prototype

cp::ParallelSchedule(
resourceCapacity,  ! (input) an expression
jobBinding,        ! (input) an index binding
jobBegin,          ! (input/output) an expression
jobDuration,       ! (input/output) an expression
jobEnd,            ! (input/output) an expression
jobWeight          ! (input/output) an expression
)


## Arguments

resourceCapacity

This argument is the capacity that the single resource has available to handle multiple jobs at the same time. It is a integer valued expression and the unit of measurement of this expression should be commensurate to the unit of measurement of jobWeight. This expression may not involve variables.

jobBinding

The index binding that specifies the jobs that need to be scheduled.

jobBegin

An expression that involves variables. When this function is used in a constraint definition it should involve variables. The result is a vector with an element for each possible value of the indices in jobBinding. This argument is integer or element valued, i.e. no string, fractional or unit values.

jobDuration

An expression that may involve variables. The result of this expression is an integer non-negative value. The result is a vector with an element for each possible value of the indices in jobBinding. This argument is integer valued, i.e. no element, string, fractional or unit values, but elements from the set Integers are allowed.

jobEnd

An expression that involves variables. When this function is used in a constraint definition it should involve variables. This expression has the same data type as jobBegin. The result is a vector with an element for each possible value of the indices in jobBinding. This argument is integer or element valued, i.e. no string, fractional or unit values.

jobWeight

An expression that may involve variables. The result of this expression is an integer non-negative value. The unit of measurement of this expression is commensurate with the unit of measurement of lowerLimit and upperLimit. The result is a vector with an element for each possible value of the indices in jobBinding. This argument is integer valued, i.e. no element, string, fractional or unit values, but elements from the set Integers are allowed.

This argument is integer or element valued, i.e. no string, fractional or unit values.

## Return Value

This function returns 1 if the jobs can be scheduled within the resource limits. If the index domain argument jobBinding is empty, this function also returns 1. Otherwise it returns 0.

Note

• The arguments of this function involve discrete AIMMS variables and AIMMS parameters, not AIMMS activities.

• This and similar constraints are also known in the Constraint Programming literature as Cumulative constraints.