FRAMES NO FRAMES

Overflow
PREVIOUS NEXT
Description
Model Limitations
Scheduler Engine Limitations
Description

Due to the limited size of data representation, IBM® ILOG Scheduler® requires several conditions on its input to avoid overflow or erroneous computations. Some of these conditions are model limitations and are checked when entering the search; they are listed in the following section, Model Limitations . Some other conditions can not be checked systematically during the search, for computational efficiency reasons. They are listed in the section Scheduler Engine Limitations.

Model Limitations

Not all scheduling model instances (class IloModel) can be handled by IBM ILOG Scheduler. In particular, only integer dates are considered by the engine. Attempts to extract a model that contains time and date data that are not IloIntVar instances will raise the following exception: integer variable expected during extraction.

This limitation applies to:

  • start, end, duration, processing time, and external variables of activities,
  • delay variables of precedence constraints,
  • capacity variables of resource constraints (alternative included),
  • cost, setup cost, teardown cost and cost sum variables of transition costs, and
  • time bound variables of time bound constraints.

Moreover, if necessary, every computation instance of such variables will be clamped to the default range specified in the corresponding IloSchedulerEnv. See the description of the method IloSchedulerEnv::setIntMaxAtExtraction for more information.

Other data, expected to be in integer form, is rounded if it has been modeled using an instance of IloNumVar or with an IloNum data type. If applicable, the bounds of IloNumVar variable instances will be rounded toward minus infinity (floor rounding) or toward plus infinity (ceiling rounding, as in ceil()) depending on the semantics of the data.

Some numeric data is required to be in integer form (must-be-integer), as no rounding is meaningful. Otherwise, an IloIntegerExpectedException exception will be raised.

IBM ILOG Scheduler objects concerned by rounding policies and integer requirements are listed in the following table.

Scheduler Rounding Policies and Integer Requirements

Object Floor Rounding Ceiling Rounding Must-be-integer
IloSchedulerEnvhorizon origin
IloActivityBreakParamduration max normal breaks, start break overlap max, end break overlap max duration min normal breaks, minimal execution duration, start break overlap min, end beak overlap min disjunctive break type, start break overlap type, end break overlap type
IloActivityBasicParamduration max external variable value
IloPrecedenceConstraintdelay value for types IloStartsAfterStart IloStartsAfterEnd IloEndsAfterStart IloEndsAfterEnd delay value for types IloStartsAtStart IloStartsAtEnd IloEndsAtStart IloEndsAtEnd
IloTimeBoundConstrainttime bound value for types IloStartsBefore, IloEndsBeforetime bound value for types IloStartsAfter, IloEndsAftertime bound value for types IloStartsAt, IloEndsAt
IloResource capacity enforcement intervals capacity max capacity min date min/max
IloReservoircapacity initial level
IloContinuousReservoircapacity
IloDiscreteResourcecapacity
IloDiscreteEnergycapacity
Resource Constraint, Alternative Resource Constraint capacity
IloGranularFunctiongranularity, segments
IloTransitionParamsetup and teardown values, transition values
IloTransitionTimesetup and teardown values, transition values
IloTransitionCostsetup or teardown cost max setup and teardown values, transition values
IloIntervalListinterval start, end, type
Scheduler Engine Limitations

Several built-in constants are available in IBM ILOG Scheduler Engine in order to validate the range of the input data: IlcIntMin, IlcIntMax, IlcFloatMin and IlcFloatMax. The first two apply to integer data (dates, capacities, and so forth), whereas the latter correspond to floating-point data (num-to-num and granular functions, reservoir capacity, texture measurement, and so forth). Their actual value depends on the architecture, either 32-bit or 64-bit. Note that Concert Technology also has the corresponding IloIntMax, IloIntMin limiting constants defined, which are smaller in range than IlcIntMin, IlcIntMax on 64-bit architecture. On 32-bit architecture, these constraints are equal.

During the search, computations are subject to overflows resulting from invalid input. No systematic check is performed during critical parts of computations, as it would result in a dramatic performance slow down. It is thus necessary to validate the potentially out-of-range input before entering the search. Potential overflows are described below, grouped by functionality class.

General Schedule

In IBM ILOG Scheduler, start and end dates are represented by integer. It is required that the maximum start time plus the maximum duration, or processing time, does not exceed the IlcIntMax value. Similarly, the minimum end date minus the maximum duration should not be less than IlcIntMin. Note that the default upper bound of the start, end and duration variables of a model activity (IloActivity) are equal to IloIntMax/2.

If transition times are involved (either by tables or through transition time objects) between a sequence of two resource constraints, there are restrictions on the permissible transition time values. The minimum end time of the preceding activity plus the transition time should not exceed IlcIntMax. Similarly, the maximum start time of the second activity minus the transition time should be greater than IlcIntMin.

The same kind of limitations apply with the optional delay available with the precedence constraint. Depending on the type of the precedence constraint (IloEndsAfterEnd, IloStartsAtStart, and so forth), two variables (the preceding and following) are constrained with a delay. To avoid overflows and underflows, the sum of preceding variable and the delay should always remain within the range [IlcIntMin, IlcIntMax]. Similarly, the difference between the following variable and the delay should be within the same range.

Edge Finder Constraint

The edge finder constraint may be applied on discrete and unary resources, depending on the capacity enforcement level. See the table in Interpretation of Capacity Enforcement Levels for details on when the edge finder is applied.

The edge finder constraint performs propagation based on the grouping of resource constraints as a whole. As a consequence, the sum of all the minimum processing times of activities pertaining to a unary resource constraints should not exceed IlcIntMax. Similarly, for discrete resource constraints the sum of all minimum processing times multiplied by the minimum capacity should not be greater than IlcIntMax.

Balance Constraint

This constraint is available on a discrete resource with a capacity enforcement of IloExtended, or on a reservoir with capacity enforcement level higher than IloHigh. On a discrete resource, the balance constraint may overflow if the sum of the maximal capacity required by all resource constraints exceeds IlcIntMax.

On a reservoir, the balance constraint may overflow if the sum of the maximal capacity of all the producing resource constraints exceeds IlcIntMax, or if the sum of the maximal capacity of all the consuming resource constraints exceeds IlcIntMax. The balance constraint also overflows if the maximal capacity of the reservoir exceeds IlcIntMax/2.

Moreover, during extra propagation of the precedence graph (available on a discrete resource with precedence enforcement level higher than IloHigh), overflow can occur if the sum of the minimal energy (minimal duration * minimal capacity) over all resource constraints on the resource exceeds IlcIntMax.

Capacity Resource and Associated Timetable Constraint

In a capacity resource, the maximum capacity should be less than IlcIntMax/2, either by construction or when using a member function to set the capacity level (IlcDiscreteEnergy::setEnergyMax, IlcReservoir::setLevelMax, IlcDiscreteResource::setCapacityMax). The same limitation applies on the timetable constructed from a IlcCapResource. This includes, for instance, the fourth argument of IlcCapResource::makeTimetableConstraint.

Energy Resource and Associated Timetable Constraint

In a discrete energy resource, the maximum energy should be less than IlcIntMax/2, either by construction or when using IlcDiscreteEnergy::setEnergyMax. In Scheduler Engine, the same limitation applies on the timetable constructed from an IlcDiscreteEnergy. This includes, for instance, the fourth argument of IlcCapResource::makeTimetableConstraint.

Functional and Integral Constraint

During propagation of an integral constraint, the values of the integral of a granular function (class IloGranularFunction) are internally represented with IlcNum variables. It is required that the integral between the minimum start time and the maximum end time do not overflow IlcFloatMax.

Practical Advice

Whenever unexpected results occur during the search, it might be profitable to use the trace mechanism (instance of IlcSchedulerTrace) and carefully examine the range of input data and internal state of variables to detect whether an overflow occurred.

See Also

IloSchedulerEnv, IloEnforcementLevel, IloGranularFunction, IloResource. Also IloIntervalList in the extensions section of the IBM ILOG Concert Technology Reference Manual.

PREVIOUS NEXT