The CLP Procedure

SCHEDULE Statement

  • SCHEDULE options;

  • SCHED options;

The following options can appear in the SCHEDULE statement.

ACTASSIGN= keyword

specifies the activity assignment strategy subject to the activity selection strategy, which is specified by the ACTSELECT= option. After an activity has been selected, the activity assignment strategy determines a start time and a set of resources (if applicable based on resource requirements) for the selected activity.

By default, an activity is assigned its earliest possible start time.

If an activity has any resource requirements, then the activity is assigned a set of resources as follows:

MAXTW

selects the set of resources that supports the assigned start time and affords the maximum time window of availability for the activity. Ties are broken randomly.

RAND

randomly selects a set of resources that support the selected start time for the activity.

For example, Figure 3.4 illustrates possible start times for a single activity which requires one of the resources R1, R2, R3, R4, R5, or R6. The bars depict the possible start times that are supported by each of the resources for the duration of the activity.

Figure 3.4: Range of Possible Start Times by Resource

Range of Possible Start Times by Resource


Default behavior dictates that the activity is assigned its earliest possible start time of 6. Then, one of the resources that supports the selected start time (R1 and R2) is assigned. Specifically, if ACTASSIGN=RAND, the strategy randomly selects between R1 and R2. If ACTASSIGN=MAXTW, the strategy selects R2 because R1 has a smaller time window.

There is one exception to the preceding assignments. When ACTSELECT=RJRAND, an activity is assigned its latest possible start time. For the example in Figure 3.4, the activity is assigned its latest possible start time of 13 and one of R4, R5, or R6 is assigned. Specifically, if ACTASSIGN=RAND, the strategy randomly selects between R4, R5, and R6. If ACTASSIGN=MAXTW, the strategy randomly selects between R5 and R6 because their time windows are the same size (larger than the time window of R4).

The default activity assignment strategy is RAND. For assigning variables, use the VARASSIGN= option in the PROC CLP statement.

ACTSELECT= keyword

specifies the activity selection strategy. The activity selection strategy can be randomized or deterministic.

The following selection strategies use a random heuristic to break ties:

MAXD

selects an activity at random from those that begin prior to the earliest early finish time and that have maximum duration.

MINA

selects an activity at random from those that begin prior to the earliest early finish time and that have the minimum number of resource assignments.

MINLS

selects an activity at random from those that begin prior to the earliest early finish time and that have a minimum late start time.

PRIORITY

selects an activity at random from those that have the highest priority.

RAND

selects an activity at random from those that begin prior to the earliest early finish time. This strategy was proposed by Nuijten (1994).

RJRAND

selects an activity at random from those that finish after the latest late start time.

The following are deterministic selection strategies:

DET

selects the first activity that begins prior to the earliest activity finish time.

DMINLS

selects the activity with the earliest late start time.

The first activity is defined according to its appearance in the following order of precedence:

  1. ACTIVITY statement

  2. REQUIRES statement

  3. ACTDATA= data set

The default activity selection strategy is RAND. For selecting variables, use the VARSELECT= option in the PROC CLP statement.

DURATION= dur
SCHEDDUR=dur
DUR=dur

specifies the duration of the schedule. The DURATION= option imposes a constraint that the duration of the schedule does not exceed the specified value.

EDGEFINDER <=eftype>
EDGE <=eftype>

activates the edge-finder consistency routines for scheduling CSPs. By default, the EDGEFINDER= option is inactive. Specifying the EDGEFINDER= option determines whether an activity must be the first or the last to be processed from a set of activities that require a given resource or set of resources and prunes the domain of the activity appropriately.

Valid values for the eftype keyword are FIRST, LAST, or BOTH. Note that eftype is an optional argument, and that specifying EDGEFINDER by itself is equivalent to specifying EDGEFINDER=LAST. The interpretation of each of these keywords is described as follows:

  • FIRST: The edge-finder algorithm attempts to determine whether an activity must be processed first from a set of activities that require a given resource or set of resources and prunes its domain appropriately.

  • LAST: The edge-finder algorithm attempts to determine whether an activity must be processed last from a set of activities that require a given resource or set of resources and prunes its domain appropriately.

  • BOTH: This is equivalent to specifying both FIRST and LAST. The edge-finder algorithm attempts to determine which activities must be first and which activities must be last, and updates their domains as necessary.

There are several extensions to the edge-finder consistency routines. These extensions are invoked by using the NOTFIRST= and NOTLAST= options in the SCHEDULE statement. For more information about options that are related to edge-finder consistency routines, see the section Edge Finding.

EVALACTSEL <=(keyword(s))>

evaluates specified activity selection strategies by attempting to find a solution with each strategy. You can specify any combination of valid activity selection strategies in a space-delimited list enclosed in parentheses. If you do not specify a list, all available strategies are evaluated in alphabetical order, except that the default strategy is evaluated first. Descriptions of the available selection strategies are provided in the discussion of the ACTSELECT= option.

When the EVALACTSEL= option is in effect, the MAXTIME= option must also be specified. By default, the value specified for the MAXTIME= option is used as the maximum solution time for each activity selection strategy. When the DECRMAXTIME option is specified and a solution has been found, the value of the MAXTIME= option is set to the solution time of the last solution.

After the CLP procedure has attempted to find a solution with a particular strategy, it proceeds to the next strategy in the list. For this reason, the ACTSELECT= , ALLSOLNS , and MAXSOLNS= options are ignored when the EVALACTSEL= option is in effect. All solutions found during the evaluation process are saved in the output data set specified by the SCHEDULE= option.

The macro variable _ORCLPEAS_ provides an evaluation of each activity selection strategy. The fastest activity selection strategy is indicated in the macro variable _ORCLP_ , provided at least one solution is found. See Macro Variable _ORCLP_ for more information about the _ORCLP_ macro variable; see Macro Variable _ORCLPEAS_ for more information about the _ORCLPEAS_ macro variable.

FINISH= finish
END=finish
FINISHBEFORE=finish

specifies the finish time for the schedule. The schedule finish time is an upper bound on the finish time of each activity (subject to time, precedence, and resource constraints). If you want to impose a tighter upper bound for an activity, you can do so either by using the FLE= specification in an ACTIVITY statement or by using the _ALIGNDATE_ and _ALIGNTYPE_ variables in the ACTDATA= data set.

NOTFIRST= level
NF=level

activates an extension of the edge-finder consistency routines for scheduling CSPs. By default, the NOTFIRST= option is inactive. Specifying the NOTFIRST= option determines whether an activity cannot be the first to be processed from a set of activities that require a given resource or set of resources and prunes its domain appropriately.

The argument level is numeric and indicates the level of propagation. Valid values are 1, 2, or 3, with a higher number reflecting more propagation. More propagation usually comes with a higher performance cost; the challenge is to strike the right balance. Specifying the NOTFIRST= option implicitly turns on the EDGEFINDER=LAST option because the latter is a special case of the former.

The corresponding NOTLAST= option determines whether an activity cannot be the last to be processed from a set of activities that require a given resource or set of resources.

For more information about options that are related to edge-finder consistency routines, see the section Edge Finding.

NOTLAST= level
NL=level

activates an extension of the edge-finder consistency routines for scheduling CSPs. By default, the NOTLAST= option is inactive. Specifying the NOTLAST= option determines whether an activity cannot be the last to be processed from a set of activities that require a given resource or set of resources and prunes its domain appropriately.

The argument level is numeric and indicates the level of propagation. Valid values are 1, 2, or 3, with a higher number reflecting more propagation. More propagation usually comes with a higher performance cost; the challenge is to strike the right balance. Specifying the NOTLAST= option implicitly turns on the EDGEFINDER=FIRST option because the latter is a special case of the former.

The corresponding NOTFIRST= option determines whether an activity cannot be the first to be processed from a set of activities requiring a given resource or set of resources.

For more information about options that are related to edge-finder consistency routines, see the section Edge Finding.

START= start
BEGIN=start
STARTAFTER=start

specifies the start time for the schedule. The schedule start time is a lower bound on the start time of each activity (subject to time, precedence, and resource constraints). If you want to impose a tighter lower bound for an activity, you can do so either by using the SGE= specification in an ACTIVITY statement or by using the _ALIGNDATE_ and _ALIGNTYPE_ variables in the ACTDATA= data set.