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.