| Overview | Group | Tree | Graph | Index | Concepts | 

An instance of the handle class IlcIntTimetable represents a
 capacity timetable. In Scheduler Engine, capacity timetables are
 used to manage the capacity of resources, both the capacity already used and
 the capacity remaining.
A timetable is defined over an interval, [timeMin,
 timeMax), where timeMin is the origin of the timetable
 and timeMax is its horizon. In addition to the origin and
 horizon, you may optionally indicate the period of the timetable.
 The period must be a positive integer, and furthermore, the size of the
 interval (that is, timeMax - timeMin) must be an integer
 multiple of the period. If a period is specified, then the values managed by
 the timetable can change only at times indicated by timeMin + i *
 period.
For each point in time in its interval, a capacity timetable retains a minimal and maximal integer value. The minimal value retained for a point in time indicates the capacity that has already been used; the difference between the minimal and maximal value indicates the remaining capacity at that time.
Member functions of this class let you consult or modify these minimal and maximal values. These values may change only monotonically; that is, minimal values cannot decrease, and maximal values cannot increase.
Two types of propagation events can be triggered when a capacity
 timetable is modified. An event of type rangeInterval indicates
 that there are some times at which some modification of minimal or maximal
 values occurred. An event of type valueInterval indicates that
 there are some times at which the minimal value became equal to the maximal
 value. In order to perform propagation, member functions allow you to
 associate demons with each type of event.
The information stored into a timetable is reversible. In particular, when modifiers are called, the state before their call will be saved by Solver.
For more information, see Timetable.
See Also:
IlcAnyTimetable, IlcCapResource, IlcIntTimetableCursor, IlcIntTimetableIterator
| Constructor Summary | |
|---|---|
public  | IlcIntTimetable() | 
public  | IlcIntTimetable(IlcCapTimetableI * impl) | 
public  | IlcIntTimetable(IlcSchedule, IlcInt timeMin, IlcInt timeMax, IlcInt period=1, IlcInt min=IlcIntMin, IlcInt max=IlcIntMax) | 
| Method Summary | |
|---|---|
public IlcCapTimetableI * | getImpl() const | 
public IlcInt | getMax(IlcInt time) const | 
public IlcInt | getMaxMax(IlcInt timeMin, IlcInt timeMax) const | 
public IlcInt | getMaxMin(IlcInt timeMin, IlcInt timeMax) const | 
public IlcInt | getMin(IlcInt time) const | 
public IlcInt | getMinMax(IlcInt timeMin, IlcInt timeMax) const | 
public IlcInt | getMinMin(IlcInt timeMin, IlcInt timeMax) const | 
public const char * | getName() const | 
public IlcAny | getObject() const | 
public IlcInt | getPeriod() const | 
public IlcInt | getRangeTimeMax() const | 
public IlcInt | getRangeTimeMin() const | 
public IloSolver | getSolver() const | 
public IloSolverI * | getSolverI() const | 
public IlcInt | getTimeMax() const | 
public IlcInt | getTimeMin() const | 
public IlcInt | getValue(IlcInt time) const | 
public IlcInt | getValueTimeMax() const | 
public IlcInt | getValueTimeMin() const | 
public IlcBool | isBound(IlcInt time) const | 
public void | operator=(const IlcIntTimetable & h) | 
public void | setMax(IlcInt timeMin, IlcInt timeMax, IlcInt max) | 
public void | setMin(IlcInt timeMin, IlcInt timeMax, IlcInt min) | 
public void | setName(const char * name) const | 
public void | setObject(IlcAny object) const | 
public void | setValue(IlcInt timeMin, IlcInt timeMax, IlcInt value) | 
public void | whenRangeInterval(const IlcDemon c) const | 
public void | whenValueInterval(const IlcDemon c) const | 
| Constructor Detail | 
|---|
This constructor creates a timetable to manage an integer quantity (the
 capacity) whose value at all times is bounded between min and
 max. The constructor adds that timetable to those managed by
 the schedule. The timetable starts at timeMin and extends to
 timeMax, divided into equal periods of size
 period.
An instance of IloSolver::SolverErrorException is thrown if
 any of the following conditions occur:
 timeMax - timeMin is not strictly positive;
 period is not strictly positive;
 timeMax - timeMin is not an integer multiple of 
 period.| Method Detail | 
|---|
This member function returns the maximum value at time of
 the invoking timetable. The difference between this maximum and the minimum
 value at time (returned by the member function IlcIntTimetable::getMin) indicates the remaining capacity at
 time.
This member function returns the largest of the maximal values of the
 integer quantity managed by the invoking timetable. Only those maximal
 values that correspond to times in the interval [timeMin
 timeMax) are considered. An error
 ("bad index interval")
 is raised if the invoking timetable does not cover
 the interval [timeMin, timeMax) or if timeMin is
 strictly greater than timeMax.
This member function returns the largest of the minimal values of the
 integer quantity managed by the invoking timetable. Only those minimal
 values that correspond to times in the interval [timeMin
 timeMax) are considered. An error
 ("bad index interval")
 is raised if the invoking timetable does not cover
 the interval [timeMin, timeMax) or if timeMin is
 strictly greater than timeMax.
This member function returns the minimum value at time of
 the invoking timetable. This minimum value at time indicates
 the capacity that has already been used at time.
This member function returns the least of the maximal values of the
 integer quantity managed by the invoking timetable. Only those maximal
 values that correspond to times in the interval [timeMin
 timeMax) are considered. An error
 ("bad index interval")
 is raised if the invoking timetable does not cover
 the interval [timeMin, timeMax) or if timeMin is
 strictly greater than timeMax.
This member function returns the least of the minimal values of the
 integer quantity managed by the invoking timetable. Only those minimal
 values that correspond to times in the interval [timeMin
 timeMax) are considered. An error
 ("bad index interval")
 is raised if the invoking timetable does not cover
 the interval [timeMin, timeMax) or if timeMin is
 strictly greater than timeMax.
This member function returns the size of the periods of the invoking
 timetable. The meaning of this size is that the timetable may change only at
 times representing the beginning of periods, that is, times of the form
 (getTimeMin() + i * getPeriod()).
When it is called during the execution of a demon associated with a
 timetable by the member function IlcIntTimetable::whenRangeInterval, this member function returns the time
 rangeTimeMax, that is, the maximum of the interval
 [rangeTimeMin, rangeTimeMax) containing all the times at which a
 modification of the values occurred. The return value of this member
 function is not meaningful outside the execution of a demon associated with
 the timetable by the member function IlcIntTimetable::whenRangeInterval.
When it is called during the execution of a demon associated with a
 timetable by the member function IlcIntTimetable::whenRangeInterval, this member function returns the time
 rangeTimeMin, that is, the minimum of the interval
 [rangeTimeMin, rangeTimeMax) containing all the times at which a
 modification of the values occurred. The return value of this member
 function is not meaningful outside the execution of a demon associated with
 the timetable by the member function IlcIntTimetable::whenRangeInterval.
This member function returns an instance of IloSolver associated with the invoking object.
This member function returns a pointer to the implementation object of the solver where the invoking object was extracted.
This member function returns the time horizon of the invoking timetable.
This member function returns the time origin of the invoking timetable.
This member function returns the value of the invoking timetable at
 time. An instance of
 IloSolver::SolverErrorException is thrown if the timetable is
 not bound at time.
When it is called during the execution of a demon associated with a
 timetable by the member function IlcIntTimetable::whenValueInterval, this member function returns the time
 valueTimeMax, that is, the maximum of the interval
 [valueTimeMin, valueTimeMax) containing all the times at which
 the minimal value has become equal to the maximal value. The return value of
 this member function is not meaningful outside the execution of a demon
 associated with the timetable by the member function IlcIntTimetable::whenValueInterval.
When it is called during the execution of a demon associated with a
 timetable by the member function IlcIntTimetable::whenValueInterval, this member function returns the time
 valueTimeMin, that is, the minimum of the interval
 [valueTimeMin, valueTimeMax) containing all the times at which
 the minimal value has become equal to the maximal value. The return value of
 this member function is not meaningful outside the execution of a demon
 associated with the timetable by the member function IlcIntTimetable::whenValueInterval.
This member function returns IlcTrue if the invoking
 timetable is bound to a value at time. Otherwise, it returns
 IlcFalse.
This member function allows you to modify the maximal values of the
 integer quantity managed by the invoking timetable. At every time
 t, the new maximal value becomes max, provided
 that max is less than the current maximal value of
 t. The maximal value of t remains unchanged if
 max is greater than the current maximal value of
 t. A failure is generated if there is some time t
 for which max is strictly less than the minimal value of
 t. The maximal values are modified only for the times belonging
 to the interval [timeMin, timeMax).
An instance of IloSolver::SolverErrorException is thrown
 (bad index interval) if the invoking timetable does not cover
 the interval [timeMin, timeMax) or if timeMin is
 strictly greater than timeMax.
This member function allows you to modify the minimal values of the
 integer quantity managed by the invoking timetable. At every time
 t, the new minimal value becomes min, provided
 that min is greater than the current minimal value in
 t. The minimal value in t remains unchanged if
 min is less than the current minimal value of t. A
 failure is generated if there is some time t for which
 min is strictly greater than the maximal value of
 t. The minimal values are modified only for the times belonging
 to the interval [timeMin, timeMax).
An instance of IloSolver::SolverErrorException is thrown
 (bad index interval) if the invoking timetable does not cover
 the interval [timeMin, timeMax) or if timeMin is
 strictly greater than timeMax.
This member function allows you to set the value of the integer quantity
 managed by the invoking timetable. Then for every value t on
 the interval [timeMin, timeMax), both the minimal and the
 maximal values in t become equal to value. A
 failure is generated if there is some time t for which
 value is strictly less than the current minimal value of
 t or strictly greater than the current maximal value of
 t.
An instance of IloSolver::SolverErrorException is thrown
 (bad index interval) if the given times timeMin
 and timeMax do not belong to the interval of the invoking
 timetable or if timeMin is strictly greater than
 timeMax.
This member function associates the demon d with the
 rangeInterval propagation event of the invoking timetable.
 Whenever a rangeInterval propagation event occurs, demon
 d is executed.
Since a constraint is also a demon, a constraint can also be passed as an
 argument to this member function. Whenever a rangeInterval
 propagation event occurs, the constraint will be posted and propagated.
A call to the demon d signifies that there are some
 times at which a modification of the values occurred. The interval
 [rangeTimeMin, rangeTimeMax) is the least interval containing
 all these times. 
This member function associates the demon d with the
 valueInterval propagation event of the invoking timetable.
 Whenever a valueInterval propagation event occurs, the demon
 d is executed.
Since a constraint is also a demon, a constraint can also be passed as an
 argument to this member function. Whenever a valueInterval
 propagation event occurs, the constraint will be posted and propagated.
A call to the demon d signifies that there are some
 times at which the minimal value became equal to the maximal value. The
 interval [valueTimeMin, valueTimeMax) is the least interval
 containing all these times.