Generated on Sat Apr 10 2021 00:00:00 for Gecode by doxygen 1.9.1
unary.cpp File Reference
#include <gecode/int/unary.hh>
#include <gecode/int/distinct.hh>
#include <algorithm>

Go to the source code of this file.

Functions

void Gecode::unary (Home home, const IntVarArgs &s, const IntArgs &p, IntPropLevel ipl=IPL_DEF)
 Post propagators for scheduling tasks on unary resources. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 

Function Documentation

◆ unary() [1/6]

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.

Definition at line 44 of file unary.cpp.

◆ unary() [2/6]

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.

Definition at line 85 of file unary.cpp.

◆ unary() [3/6]

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.

Definition at line 116 of file unary.cpp.

◆ unary() [4/6]

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.

Definition at line 148 of file unary.cpp.

◆ unary() [5/6]

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.

Definition at line 193 of file unary.cpp.

◆ unary() [6/6]

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.

Definition at line 225 of file unary.cpp.