FRAMES NO FRAMES

Scheduler Overview
NEXT
Overview
Scheduling Object Classes
Parameter Classes
Model Parsing Object Classes
Parameter Design Pattern
Overview

The Scheduler Model is composed of three main families of classes:

These class families are described in the following sections.

Scheduling Object Classes

Scheduling Object classes represent the core classes of the model. They allow representation of activities, temporal constraints, resources or resource requirements, and transition times and transition costs on resources. The following figure shows all the Scheduling Object classes.

IBM® ILOG® Scheduler Object Classes

Parameter Classes

Parameter classes represent characteristics or behaviors that can be attached to a scheduling object. For example, a scheduling object like a resource may have a maximal capacity that varies with time, or there may be breaks during which activities executing on that resource may be suspended. As another example, an activity may have different behaviors in response to resource capacity or breaks, or may require transition times if it follows certain other activities. Parameter classes represent these various characteristics.

Parameter classes have the following properties:

  • The parameter characteristics can be modified using the API of the scheduling objects. For example, the API of the class representing a resource allows adding a new break in the break list of the resource.
  • The characteristics can be shared between several scheduling objects. For example, several resource instances may share the same break list (such as, all these resources have breaks on weekends), or several activities may share the same behavior with respect to breaks. Sharing a characteristic saves memory in the model and allows easy modification of the value with only one function call for a group of objects.

Each parameter class has a default value, which can be directly modified. The parameters and scheduling objects are related in a specified pattern. See Parameter Design Pattern for more information.

Parameter classes can be classified according to the scheduling object classes to which they are attached -- either resources or activities. A third type of parameter, Generic Parameters, may represent different types of characteristics. For example, both the maximal and minimal capacity profiles of a capacity resource are represented by a parameter class describing a numeric step function. Generic parameters do not have any inherent semantics. They get particular semantics only when they are attached to a Scheduling Object.

The following is a complete list of Parameter classes.

Resource Parameter

Resource Basic Parameter: IloResourceParam

Activity Parameters

Activity Basic Parameter: IloActivityBasicParam

Activity Constraints Parameter: IloActivityConstraintsParam

Activity Break Parameter: IloActivityBreakParam

Activity Overlap Parameter: IloActivityOverlapParam

Generic Parameters

IloNumToNumStepFunction, IloNumToNumSegmentFunction, IloNumToAnySetStepFunction and IloIntervalList are documented in the extensions section of the IBM ILOG Concert Technology Reference Manual.

Time Interval List: IloIntervalList

Transition Cost: IloTransitionParam

Numeric Step Function: IloNumToNumStepFunction

Numeric Piecewise Linear Function: IloNumToNumSegmentFunction

Set Step Function: IloNumToAnySetStepFunction

Scheduler Overview Figure gives an overview of the links between Scheduling Objects and Parameters.

Parameters Organized by Function

Parameters can also be categorized according to their function. We distinguish three categories of parameters:

  • Description Parameters are parameters that describe the scheduling objects. For example, a parameter can describe the maximal capacity of a resource.
  • Relaxation Parameters are parameters that relax some features of the scheduling objects. For example, a relaxation parameter may specify that a due-date constraint on an activity does not need to be taken into account when solving the problem.
  • Enforcement Parameters are parameters that specify how the constraints expressed on the scheduling objects will be enforced by the scheduler. The value of these parameters is taken from the enumeration IloEnforcementLevel. The exact semantics of each value must be defined by the scheduler. Those levels represent a scale of effort that the scheduler will spend at enforcing the corresponding type of constraints.

Following is a brief description of each parameter class.

IloResourceParam

Scheduling Object: IloResource

Category: Relaxation and Enforcement parameter

This parameter specifies if various resource characteristics must be enforced and how much effort must be spent by the scheduler to enforce them. It states, for example, if the break list, resource usage, precedence relations between activities requiring the resource, sequencing relations between activities requiring the resource, and/or transition times are to be enforced, and with how much effort.

IloActivityBasicParam

Scheduling Object: IloActivity

Category: Description parameter

This parameter describes:

  • The maximal duration of the activity
  • If the activity can be suspended by breaks or not

IloActivityConstraintsParam

Scheduling Object: IloActivity

Category: Relaxation parameter

This parameter allows relaxing the following types of constraints related with an activity:

  • Break disjunctivity
  • Precedence constraints
  • Time-bound constraints
  • Covering constraint
  • Resource constraints.

IloActivityBreakParam

Scheduling Object: IloActivity

Category: Description parameter

This parameter describes the behavior of the activity with respect to breaks. In particular:

  • Which breaks will be considered as disjunctive for the activity
  • What is the minimal duration of processing time intervals of the activity
  • Can the activity be suspended at its start and/or at its end

IloActivityOverlapParam

Scheduling Object: IloActivity

Category: Description parameter

This parameter describes if and how an activity may overlap a break.

IloIntervalList

Scheduling Object: Generic Parameter (used by the class IloResource)

Category: Description parameter

This parameter represents a list of time intervals associated with a numerical type. It is used to represent:

  • A break list attached to a resource. In that case, the integer type corresponds to the type of break. (Identified as [brk] in Scheduler Overview Figure.)
  • The time intervals on which the usage of a resource must be enforced. In that case, for all resources except for continuous reservoir, the integer type represents the time precision (time step) used to enforce this resource usage. (Identified as [usg] in Scheduler Overview Figure.)
  • The time intervals on which the transition times on a resource must be enforced. (Identified as [tt] in Scheduler Overview Figure.)
  • For a state resource, the time intervals during which the resource is constrained to be in use. (Identified as [max] in Scheduler Overview Figure.)

IloIntervalList is documented in the extensions section of the IBM ILOG Concert Technology Reference Manual.

IloTransitionParam

Scheduling Object: Generic Parameter (used by classes IloTransitionCost and IloTransitionTime)

Category: Description parameter

This parameter represents a numerical table. It is used to represent:

IloNumToNumStepFunction

Scheduling Object: Generic Parameter (used by class IloCapResource)

Category: Description parameter

This parameter represents the numeric step function

This parameter is used to represent the minimal [min] and maximal [max] capacity profile of a capacity resource and its initial occupation.

IloNumToNumStepFunction is documented in the extensions section of the IBM ILOG Concert Technology Reference Manual.

IloNumToNumSegmentFunction

Scheduling Object: Generic Parameter (used by class IloContinuousReservoir)

Category: Description parameter

This parameter represents the numeric piecewise linear function

This parameter is used to represent the minimal [min] and maximal [max] level profile of a continuous reservoir and its initial occupation.

IloNumToNumSegmentFunction is documented in the extensions section of the IBM ILOG Concert Technology Reference Manual.

IloNumToAnySetStepFunction

Scheduling Object: Generic Parameter (used by class IloStateResource)

Category: Description parameter

This parameter represents the set step function:

where and A is the set of all possible values of type IloAny.

This parameter is used to represent the possible states of the resource for each time interval. (Identified as [max] in Scheduler Overview Figure.)

IloNumToAnySetStepFunction is documented in the extensions section of the IBM ILOG Concert Technology Reference Manual.

Scheduler Overview Figure

This figure shows an overview of the links between scheduling objects and parameters in the Scheduler Model.

Model Parsing Object Classes

These classes are used to parse some objects or parameters of the model. The following is the exhaustive list of Model Parsing Object classes.

These classes are all documented in the extensions section of the IBM ILOG Concert Technology Reference Manual.

  • Cursor on Interval Lists: IloIntervalListCursor
  • Cursor on Numeric Step Functions: IloNumToNumStepFunctionCursor
  • Cursor on Numeric Piecewise Linear Functions: IloNumToNumSegmentFunctionCursor
  • Cursor on Set Step Functions: IloNumToAnySetStepFunctionCursor
Parameter Design Pattern

Let schedclass be a Scheduling Object class (for example, IloResource). Let xxxParam be a class that represents the characteristics xxx of the instances of the class schedclass. For example, let xxxParam be the break list of an instance of IloResource; in that case, xxxParam is an IloIntervalList.

For simplification, we suppose that xxx consists of one data member that can be accessed by the accessor getxxxValue(), and modified with the member function setxxxValue(Value).

The handle class of parameters is defined as follows:

class xxxParam : {
public:
   xxxParam(const IloEnv&, ...);
   Value getxxxValue() const;
   void setxxxValue(Value) const;
   void reset(); 
};

The function reset allows resetting the parameter to its absolute default value. Instances of parameters xxxParam may be shared between several scheduling objects. (For example, several instances of IloResource may share the same break list represented as an instance of IloIntervalList). Thus, changing or resetting the value of an instance of a parameter will affect all the scheduling objects that share this parameter.

An instance of each class of parameter is stored in the scheduler environment (class IloSchedulerEnv). By default, all the Scheduling Objects built in that environment will share this parameter instance, unless the local API of those objects is used (see below). This instance can be accessed as follows:

class IloSchedulerEnv {
   public:
      xxxParam getxxxParam() const;
      void setxxxParam(const xxxParam& param);
 };

The functions getxxxParam and setxxxParam on the scheduler environment do not copy the parameter. The function setxxxParam is used to set a new xxxParam as default for all the scheduling objects that will be created later on the environment. This function will detach the previous instance of xxxParam from the environment but it will not detach this previous instance from the scheduling objects it was already attached to. The function getxxxParam can be used only to modify the value of the default parameter with schedEnv.getxxxParam().setxxxValue(Value).

The class schedclass of scheduling objects provides an API to modify the characteristics xxx that are stored in an instance of xxxParam.

class SCHEDCLASS {
   public:
      SCHEDCLASS(const IloEnv&, ...);
      void setxxxValue(Value);
      Value getxxxValue() const;
      void setxxxParam(const xxxParam& param);
 };

The function setxxxParam is used to set a new xxxParam for the scheduling object. This function does not copy the parameter. When the function setxxxValue(Value) is called on the scheduling object schedclass, if the parameter xxxParam is shared between different objects, a local copy is created and the function is applied to this local copy. The rationale is that the local API of a scheduling object must not modify the parameters that are set for other scheduling objects through shared parameters.

See Also

IloSchedulerEnv.

NEXT