Previous Page | Next Page

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 setting of the ACTSELECT= option. After an activity has been selected, the activity assignment strategy determines a start time and a set of resources (empty if the activity has no resource requirements) for the selected activity. The interpretation of the assignment strategy depends on whether the activity selection strategy has been specified as RJRAND or not.


The activity is assigned its earliest possible start time unless the activity selection strategy (ACTSELECT=) is RJRAND; otherwise the activity is assigned its latest possible start time.

Figure 1.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 supported by each of the resources for the duration of the activity.

Figure 1.4 Potential Activity Start Times
Potential Activity Start Times

For example, if ACTSELECT=LJRAND, the activity is assigned a start time of 6 and one of R1 or R2 is assigned. On the other hand, if ACTSELECT=RJRAND, the activity is assigned a start time of 13 and one of R4, R5, or R6 is assigned.

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

RAND

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

In Figure 1.4, if the activity start time is set to 6, the strategy randomly selects between R1 and R2. Otherwise, the strategy randomly selects among R4, R5, and R6.

MAXTW MAXLS

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.

In Figure 1.4, if the activity start time is set to 6, the resources that support the selected start time are R1 and R2. Since R1 has a smaller time window, the strategy selects R2. On the other hand, if the activity start time is set to 13, the resources that support the selected start time are R4, R5, and R6. Because R4 has a smaller time window than R5 or R6, the strategy randomly selects between R5 and R6.

The default 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 are selection strategies that use a random heuristic to break ties.

LJRAND RAND

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

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 date.

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 date.

DMINLS

selects the activity with the earliest late start time.

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

  1. ACTIVITY statement

  2. REQUIRES statement

  3. ACTIVITY dataset

The default 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 problems. 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 requiring a given resource or set of resources and prunes the domain of activity as appropriate.

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 requiring a given resource or set of resources and prunes its domain as appropriate.

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

  • 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 related to edge-finder consistency routines, see Details: CLP Procedure.

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 problems. 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 requiring a given resource or set of resources and prunes its domain as appropriate.

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. It should be noted that more propagation usually comes at a higher cost—mainly that of performance. The challenge is to strike the right balance. Specifying the NOTFIRST= option implicitly turns on the EDGEFINDER=LAST option since the latter is a special case of the former.

There is a corresponding option NOTLAST=, which determines whether an activity cannot be the last to be processed from a set of activities requiring a given resource or set of resources.

For more information about options related to edge-finder consistency routines, see the section Details: CLP Procedure.

NOTLAST= level
NL=level

activates an extension of the edge-finder consistency routines for scheduling problems. 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 requiring a given resource or set of resources and prunes its domain as appropriate.

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. It should be noted that more propagation usually comes at a higher cost—mainly that of performance. The challenge is to strike the right balance. Specifying the NOTLAST= option implicitly turns on the EDGEFINDER=FIRST option since the latter is a special case of the former.

There is a corresponding option NOTFIRST=, which 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 related to edge-finder consistency routines, see the section Details: CLP Procedure.

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.


Note: This procedure is experimental.

Previous Page | Next Page | Top of Page