Cumul function expressions

Cumulative function expressions represent the cumulative usage of renewable resources. .

In scheduling problems involving cumulative resources (also known as renewable resources), the cumulated usage of the resource by the activities is usually represented by a function of time. An activity usually increases the cumulated resource usage function at its start time and decreases it when it releases the resource at its end time (pulse function). For resources that can be produced and consumed by activities (for instance the content of an inventory or a tank), the resource level can also be described as a function of time, production activities will increase the resource level whereas consuming activities will decrease it. In these type of problems, the cumulated contribution of activities on the resource can be represented by a function of time and constraints can be posted on this function, for instance a maximal or a safety level.

CP Optimizer introduces the notion of cumulative (cumul) function expression which is a function that represents the sum of individual contributions of intervals. A family of elementary cumul function expressions describes the individual contribution of an interval variable (or a fixed interval of time). These expressions cover the main use-cases mentioned previously: pulse for usage of a cumulative resource, step for resource production/consumption. When the elementary cumul functions that define a cumul function are fixed (and thus, so are their related intervals), the expression is fixed. CP Optimizer provides several constraints over cumul functions. These constraints allow restriction of the possible values of the function over the complete horizon or over some fixed or variable interval. For applications where the actual quantity of resource that is used, produced or consumed by intervals is an unknown of the problem, expressions are available for constraining these quantities.

In the C++ API of CP Optimizer, the class IloCumulFunctionExpr represents a cumul function expression.

In the Java™ API of CP Optimizer, the method IloCP.cumulFunctionExpr returns a cumul function expression.

In the C# API of CP Optimizer, the method CP.CumulFunctionExpr returns a cumul function expression.