Generated on Thu Apr 11 13:59:34 2019 for Gecode by doxygen 1.6.3

Scheduling constraints
[Using integer variables and constraints]

Functions

void Gecode::order (Home home, IntVar s0, int p0, IntVar s1, int p1, BoolVar b, IntPropLevel ipl=IPL_DEF)
 Post propagators for ordering two tasks.
void Gecode::cumulatives (Home home, const IntVarArgs &m, const IntVarArgs &s, const IntVarArgs &p, const IntVarArgs &e, const IntVarArgs &u, const IntArgs &c, bool at_most, IntPropLevel ipl=IPL_DEF)
 Post propagators for the cumulatives constraint.
void Gecode::cumulatives (Home home, const IntArgs &m, const IntVarArgs &s, const IntVarArgs &p, const IntVarArgs &e, const IntVarArgs &u, const IntArgs &c, bool at_most, IntPropLevel ipl=IPL_DEF)
 Post propagators for the cumulatives constraint.
void Gecode::cumulatives (Home home, const IntVarArgs &m, const IntVarArgs &s, const IntArgs &p, const IntVarArgs &e, const IntVarArgs &u, const IntArgs &c, bool at_most, IntPropLevel ipl=IPL_DEF)
 Post propagators for the cumulatives constraint.
void Gecode::cumulatives (Home home, const IntArgs &m, const IntVarArgs &s, const IntArgs &p, const IntVarArgs &e, const IntVarArgs &u, const IntArgs &c, bool at_most, IntPropLevel ipl=IPL_DEF)
 Post propagators for the cumulatives constraint.
void Gecode::cumulatives (Home home, const IntVarArgs &m, const IntVarArgs &s, const IntVarArgs &p, const IntVarArgs &e, const IntArgs &u, const IntArgs &c, bool at_most, IntPropLevel ipl=IPL_DEF)
 Post propagators for the cumulatives constraint.
void Gecode::cumulatives (Home home, const IntArgs &m, const IntVarArgs &s, const IntVarArgs &p, const IntVarArgs &e, const IntArgs &u, const IntArgs &c, bool at_most, IntPropLevel ipl=IPL_DEF)
 Post propagators for the cumulatives constraint.
void Gecode::cumulatives (Home home, const IntVarArgs &m, const IntVarArgs &s, const IntArgs &p, const IntVarArgs &e, const IntArgs &u, const IntArgs &c, bool at_most, IntPropLevel ipl=IPL_DEF)
 Post propagators for the cumulatives constraint.
void Gecode::cumulatives (Home home, const IntArgs &m, const IntVarArgs &s, const IntArgs &p, const IntVarArgs &e, const IntArgs &u, const IntArgs &c, bool at_most, IntPropLevel ipl=IPL_DEF)
 Post propagators for the cumulatives constraint.
void Gecode::unary (Home home, const IntVarArgs &s, const IntArgs &p, IntPropLevel ipl=IPL_DEF)
 Post propagators for scheduling tasks on unary resources.
void Gecode::unary (Home home, const IntVarArgs &s, const IntArgs &p, const BoolVarArgs &m, IntPropLevel ipl=IPL_DEF)
 Post propagators for scheduling optional tasks on unary resources.
void Gecode::unary (Home home, const TaskTypeArgs &t, const IntVarArgs &flex, const IntArgs &fix, IntPropLevel ipl=IPL_DEF)
 Post propagators for scheduling tasks on unary resources.
void Gecode::unary (Home home, const TaskTypeArgs &t, const IntVarArgs &flex, const IntArgs &fix, const BoolVarArgs &m, IntPropLevel ipl=IPL_DEF)
 Post propagators for scheduling optional tasks on unary resources.
void Gecode::unary (Home home, const IntVarArgs &s, const IntVarArgs &p, const IntVarArgs &e, IntPropLevel ipl=IPL_DEF)
 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, IntPropLevel ipl=IPL_DEF)
 Post propagators for scheduling optional tasks on unary resources.
void Gecode::cumulative (Home home, int c, const TaskTypeArgs &t, const IntVarArgs &flex, const IntArgs &fix, const IntArgs &u, IntPropLevel ipl=IPL_DEF)
 Post propagators for scheduling tasks on cumulative resources.
void Gecode::cumulative (Home home, IntVar c, const TaskTypeArgs &t, const IntVarArgs &flex, const IntArgs &fix, const IntArgs &u, IntPropLevel ipl=IPL_DEF)
 Post propagators for scheduling tasks on cumulative resources.
void Gecode::cumulative (Home home, int c, const TaskTypeArgs &t, const IntVarArgs &flex, const IntArgs &fix, const IntArgs &u, const BoolVarArgs &m, IntPropLevel ipl=IPL_DEF)
 Post propagators for scheduling optional tasks on cumulative resources.
void Gecode::cumulative (Home home, IntVar c, const TaskTypeArgs &t, const IntVarArgs &flex, const IntArgs &fix, const IntArgs &u, const BoolVarArgs &m, IntPropLevel ipl=IPL_DEF)
 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, IntPropLevel ipl=IPL_DEF)
 Post propagators for scheduling tasks on cumulative resources.
void Gecode::cumulative (Home home, IntVar c, const IntVarArgs &s, const IntArgs &p, const IntArgs &u, IntPropLevel ipl=IPL_DEF)
 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, IntPropLevel ipl=IPL_DEF)
 Post propagators for scheduling optional tasks on cumulative resources.
void Gecode::cumulative (Home home, IntVar c, const IntVarArgs &s, const IntArgs &p, const IntArgs &u, const BoolVarArgs &m, IntPropLevel ipl=IPL_DEF)
 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, IntPropLevel ipl=IPL_DEF)
 Post propagators for scheduling tasks on cumulative resources.
void Gecode::cumulative (Home home, IntVar c, const IntVarArgs &s, const IntVarArgs &p, const IntVarArgs &e, const IntArgs &u, IntPropLevel ipl=IPL_DEF)
 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, IntPropLevel ipl=IPL_DEF)
 Post propagators for scheduling optional tasks on cumulative resources.
void Gecode::cumulative (Home home, IntVar c, const IntVarArgs &s, const IntVarArgs &p, const IntVarArgs &e, const IntArgs &u, const BoolVarArgs &m, IntPropLevel ipl=IPL_DEF)
 Post propagators for scheduling optional tasks on cumulative resources.

Function Documentation

void Gecode::order ( Home  home,
IntVar  s0,
int  p0,
IntVar  s1,
int  p1,
BoolVar  b,
IntPropLevel  ipl = IPL_DEF 
)

Post propagators for ordering two tasks.

Order two tasks with start times $s_0$ and $s_1$ with processing times $p_0$ and $p_1$ according to Boolean variable b (if b is zero $s_0$ starts before $s_1$).

Throws an exception of Int::OutOfLimits, if the durations or the sum of durations and start times are too large.

void Gecode::cumulatives ( Home  home,
const IntVarArgs &  m,
const IntVarArgs &  s,
const IntVarArgs &  p,
const IntVarArgs &  e,
const IntVarArgs &  u,
const IntArgs &  c,
bool  at_most,
IntPropLevel  ipl = IPL_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 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 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:
home current space
m $ m_i $ is the machine assigned to task $ i $
s $ s_i $ is the start time assigned to task $ i $
p $ p_i $ is the processing time of task $ i $
e $ e_i $ is the end time assigned to task $ i $
u $ u_i $ is the amount of resources consumed by task $ i $
c $ c_r $ is the capacity, the amount of resource available for machine $ r $
at_most at_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)
ipl Supports value-consistency only (ipl = IPL_VAL, default).
Exceptions:
Int::ArgumentSizeMismatch thrown if the sizes of the arguments representing tasks does not match.
Int::OutOfLimits thrown if any numerical argument is larger than Int::Limits::max or less than Int::Limits::min.
void Gecode::cumulatives ( Home  home,
const IntArgs &  m,
const IntVarArgs &  s,
const IntVarArgs &  p,
const IntVarArgs &  e,
const IntVarArgs &  u,
const IntArgs &  c,
bool  at_most,
IntPropLevel  ipl = IPL_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 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 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:
home current space
m $ m_i $ is the machine assigned to task $ i $
s $ s_i $ is the start time assigned to task $ i $
p $ p_i $ is the processing time of task $ i $
e $ e_i $ is the end time assigned to task $ i $
u $ u_i $ is the amount of resources consumed by task $ i $
c $ c_r $ is the capacity, the amount of resource available for machine $ r $
at_most at_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)
ipl Supports value-consistency only (ipl = IPL_VAL, default).
Exceptions:
Int::ArgumentSizeMismatch thrown if the sizes of the arguments representing tasks does not match.
Int::OutOfLimits thrown if any numerical argument is larger than Int::Limits::max or less than Int::Limits::min.

void Gecode::cumulatives ( Home  home,
const IntVarArgs &  m,
const IntVarArgs &  s,
const IntArgs &  p,
const IntVarArgs &  e,
const IntVarArgs &  u,
const IntArgs &  c,
bool  at_most,
IntPropLevel  ipl = IPL_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 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 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:
home current space
m $ m_i $ is the machine assigned to task $ i $
s $ s_i $ is the start time assigned to task $ i $
p $ p_i $ is the processing time of task $ i $
e $ e_i $ is the end time assigned to task $ i $
u $ u_i $ is the amount of resources consumed by task $ i $
c $ c_r $ is the capacity, the amount of resource available for machine $ r $
at_most at_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)
ipl Supports value-consistency only (ipl = IPL_VAL, default).
Exceptions:
Int::ArgumentSizeMismatch thrown if the sizes of the arguments representing tasks does not match.
Int::OutOfLimits thrown if any numerical argument is larger than Int::Limits::max or less than Int::Limits::min.

void Gecode::cumulatives ( Home  home,
const IntArgs &  m,
const IntVarArgs &  s,
const IntArgs &  p,
const IntVarArgs &  e,
const IntVarArgs &  u,
const IntArgs &  c,
bool  at_most,
IntPropLevel  ipl = IPL_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 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 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:
home current space
m $ m_i $ is the machine assigned to task $ i $
s $ s_i $ is the start time assigned to task $ i $
p $ p_i $ is the processing time of task $ i $
e $ e_i $ is the end time assigned to task $ i $
u $ u_i $ is the amount of resources consumed by task $ i $
c $ c_r $ is the capacity, the amount of resource available for machine $ r $
at_most at_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)
ipl Supports value-consistency only (ipl = IPL_VAL, default).
Exceptions:
Int::ArgumentSizeMismatch thrown if the sizes of the arguments representing tasks does not match.
Int::OutOfLimits thrown if any numerical argument is larger than Int::Limits::max or less than Int::Limits::min.

void Gecode::cumulatives ( Home  home,
const IntVarArgs &  m,
const IntVarArgs &  s,
const IntVarArgs &  p,
const IntVarArgs &  e,
const IntArgs &  u,
const IntArgs &  c,
bool  at_most,
IntPropLevel  ipl = IPL_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 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 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:
home current space
m $ m_i $ is the machine assigned to task $ i $
s $ s_i $ is the start time assigned to task $ i $
p $ p_i $ is the processing time of task $ i $
e $ e_i $ is the end time assigned to task $ i $
u $ u_i $ is the amount of resources consumed by task $ i $
c $ c_r $ is the capacity, the amount of resource available for machine $ r $
at_most at_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)
ipl Supports value-consistency only (ipl = IPL_VAL, default).
Exceptions:
Int::ArgumentSizeMismatch thrown if the sizes of the arguments representing tasks does not match.
Int::OutOfLimits thrown if any numerical argument is larger than Int::Limits::max or less than Int::Limits::min.

void Gecode::cumulatives ( Home  home,
const IntArgs &  m,
const IntVarArgs &  s,
const IntVarArgs &  p,
const IntVarArgs &  e,
const IntArgs &  u,
const IntArgs &  c,
bool  at_most,
IntPropLevel  ipl = IPL_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 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 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:
home current space
m $ m_i $ is the machine assigned to task $ i $
s $ s_i $ is the start time assigned to task $ i $
p $ p_i $ is the processing time of task $ i $
e $ e_i $ is the end time assigned to task $ i $
u $ u_i $ is the amount of resources consumed by task $ i $
c $ c_r $ is the capacity, the amount of resource available for machine $ r $
at_most at_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)
ipl Supports value-consistency only (ipl = IPL_VAL, default).
Exceptions:
Int::ArgumentSizeMismatch thrown if the sizes of the arguments representing tasks does not match.
Int::OutOfLimits thrown if any numerical argument is larger than Int::Limits::max or less than Int::Limits::min.

void Gecode::cumulatives ( Home  home,
const IntVarArgs &  m,
const IntVarArgs &  s,
const IntArgs &  p,
const IntVarArgs &  e,
const IntArgs &  u,
const IntArgs &  c,
bool  at_most,
IntPropLevel  ipl = IPL_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 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 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:
home current space
m $ m_i $ is the machine assigned to task $ i $
s $ s_i $ is the start time assigned to task $ i $
p $ p_i $ is the processing time of task $ i $
e $ e_i $ is the end time assigned to task $ i $
u $ u_i $ is the amount of resources consumed by task $ i $
c $ c_r $ is the capacity, the amount of resource available for machine $ r $
at_most at_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)
ipl Supports value-consistency only (ipl = IPL_VAL, default).
Exceptions:
Int::ArgumentSizeMismatch thrown if the sizes of the arguments representing tasks does not match.
Int::OutOfLimits thrown if any numerical argument is larger than Int::Limits::max or less than Int::Limits::min.

void Gecode::cumulatives ( Home  home,
const IntArgs &  m,
const IntVarArgs &  s,
const IntArgs &  p,
const IntVarArgs &  e,
const IntArgs &  u,
const IntArgs &  c,
bool  at_most,
IntPropLevel  ipl = IPL_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 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 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:
home current space
m $ m_i $ is the machine assigned to task $ i $
s $ s_i $ is the start time assigned to task $ i $
p $ p_i $ is the processing time of task $ i $
e $ e_i $ is the end time assigned to task $ i $
u $ u_i $ is the amount of resources consumed by task $ i $
c $ c_r $ is the capacity, the amount of resource available for machine $ r $
at_most at_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)
ipl Supports value-consistency only (ipl = IPL_VAL, default).
Exceptions:
Int::ArgumentSizeMismatch thrown if the sizes of the arguments representing tasks does not match.
Int::OutOfLimits thrown if any numerical argument is larger than Int::Limits::max or less than Int::Limits::min.

void Gecode::unary ( Home  home,
const IntVarArgs &  s,
const IntArgs &  p,
IntPropLevel  ipl = IPL_DEF 
)

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 propagation that depends on the integer propagation level ipl as follows:

  • If IPL_BASIC is set, the propagator performs overload checking and time-tabling propagation.
  • If IPL_ADVANCED is set, the propagator performs overload checking, detectable precendence propagation, not-first-not-last propagation, and edge finding.
  • If both flags are combined (default), all the above listed propagation is performed.

Posting the constraint might throw the following exceptions:

  • 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.
void Gecode::unary ( Home  home,
const IntVarArgs &  s,
const IntArgs &  p,
const BoolVarArgs &  m,
IntPropLevel  ipl = IPL_DEF 
)

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 propagation that depends on the integer propagation level ipl as follows:

  • If IPL_BASIC is set, the propagator performs overload checking and time-tabling propagation.
  • If IPL_ADVANCED is set, the propagator performs overload checking, detectable precendence propagation, not-first-not-last propagation, and edge finding.
  • If both flags are combined (default), all the above listed propagation is performed.

Posting the constraint might throw the following exceptions:

  • 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.
void Gecode::unary ( Home  home,
const TaskTypeArgs &  t,
const IntVarArgs &  flex,
const IntArgs &  fix,
IntPropLevel  ipl = IPL_DEF 
)

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 propagation that depends on the integer propagation level ipl as follows:

  • If IPL_BASIC is set, the propagator performs overload checking and time-tabling propagation.
  • If IPL_ADVANCED is set, the propagator performs overload checking, detectable precendence propagation, not-first-not-last propagation, and edge finding.
  • If both flags are combined (default), all the above listed propagation is performed.

Posting the constraint might throw the following exceptions:

  • 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.
void Gecode::unary ( Home  home,
const TaskTypeArgs &  t,
const IntVarArgs &  flex,
const IntArgs &  fix,
const BoolVarArgs &  m,
IntPropLevel  ipl = IPL_DEF 
)

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 propagation that depends on the integer propagation level ipl as follows:

  • If IPL_BASIC is set, the propagator performs overload checking and time-tabling propagation.
  • If IPL_ADVANCED is set, the propagator performs overload checking, detectable precendence propagation, not-first-not-last propagation, and edge finding.
  • If both flags are combined (default), all the above listed propagation is performed.

Posting the constraint might throw the following exceptions:

  • 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.
void Gecode::unary ( Home  home,
const IntVarArgs &  s,
const IntVarArgs &  p,
const IntVarArgs &  e,
IntPropLevel  ipl = IPL_DEF 
)

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 propagation that depends on the integer propagation level ipl as follows:

  • If IPL_BASIC is set, the propagator performs overload checking and time-tabling propagation.
  • If IPL_ADVANCED is set, the propagator performs overload checking, detectable precendence propagation, not-first-not-last propagation, and edge finding.
  • If both flags are combined (default), all the above listed propagation is performed.

The processing times are constrained to be non-negative.

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

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

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 performs propagation that depends on the integer propagation level ipl as follows:

  • If IPL_BASIC is set, the propagator performs overload checking and time-tabling propagation.
  • If IPL_ADVANCED is set, the propagator performs overload checking, detectable precendence propagation, not-first-not-last propagation, and edge finding.
  • If both flags are combined, all the above listed propagation is performed (default).

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.

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

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

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 propagation that depends on the integer propagation level ipl as follows:

  • If IPL_BASIC is set, the propagator performs overload checking and time-tabling propagation.
  • If IPL_ADVANCED is set, the propagator performs overload checking and edge finding.
  • If both flags are combined, all the above listed propagation is performed.

The propagator 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.
void Gecode::cumulative ( Home  home,
IntVar  c,
const TaskTypeArgs &  t,
const IntVarArgs &  flex,
const IntArgs &  fix,
const IntArgs &  u,
IntPropLevel  ipl = IPL_DEF 
)

Post propagators for scheduling tasks on cumulative resources.

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 propagation that depends on the integer propagation level ipl as follows:

  • If IPL_BASIC is set, the propagator performs overload checking and time-tabling propagation.
  • If IPL_ADVANCED is set, the propagator performs overload checking and edge finding.
  • If both flags are combined, all the above listed propagation is performed.
The propagator 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.andPetr 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.

void Gecode::cumulative ( Home  home,
int  c,
const TaskTypeArgs &  t,
const IntVarArgs &  flex,
const IntArgs &  fix,
const IntArgs &  u,
const BoolVarArgs &  m,
IntPropLevel  ipl = IPL_DEF 
)

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 propagation that depends on the integer propagation level ipl as follows:

  • If IPL_BASIC is set, the propagator performs overload checking and time-tabling propagation.
  • If IPL_ADVANCED is set, the propagator performs overload checking and edge finding.
  • If both flags are combined, all the above listed propagation is performed.

The propagator 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.
void Gecode::cumulative ( Home  home,
IntVar  c,
const TaskTypeArgs &  t,
const IntVarArgs &  flex,
const IntArgs &  fix,
const IntArgs &  u,
const BoolVarArgs &  m,
IntPropLevel  ipl = IPL_DEF 
)

Post propagators for scheduling optional tasks on cumulative resources.

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 propagation that depends on the integer propagation level ipl as follows:

  • If IPL_BASIC is set, the propagator performs overload checking and time-tabling propagation.
  • If IPL_ADVANCED is set, the propagator performs overload checking and edge finding.
  • If both flags are combined, all the above listed propagation is performed.
The propagator 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.andPetr 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.

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

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 propagation that depends on the integer propagation level ipl as follows:

  • If IPL_BASIC is set, the propagator performs overload checking and time-tabling propagation.
  • If IPL_ADVANCED is set, the propagator performs overload checking and edge finding.
  • If both flags are combined, all the above listed propagation is performed.

The propagator 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.
void Gecode::cumulative ( Home  home,
IntVar  c,
const IntVarArgs &  s,
const IntArgs &  p,
const IntArgs &  u,
IntPropLevel  ipl = IPL_DEF 
)

Post propagators for scheduling tasks on cumulative resources.

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 propagation that depends on the integer propagation level ipl as follows:

  • If IPL_BASIC is set, the propagator performs overload checking and time-tabling propagation.
  • If IPL_ADVANCED is set, the propagator performs overload checking and edge finding.
  • If both flags are combined, all the above listed propagation is performed.
The propagator 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.andPetr 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.

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

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 propagation that depends on the integer propagation level ipl as follows:

  • If IPL_BASIC is set, the propagator performs overload checking and time-tabling propagation.
  • If IPL_ADVANCED is set, the propagator performs overload checking and edge finding.
  • If both flags are combined, all the above listed propagation is performed.

The propagator 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.
void Gecode::cumulative ( Home  home,
IntVar  c,
const IntVarArgs &  s,
const IntArgs &  p,
const IntArgs &  u,
const BoolVarArgs &  m,
IntPropLevel  ipl = IPL_DEF 
)

Post propagators for scheduling optional tasks on cumulative resources.

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 propagation that depends on the integer propagation level ipl as follows:

  • If IPL_BASIC is set, the propagator performs overload checking and time-tabling propagation.
  • If IPL_ADVANCED is set, the propagator performs overload checking and edge finding.
  • If both flags are combined, all the above listed propagation is performed.
The propagator 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.andPetr 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.

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

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 propagation that depends on the integer propagation level ipl as follows:

  • If IPL_BASIC is set, the propagator performs overload checking and time-tabling propagation.
  • If IPL_ADVANCED is set, the propagator performs overload checking and edge finding.
  • If both flags are combined, all the above listed propagation is performed.

The propagator 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.
void Gecode::cumulative ( Home  home,
IntVar  c,
const IntVarArgs &  s,
const IntVarArgs &  p,
const IntVarArgs &  e,
const IntArgs &  u,
IntPropLevel  ipl = IPL_DEF 
)

Post propagators for scheduling tasks on cumulative resources.

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 propagation that depends on the integer propagation level ipl as follows:

  • If IPL_BASIC is set, the propagator performs overload checking and time-tabling propagation.
  • If IPL_ADVANCED is set, the propagator performs overload checking and edge finding.
  • If both flags are combined, all the above listed propagation is performed.
The propagator 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.andPetr 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.

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

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 propagation that depends on the integer propagation level ipl as follows:

  • If IPL_BASIC is set, the propagator performs overload checking and time-tabling propagation.
  • If IPL_ADVANCED is set, the propagator performs overload checking and edge finding.
  • If both flags are combined, all the above listed propagation is performed.

The propagator 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.
void Gecode::cumulative ( Home  home,
IntVar  c,
const IntVarArgs &  s,
const IntVarArgs &  p,
const IntVarArgs &  e,
const IntArgs &  u,
const BoolVarArgs &  m,
IntPropLevel  ipl = IPL_DEF 
)

Post propagators for scheduling optional tasks on cumulative resources.

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 propagation that depends on the integer propagation level ipl as follows:

  • If IPL_BASIC is set, the propagator performs overload checking and time-tabling propagation.
  • If IPL_ADVANCED is set, the propagator performs overload checking and edge finding.
  • If both flags are combined, all the above listed propagation is performed.
The propagator 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.andPetr 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.