Generated on Sat Feb 12 2011 17:41:10 for Gecode by doxygen 1.7.3

Scheduling constraints and branchers

Classes

class  Gecode::ArrayTraits< PrimArgArray< TaskType > >
 Traits of TaskTypeArgs. More...

Typedefs

typedef PrimArgArray< TaskType > Gecode::TaskTypeArgs
 Passing task type arguments.

Enumerations

enum  Gecode::TaskType { Gecode::TT_FIXP, Gecode::TT_FIXS, Gecode::TT_FIXE }
 

Type of task for scheduling constraints.

More...

Functions

void Gecode::cumulatives (Home home, const IntVarArgs &machine, const IntVarArgs &start, const IntVarArgs &duration, const IntVarArgs &end, const IntVarArgs &height, const IntArgs &limit, bool at_most, IntConLevel icl=ICL_DEF)
 Post propagators for the cumulatives constraint.
void Gecode::cumulatives (Home home, const IntArgs &machine, const IntVarArgs &start, const IntVarArgs &duration, const IntVarArgs &end, const IntVarArgs &height, const IntArgs &limit, bool at_most, IntConLevel icl=ICL_DEF)
 Post propagators for the cumulatives constraint.
void Gecode::cumulatives (Home home, const IntVarArgs &machine, const IntVarArgs &start, const IntArgs &duration, const IntVarArgs &end, const IntVarArgs &height, const IntArgs &limit, bool at_most, IntConLevel icl=ICL_DEF)
 Post propagators for the cumulatives constraint.
void Gecode::cumulatives (Home home, const IntArgs &machine, const IntVarArgs &start, const IntArgs &duration, const IntVarArgs &end, const IntVarArgs &height, const IntArgs &limit, bool at_most, IntConLevel icl=ICL_DEF)
 Post propagators for the cumulatives constraint.
void Gecode::cumulatives (Home home, const IntVarArgs &machine, const IntVarArgs &start, const IntVarArgs &duration, const IntVarArgs &end, const IntArgs &height, const IntArgs &limit, bool at_most, IntConLevel icl=ICL_DEF)
 Post propagators for the cumulatives constraint.
void Gecode::cumulatives (Home home, const IntArgs &machine, const IntVarArgs &start, const IntVarArgs &duration, const IntVarArgs &end, const IntArgs &height, const IntArgs &limit, bool at_most, IntConLevel icl=ICL_DEF)
 Post propagators for the cumulatives constraint.
void Gecode::cumulatives (Home home, const IntVarArgs &machine, const IntVarArgs &start, const IntArgs &duration, const IntVarArgs &end, const IntArgs &height, const IntArgs &limit, bool at_most, IntConLevel icl=ICL_DEF)
 Post propagators for the cumulatives constraint.
void Gecode::cumulatives (Home home, const IntArgs &machine, const IntVarArgs &start, const IntArgs &duration, const IntVarArgs &end, const IntArgs &height, const IntArgs &limit, bool at_most, IntConLevel icl=ICL_DEF)
 Post propagators for the cumulatives constraint.
void Gecode::unary (Home home, const IntVarArgs &s, const IntArgs &p)
 Post propagators for scheduling tasks on unary resources.
void Gecode::unary (Home home, const IntVarArgs &s, const IntArgs &p, const BoolVarArgs &m)
 Post propagators for scheduling optional tasks on unary resources.
void Gecode::unary (Home home, const TaskTypeArgs &t, const IntVarArgs &s, const IntArgs &p)
 Post propagators for scheduling tasks on unary resources.
void Gecode::unary (Home home, const TaskTypeArgs &t, const IntVarArgs &s, const IntArgs &p, const BoolVarArgs &m)
 Post propagators for scheduling optional tasks on unary resources.
void Gecode::unary (Home home, const IntVarArgs &s, const IntVarArgs &p, const IntVarArgs &e)
 Post propagators for scheduling tasks on unary resources.
void Gecode::unary (Home home, const IntVarArgs &s, const IntVarArgs &p, const IntVarArgs &e, const BoolVarArgs &m)
 Post propagators for scheduling optional tasks on unary resources.
build buildd gecode gecode
scheduling cumulative cpp void 
Gecode::cumulative (Home home, int c, const TaskTypeArgs &t, const IntVarArgs &flex, const IntArgs &fix, const IntArgs &u)
 Post propagators for scheduling tasks on cumulative resources.
void Gecode::cumulative (Home home, int c, const TaskTypeArgs &t, const IntVarArgs &s, const IntArgs &p, const IntArgs &u, const BoolVarArgs &m)
 Post propagators for scheduling optional tasks on cumulative resources.
void Gecode::cumulative (Home home, int c, const IntVarArgs &s, const IntArgs &p, const IntArgs &u)
 Post propagators for scheduling tasks on cumulative resources.
void Gecode::cumulative (Home home, int c, const IntVarArgs &s, const IntArgs &p, const IntArgs &u, const BoolVarArgs &m)
 Post propagators for scheduling optional tasks on cumulative resources.
void Gecode::cumulative (Home home, int c, const IntVarArgs &s, const IntVarArgs &p, const IntVarArgs &e, const IntArgs &u)
 Post propagators for scheduling tasks on cumulative resources.
void Gecode::cumulative (Home home, int c, const IntVarArgs &s, const IntVarArgs &p, const IntVarArgs &e, const IntArgs &u, const BoolVarArgs &m)
 Post propagators for scheduling optional tasks on cumulative resources.

Typedef Documentation

typedef PrimArgArray<TaskType> Gecode::TaskTypeArgs

Passing task type arguments.

Definition at line 98 of file scheduling.hh.


Enumeration Type Documentation

Type of task for scheduling constraints.

Enumerator:
TT_FIXP 
TT_FIXS 
TT_FIXE 

Definition at line 91 of file scheduling.hh.


Function Documentation

void Gecode::cumulatives ( Home  home,
const IntVarArgs &  machine,
const IntVarArgs &  start,
const IntVarArgs &  duration,
const IntVarArgs &  end,
const IntVarArgs &  height,
const IntArgs &  limit,
bool  at_most,
IntConLevel  icl = ICL_DEF 
)

Post propagators for the cumulatives constraint.

This function creates propagators for the cumulatives constraint presented in "A new multi-resource cumulatives constraint with negative heights", Nicolas Beldiceanu and Mats Carlsson, Principles and Practice of Constraint Programming 2002.

The constraint models a set of machines and a set of tasks that should be assigned to the machines. The machines have a positive resource limit and the tasks each have a resource usage that can be either positive, negative, or zero. The constraint is enforced over each point in time for a machine where there is at least one task assigned.

The limit for a machine is either the maximum amount available at any given time (at_most = true), or else the least amount to be used (at_most = false).

Parameters:
homecurrent space
machine$ machine_i $ is the machine assigned to task $ i $
start$ start_i $ is the start date assigned to task $ i $
duration$ duration_i $ is the duration of task $ i $
end$ end_i $ is the end date assigned to task $ i $
height$ height_i $ is the height is the amount of resources consumed by task $ i $
limit$ limit_r $ is the amount of resource available for machine $ r $
at_mostat_most tells if the amount of resources used for a machine should be less than the limit (at_most = true) or greater than the limit (at_most = false)
iclSupports value-consistency only (icl = ICL_VAL, default).
Exceptions:
Int::ArgumentSizeMismatchthrown if the sizes of the arguments representing tasks does not match.
Int::OutOfLimitsthrown if any numerical argument is larger than Int::Limits::max or less than Int::Limits::min.

Definition at line 140 of file cumulatives.cpp.

void Gecode::cumulatives ( Home  home,
const IntArgs &  machine,
const IntVarArgs &  start,
const IntVarArgs &  duration,
const IntVarArgs &  end,
const IntVarArgs &  height,
const IntArgs &  limit,
bool  at_most,
IntConLevel  icl = ICL_DEF 
)

Post propagators for the cumulatives constraint.

Post propagators for the cumulatives constraint.

This function creates propagators for the cumulatives constraint presented in "A new multi-resource cumulatives constraint with negative heights", Nicolas Beldiceanu and Mats Carlsson, Principles and Practice of Constraint Programming 2002.

The constraint models a set of machines and a set of tasks that should be assigned to the machines. The machines have a positive resource limit and the tasks each have a resource usage that can be either positive, negative, or zero. The constraint is enforced over each point in time for a machine where there is at least one task assigned.

The limit for a machine is either the maximum amount available at any given time (at_most = true), or else the least amount to be used (at_most = false).

Parameters:
homecurrent space
machine$ machine_i $ is the machine assigned to task $ i $
start$ start_i $ is the start date assigned to task $ i $
duration$ duration_i $ is the duration of task $ i $
end$ end_i $ is the end date assigned to task $ i $
height$ height_i $ is the height is the amount of resources consumed by task $ i $
limit$ limit_r $ is the amount of resource available for machine $ r $
at_mostat_most tells if the amount of resources used for a machine should be less than the limit (at_most = true) or greater than the limit (at_most = false)
iclSupports value-consistency only (icl = ICL_VAL, default).
Exceptions:
Int::ArgumentSizeMismatchthrown if the sizes of the arguments representing tasks does not match.
Int::OutOfLimitsthrown if any numerical argument is larger than Int::Limits::max or less than Int::Limits::min.

Definition at line 150 of file cumulatives.cpp.

void Gecode::cumulatives ( Home  home,
const IntVarArgs &  machine,
const IntVarArgs &  start,
const IntArgs &  duration,
const IntVarArgs &  end,
const IntVarArgs &  height,
const IntArgs &  limit,
bool  at_most,
IntConLevel  icl = ICL_DEF 
)

Post propagators for the cumulatives constraint.

Post propagators for the cumulatives constraint.

This function creates propagators for the cumulatives constraint presented in "A new multi-resource cumulatives constraint with negative heights", Nicolas Beldiceanu and Mats Carlsson, Principles and Practice of Constraint Programming 2002.

The constraint models a set of machines and a set of tasks that should be assigned to the machines. The machines have a positive resource limit and the tasks each have a resource usage that can be either positive, negative, or zero. The constraint is enforced over each point in time for a machine where there is at least one task assigned.

The limit for a machine is either the maximum amount available at any given time (at_most = true), or else the least amount to be used (at_most = false).

Parameters:
homecurrent space
machine$ machine_i $ is the machine assigned to task $ i $
start$ start_i $ is the start date assigned to task $ i $
duration$ duration_i $ is the duration of task $ i $
end$ end_i $ is the end date assigned to task $ i $
height$ height_i $ is the height is the amount of resources consumed by task $ i $
limit$ limit_r $ is the amount of resource available for machine $ r $
at_mostat_most tells if the amount of resources used for a machine should be less than the limit (at_most = true) or greater than the limit (at_most = false)
iclSupports value-consistency only (icl = ICL_VAL, default).
Exceptions:
Int::ArgumentSizeMismatchthrown if the sizes of the arguments representing tasks does not match.
Int::OutOfLimitsthrown if any numerical argument is larger than Int::Limits::max or less than Int::Limits::min.

Definition at line 160 of file cumulatives.cpp.

void Gecode::cumulatives ( Home  home,
const IntArgs &  machine,
const IntVarArgs &  start,
const IntArgs &  duration,
const IntVarArgs &  end,
const IntVarArgs &  height,
const IntArgs &  limit,
bool  at_most,
IntConLevel  icl = ICL_DEF 
)

Post propagators for the cumulatives constraint.

Post propagators for the cumulatives constraint.

This function creates propagators for the cumulatives constraint presented in "A new multi-resource cumulatives constraint with negative heights", Nicolas Beldiceanu and Mats Carlsson, Principles and Practice of Constraint Programming 2002.

The constraint models a set of machines and a set of tasks that should be assigned to the machines. The machines have a positive resource limit and the tasks each have a resource usage that can be either positive, negative, or zero. The constraint is enforced over each point in time for a machine where there is at least one task assigned.

The limit for a machine is either the maximum amount available at any given time (at_most = true), or else the least amount to be used (at_most = false).

Parameters:
homecurrent space
machine$ machine_i $ is the machine assigned to task $ i $
start$ start_i $ is the start date assigned to task $ i $
duration$ duration_i $ is the duration of task $ i $
end$ end_i $ is the end date assigned to task $ i $
height$ height_i $ is the height is the amount of resources consumed by task $ i $
limit$ limit_r $ is the amount of resource available for machine $ r $
at_mostat_most tells if the amount of resources used for a machine should be less than the limit (at_most = true) or greater than the limit (at_most = false)
iclSupports value-consistency only (icl = ICL_VAL, default).
Exceptions:
Int::ArgumentSizeMismatchthrown if the sizes of the arguments representing tasks does not match.
Int::OutOfLimitsthrown if any numerical argument is larger than Int::Limits::max or less than Int::Limits::min.

Definition at line 170 of file cumulatives.cpp.

void Gecode::cumulatives ( Home  home,
const IntVarArgs &  machine,
const IntVarArgs &  start,
const IntVarArgs &  duration,
const IntVarArgs &  end,
const IntArgs &  height,
const IntArgs &  limit,
bool  at_most,
IntConLevel  icl = ICL_DEF 
)

Post propagators for the cumulatives constraint.

Post propagators for the cumulatives constraint.

This function creates propagators for the cumulatives constraint presented in "A new multi-resource cumulatives constraint with negative heights", Nicolas Beldiceanu and Mats Carlsson, Principles and Practice of Constraint Programming 2002.

The constraint models a set of machines and a set of tasks that should be assigned to the machines. The machines have a positive resource limit and the tasks each have a resource usage that can be either positive, negative, or zero. The constraint is enforced over each point in time for a machine where there is at least one task assigned.

The limit for a machine is either the maximum amount available at any given time (at_most = true), or else the least amount to be used (at_most = false).

Parameters:
homecurrent space
machine$ machine_i $ is the machine assigned to task $ i $
start$ start_i $ is the start date assigned to task $ i $
duration$ duration_i $ is the duration of task $ i $
end$ end_i $ is the end date assigned to task $ i $
height$ height_i $ is the height is the amount of resources consumed by task $ i $
limit$ limit_r $ is the amount of resource available for machine $ r $
at_mostat_most tells if the amount of resources used for a machine should be less than the limit (at_most = true) or greater than the limit (at_most = false)
iclSupports value-consistency only (icl = ICL_VAL, default).
Exceptions:
Int::ArgumentSizeMismatchthrown if the sizes of the arguments representing tasks does not match.
Int::OutOfLimitsthrown if any numerical argument is larger than Int::Limits::max or less than Int::Limits::min.

Definition at line 180 of file cumulatives.cpp.

void Gecode::cumulatives ( Home  home,
const IntArgs &  machine,
const IntVarArgs &  start,
const IntVarArgs &  duration,
const IntVarArgs &  end,
const IntArgs &  height,
const IntArgs &  limit,
bool  at_most,
IntConLevel  icl = ICL_DEF 
)

Post propagators for the cumulatives constraint.

Post propagators for the cumulatives constraint.

This function creates propagators for the cumulatives constraint presented in "A new multi-resource cumulatives constraint with negative heights", Nicolas Beldiceanu and Mats Carlsson, Principles and Practice of Constraint Programming 2002.

The constraint models a set of machines and a set of tasks that should be assigned to the machines. The machines have a positive resource limit and the tasks each have a resource usage that can be either positive, negative, or zero. The constraint is enforced over each point in time for a machine where there is at least one task assigned.

The limit for a machine is either the maximum amount available at any given time (at_most = true), or else the least amount to be used (at_most = false).

Parameters:
homecurrent space
machine$ machine_i $ is the machine assigned to task $ i $
start$ start_i $ is the start date assigned to task $ i $
duration$ duration_i $ is the duration of task $ i $
end$ end_i $ is the end date assigned to task $ i $
height$ height_i $ is the height is the amount of resources consumed by task $ i $
limit$ limit_r $ is the amount of resource available for machine $ r $
at_mostat_most tells if the amount of resources used for a machine should be less than the limit (at_most = true) or greater than the limit (at_most = false)
iclSupports value-consistency only (icl = ICL_VAL, default).
Exceptions:
Int::ArgumentSizeMismatchthrown if the sizes of the arguments representing tasks does not match.
Int::OutOfLimitsthrown if any numerical argument is larger than Int::Limits::max or less than Int::Limits::min.

Definition at line 190 of file cumulatives.cpp.

void Gecode::cumulatives ( Home  home,
const IntVarArgs &  machine,
const IntVarArgs &  start,
const IntArgs &  duration,
const IntVarArgs &  end,
const IntArgs &  height,
const IntArgs &  limit,
bool  at_most,
IntConLevel  icl = ICL_DEF 
)

Post propagators for the cumulatives constraint.

Post propagators for the cumulatives constraint.

This function creates propagators for the cumulatives constraint presented in "A new multi-resource cumulatives constraint with negative heights", Nicolas Beldiceanu and Mats Carlsson, Principles and Practice of Constraint Programming 2002.

The constraint models a set of machines and a set of tasks that should be assigned to the machines. The machines have a positive resource limit and the tasks each have a resource usage that can be either positive, negative, or zero. The constraint is enforced over each point in time for a machine where there is at least one task assigned.

The limit for a machine is either the maximum amount available at any given time (at_most = true), or else the least amount to be used (at_most = false).

Parameters:
homecurrent space
machine$ machine_i $ is the machine assigned to task $ i $
start$ start_i $ is the start date assigned to task $ i $
duration$ duration_i $ is the duration of task $ i $
end$ end_i $ is the end date assigned to task $ i $
height$ height_i $ is the height is the amount of resources consumed by task $ i $
limit$ limit_r $ is the amount of resource available for machine $ r $
at_mostat_most tells if the amount of resources used for a machine should be less than the limit (at_most = true) or greater than the limit (at_most = false)
iclSupports value-consistency only (icl = ICL_VAL, default).
Exceptions:
Int::ArgumentSizeMismatchthrown if the sizes of the arguments representing tasks does not match.
Int::OutOfLimitsthrown if any numerical argument is larger than Int::Limits::max or less than Int::Limits::min.

Definition at line 200 of file cumulatives.cpp.

void Gecode::cumulatives ( Home  home,
const IntArgs &  machine,
const IntVarArgs &  start,
const IntArgs &  duration,
const IntVarArgs &  end,
const IntArgs &  height,
const IntArgs &  limit,
bool  at_most,
IntConLevel  icl = ICL_DEF 
)

Post propagators for the cumulatives constraint.

Post propagators for the cumulatives constraint.

This function creates propagators for the cumulatives constraint presented in "A new multi-resource cumulatives constraint with negative heights", Nicolas Beldiceanu and Mats Carlsson, Principles and Practice of Constraint Programming 2002.

The constraint models a set of machines and a set of tasks that should be assigned to the machines. The machines have a positive resource limit and the tasks each have a resource usage that can be either positive, negative, or zero. The constraint is enforced over each point in time for a machine where there is at least one task assigned.

The limit for a machine is either the maximum amount available at any given time (at_most = true), or else the least amount to be used (at_most = false).

Parameters:
homecurrent space
machine$ machine_i $ is the machine assigned to task $ i $
start$ start_i $ is the start date assigned to task $ i $
duration$ duration_i $ is the duration of task $ i $
end$ end_i $ is the end date assigned to task $ i $
height$ height_i $ is the height is the amount of resources consumed by task $ i $
limit$ limit_r $ is the amount of resource available for machine $ r $
at_mostat_most tells if the amount of resources used for a machine should be less than the limit (at_most = true) or greater than the limit (at_most = false)
iclSupports value-consistency only (icl = ICL_VAL, default).
Exceptions:
Int::ArgumentSizeMismatchthrown if the sizes of the arguments representing tasks does not match.
Int::OutOfLimitsthrown if any numerical argument is larger than Int::Limits::max or less than Int::Limits::min.

Definition at line 210 of file cumulatives.cpp.

void Gecode::unary ( Home  home,
const IntVarArgs &  s,
const IntArgs &  p 
)

Post propagators for scheduling tasks on unary resources.

Schedule tasks with start times s and processing times p on a unary resource. The propagator uses the algorithms from: Petr Vilím, Global Constraints in Scheduling, PhD thesis, Charles University, Prague, Czech Republic, 2007.

The propagator performs overload checking, detectable precendence propagation, not-first-not-last propagation, and edge finding.

  • Throws an exception of type Int::ArgumentSizeMismatch, if s and p are of different size.
  • Throws an exception of type Int::ArgumentSame, if s contains the same unassigned variable multiply.
  • Throws an exception of type Int::OutOfLimits, if p contains an integer that is negative or that could generate an overflow.

Definition at line 47 of file unary.cpp.

void Gecode::unary ( Home  home,
const IntVarArgs &  s,
const IntArgs &  p,
const BoolVarArgs &  m 
)

Post propagators for scheduling optional tasks on unary resources.

Schedule optional tasks with start times s, processing times p, and whether a task is mandatory m (a task is mandatory if the Boolean variable is 1) on a unary resource. The propagator uses the algorithms from: Petr Vilím, Global Constraints in Scheduling, PhD thesis, Charles University, Prague, Czech Republic, 2007.

The propagator performs overload checking, detectable precendence propagation, not-first-not-last propagation, and edge finding.

  • Throws an exception of type Int::ArgumentSizeMismatch, if s, p, or m are of different size.
  • Throws an exception of type Int::ArgumentSame, if s contains the same unassigned variable multiply.
  • Throws an exception of type Int::OutOfLimits, if p contains an integer that is negative or that could generate an overflow.

Definition at line 101 of file unary.cpp.

void Gecode::unary ( Home  home,
const TaskTypeArgs &  t,
const IntVarArgs &  s,
const IntArgs &  p 
)

Post propagators for scheduling tasks on unary resources.

Schedule tasks with flexible times flex and fixed times fix on a unary resource. For each task, it depends on t how the flexible and fix times are interpreted:

  • If t[i] is TT_FIXP, then flex[i] is the start time and fix[i] is the processing time.
  • If t[i] is TT_FIXS, then flex[i] is the end time and fix[i] is the start time.
  • If t[i] is TT_FIXE, then flex[i] is the start time and fix[i] is the end time.

The propagator uses the algorithms from: Petr Vilím, Global Constraints in Scheduling, PhD thesis, Charles University, Prague, Czech Republic, 2007.

The propagator performs overload checking, detectable precendence propagation, not-first-not-last propagation, and edge finding.

  • Throws an exception of type Int::ArgumentSizeMismatch, if s and p are of different size.
  • Throws an exception of type Int::OutOfLimits, if p contains an integer that is negative for a task with type TT_FIXP or that could generate an overflow.

Definition at line 67 of file unary.cpp.

void Gecode::unary ( Home  home,
const TaskTypeArgs &  t,
const IntVarArgs &  s,
const IntArgs &  p,
const BoolVarArgs &  m 
)

Post propagators for scheduling optional tasks on unary resources.

Schedule optional tasks with flexible times flex, fixed times fix, and whether a task is mandatory m (a task is mandatory if the Boolean variable is 1) on a unary resource. For each task, it depends on t how the flexible and fix times are interpreted:

  • If t[i] is TT_FIXP, then flex[i] is the start time and fix[i] is the processing time.
  • If t[i] is TT_FIXS, then flex[i] is the end time and fix[i] is the start time.
  • If t[i] is TT_FIXE, then flex[i] is the start time and fix[i] is the end time.

The propagator uses the algorithms from: Petr Vilím, Global Constraints in Scheduling, PhD thesis, Charles University, Prague, Czech Republic, 2007.

The propagator performs overload checking, detectable precendence propagation, not-first-not-last propagation, and edge finding.

  • Throws an exception of type Int::ArgumentSizeMismatch, if s, p, or m are of different size.
  • Throws an exception of type Int::OutOfLimits, if p contains an integer that is negative for a task with type TT_FIXP or that could generate an overflow.

Definition at line 122 of file unary.cpp.

void Gecode::unary ( Home  home,
const IntVarArgs &  s,
const IntVarArgs &  p,
const IntVarArgs &  e 
)

Post propagators for scheduling tasks on unary resources.

Schedule tasks with start times s, processing times p, and end times e on a unary resource. The propagator uses the algorithms from: Petr Vilím, Global Constraints in Scheduling, PhD thesis, Charles University, Prague, Czech Republic, 2007.

The propagator does not enforce $s_i+p_i=e_i$, this constraint has to be posted in addition to ensure consistency of the task bounds.

The propagator performs overload checking, detectable precendence propagation, not-first-not-last propagation, and edge finding.

The processing times are constrained to be non-negative.

Throws an exception of type Int::ArgumentSizeMismatch, if s and p are of different size.

Definition at line 157 of file unary.cpp.

void Gecode::unary ( Home  home,
const IntVarArgs &  s,
const IntVarArgs &  p,
const IntVarArgs &  e,
const BoolVarArgs &  m 
)

Post propagators for scheduling optional tasks on unary resources.

Schedule optional tasks with start times s, processing times p, end times e, and whether a task is mandatory m (a task is mandatory if the Boolean variable is 1) on a unary resource. The propagator uses the algorithms from: Petr Vilím, Global Constraints in Scheduling, PhD thesis, Charles University, Prague, Czech Republic, 2007.

The propagator does not enforce $s_i+p_i=e_i$, this constraint has to be posted in addition to ensure consistency of the task bounds.

The processing times are constrained to be non-negative.

The propagator performs overload checking, detectable precendence propagation, not-first-not-last propagation, and edge finding.

Throws an exception of type Int::ArgumentSizeMismatch, if s, p, or m are of different size.

Definition at line 174 of file unary.cpp.

void Gecode::cumulative ( Home  home,
int  c,
const TaskTypeArgs &  t,
const IntVarArgs &  flex,
const IntArgs &  fix,
const IntArgs &  u 
)

Post propagators for scheduling tasks on cumulative resources.

Schedule tasks with flexible times flex, fixed times fix, and use capacity u on a cumulative resource with capacity c. For each task, it depends on t how the flexible and fix times are interpreted:

  • If t[i] is TT_FIXP, then flex[i] is the start time and fix[i] is the processing time.
  • If t[i] is TT_FIXS, then flex[i] is the end time and fix[i] is the start time.
  • If t[i] is TT_FIXE, then flex[i] is the start time and fix[i] is the end time.

The propagator performs time-tabling, overload checking, and edge-finding. It uses algorithms taken from:

Petr Vilím, Max Energy Filtering Algorithm for Discrete Cumulative Resources, in W. J. van Hoeve and J. N. Hooker, editors, CPAIOR, volume 5547 of LNCS, pages 294-308. Springer, 2009.

and

Petr Vilím, Edge finding filtering algorithm for discrete cumulative resources in O(kn log n). In I. P. Gent, editor, CP, volume 5732 of LNCS, pages 802-816. Springer, 2009.

  • Throws an exception of type Int::ArgumentSizeMismatch, if t, s p, or u are of different size.
  • Throws an exception of type Int::OutOfLimits, if p, u, or c contain an integer that is not nonnegative, or that could generate an overflow.

Definition at line 48 of file cumulative.cpp.

void Gecode::cumulative ( Home  home,
int  c,
const TaskTypeArgs &  t,
const IntVarArgs &  s,
const IntArgs &  p,
const IntArgs &  u,
const BoolVarArgs &  m 
)

Post propagators for scheduling optional tasks on cumulative resources.

Schedule tasks with flexible times flex, fixed times fix, use capacity u, and whether a task is mandatory m (a task is mandatory if the Boolean variable is 1) on a cumulative resource with capacity c. For each task, it depends on t how the flexible and fix times are interpreted:

  • If t[i] is TT_FIXP, then flex[i] is the start time and fix[i] is the processing time.
  • If t[i] is TT_FIXS, then flex[i] is the end time and fix[i] is the start time.
  • If t[i] is TT_FIXE, then flex[i] is the start time and fix[i] is the end time.

The propagator performs time-tabling, overload checking, and edge-finding. It uses algorithms taken from:

Petr Vilím, Max Energy Filtering Algorithm for Discrete Cumulative Resources, in W. J. van Hoeve and J. N. Hooker, editors, CPAIOR, volume 5547 of LNCS, pages 294-308. Springer, 2009.

and

Petr Vilím, Edge finding filtering algorithm for discrete cumulative resources in O(kn log n). In I. P. Gent, editor, CP, volume 5732 of LNCS, pages 802-816. Springer, 2009.

  • Throws an exception of type Int::ArgumentSizeMismatch, if t, s p, or u are of different size.
  • Throws an exception of type Int::OutOfLimits, if p, u, or c contain an integer that is not nonnegative, or that could generate an overflow.

Definition at line 87 of file cumulative.cpp.

void Gecode::cumulative ( Home  home,
int  c,
const IntVarArgs &  s,
const IntArgs &  p,
const IntArgs &  u 
)

Post propagators for scheduling tasks on cumulative resources.

Schedule tasks with start times s, processing times p, and use capacity u on a cumulative resource with capacity c.

The propagator performs time-tabling, overload checking, and edge-finding. It uses algorithms taken from:

Petr Vilím, Max Energy Filtering Algorithm for Discrete Cumulative Resources, in W. J. van Hoeve and J. N. Hooker, editors, CPAIOR, volume 5547 of LNCS, pages 294-308. Springer, 2009.

and

Petr Vilím, Edge finding filtering algorithm for discrete cumulative resources in O(kn log n). In I. P. Gent, editor, CP, volume 5732 of LNCS, pages 802-816. Springer, 2009.

  • Throws an exception of type Int::ArgumentSizeMismatch, if s p, or u are of different size.
  • Throws an exception of type Int::OutOfLimits, if p, u, or c contain an integer that is not nonnegative, or that could generate an overflow.

Definition at line 126 of file cumulative.cpp.

void Gecode::cumulative ( Home  home,
int  c,
const IntVarArgs &  s,
const IntArgs &  p,
const IntArgs &  u,
const BoolVarArgs &  m 
)

Post propagators for scheduling optional tasks on cumulative resources.

Schedule optional tasks with start times s, processing times p, used capacity u, and whether a task is mandatory m (a task is mandatory if the Boolean variable is 1) on a cumulative resource with capacity c.

The propagator performs time-tabling, overload checking, and edge-finding. It uses algorithms taken from:

Petr Vilím, Max Energy Filtering Algorithm for Discrete Cumulative Resources, in W. J. van Hoeve and J. N. Hooker, editors, CPAIOR, volume 5547 of LNCS, pages 294-308. Springer, 2009.

and

Petr Vilím, Edge finding filtering algorithm for discrete cumulative resources in O(kn log n). In I. P. Gent, editor, CP, volume 5732 of LNCS, pages 802-816. Springer, 2009.

  • Throws an exception of type Int::ArgumentSizeMismatch, if s, p, u, or m are of different size.
  • Throws an exception of type Int::OutOfLimits, if p, u, or c contain an integer that is not nonnegative, or that could generate an overflow.

Definition at line 153 of file cumulative.cpp.

void Gecode::cumulative ( Home  home,
int  c,
const IntVarArgs &  s,
const IntVarArgs &  p,
const IntVarArgs &  e,
const IntArgs &  u 
)

Post propagators for scheduling tasks on cumulative resources.

Schedule tasks with start times s, processing times p, end times e, and use capacity u on a cumulative resource with capacity c.

The propagator does not enforce $s_i+p_i=e_i$, this constraint has to be posted in addition to ensure consistency of the task bounds.

The propagator performs time-tabling, overload checking, and edge-finding. It uses algorithms taken from:

Petr Vilím, Max Energy Filtering Algorithm for Discrete Cumulative Resources, in W. J. van Hoeve and J. N. Hooker, editors, CPAIOR, volume 5547 of LNCS, pages 294-308. Springer, 2009.

and

Petr Vilím, Edge finding filtering algorithm for discrete cumulative resources in O(kn log n). In I. P. Gent, editor, CP, volume 5732 of LNCS, pages 802-816. Springer, 2009.

  • Throws an exception of type Int::ArgumentSizeMismatch, if s p, or u are of different size.
  • Throws an exception of type Int::OutOfLimits, if u or c contain an integer that is not nonnegative, or that could generate an overflow.

Definition at line 181 of file cumulative.cpp.

void Gecode::cumulative ( Home  home,
int  c,
const IntVarArgs &  s,
const IntVarArgs &  p,
const IntVarArgs &  e,
const IntArgs &  u,
const BoolVarArgs &  m 
)

Post propagators for scheduling optional tasks on cumulative resources.

Schedule optional tasks with start times s, processing times p, end times e, used capacity u, and whether a task is mandatory m (a task is mandatory if the Boolean variable is 1) on a cumulative resource with capacity c.

The propagator does not enforce $s_i+p_i=e_i$, this constraint has to be posted in addition to ensure consistency of the task bounds.

The propagator performs time-tabling, overload checking, and edge-finding. It uses algorithms taken from:

Petr Vilím, Max Energy Filtering Algorithm for Discrete Cumulative Resources, in W. J. van Hoeve and J. N. Hooker, editors, CPAIOR, volume 5547 of LNCS, pages 294-308. Springer, 2009.

and

Petr Vilím, Edge finding filtering algorithm for discrete cumulative resources in O(kn log n). In I. P. Gent, editor, CP, volume 5732 of LNCS, pages 802-816. Springer, 2009.

  • Throws an exception of type Int::ArgumentSizeMismatch, if s, p, u, or m are of different size.
  • Throws an exception of type Int::OutOfLimits, if u or c contain an integer that is not nonnegative, or that could generate an overflow.

Definition at line 211 of file cumulative.cpp.