36#ifndef __GECODE_INT_UNARY_HH__
37#define __GECODE_INT_UNARY_HH__
51namespace Gecode {
namespace Int {
namespace Unary {
143 template<
class Char,
class Traits>
144 std::basic_ostream<Char,Traits>&
186 int pmin(
void)
const;
188 int pmax(
void)
const;
217 template<
class Char,
class Traits>
218 std::basic_ostream<Char,Traits>&
241 template<
class Char,
class Traits>
242 std::basic_ostream<Char,Traits>&
265 template<
class Char,
class Traits>
266 std::basic_ostream<Char,Traits>&
302 int pmin(
void)
const;
304 int pmax(
void)
const;
365 template<
class Char,
class Traits>
366 std::basic_ostream<Char,Traits>&
389 template<
class Char,
class Traits>
390 std::basic_ostream<Char,Traits>&
397namespace Gecode {
namespace Int {
namespace Unary {
400 typedef ManFixPTask ManFixPTaskFwd;
440 template<
class Char,
class Traits>
441 std::basic_ostream<Char,Traits>&
448 template<
class Char,
class Traits>
449 std::basic_ostream<Char,Traits>&
456 template<
class Char,
class Traits>
457 std::basic_ostream<Char,Traits>&
464 template<
class Char,
class Traits>
465 std::basic_ostream<Char,Traits>&
472 template<
class Char,
class Traits>
473 std::basic_ostream<Char,Traits>&
482 template<
class Char,
class Traits>
483 std::basic_ostream<Char,Traits>&
490namespace Gecode {
namespace Int {
657namespace Gecode {
namespace Int {
namespace Unary {
673 template<
class TaskView>
691 int ect(
int i)
const;
714 template<
class TaskView>
741 int lect(
void)
const;
748namespace Gecode {
namespace Int {
namespace Unary {
751 template<
class ManTask>
754 template<
class OptTask,
class PL>
766 template<
class ManTask>
769 template<
class OptTask,
class PL>
773 template<
class ManTask>
776 template<
class OptTask,
class PL>
790 template<
class ManTask,
class PL>
813 template<
class OptTask,
class PL>
831 template<
class ManTask>
836 template<
class OptTask>
int p
Number of positive literals for node type.
int n
Number of negative literals for node type.
Base-class for both propagators and branchers.
Boolean integer variables.
Home class for posting propagators
Task mapper: turns a task view into its dual.
Integer view for integer variables.
Class to define an optional from a mandatory task.
Unary::ManFixPSETaskFwd TaskViewFwd
The forward task view type.
Unary::ManFixPSETaskBwd TaskViewBwd
The backward task view type.
Unary::ManFixPTaskFwd TaskViewFwd
The forward task view type.
Unary::ManFixPTaskBwd TaskViewBwd
The backward task view type.
Unary::ManFlexTaskFwd TaskViewFwd
The forward task view type.
Unary::ManFlexTaskBwd TaskViewBwd
The backward task view type.
Unary::ManFixPTask ManTask
The corresponding mandatory task.
Unary::OptFixPSETaskBwd TaskViewBwd
The backward task view type.
Unary::OptFixPSETaskFwd TaskViewFwd
The forward task view type.
Unary::OptFixPTaskBwd TaskViewBwd
The backward task view type.
Unary::OptFixPTaskFwd TaskViewFwd
The forward task view type.
Unary::ManFixPTask ManTask
The corresponding mandatory task.
Unary::ManFlexTask ManTask
The corresponding mandatory task.
Unary::OptFlexTaskBwd TaskViewBwd
The backward task view type.
Unary::OptFlexTaskFwd TaskViewFwd
The forward task view type.
Traits class for mapping tasks to task views.
Task trees for task views with node type Node.
const TaskViewArray< TaskView > & tasks
const OmegaNode & root(void) const
Unary::ManFixPSETask Task
The task type.
Unary::ManFixPSETask Task
The task type.
Unary::ManFixPTask Task
The task type.
Unary::ManFixPTask Task
The task type.
Unary::ManFlexTask Task
The task type.
Unary::ManFlexTask Task
The task type.
Unary::OptFixPSETask Task
The task type.
Unary::OptFixPSETask Task
The task type.
Unary::OptFixPTask Task
The task type.
Unary::OptFixPTask Task
The task type.
Unary::OptFlexTask Task
The task type.
Unary::OptFlexTask Task
The task type.
Traits class for mapping task views to tasks.
Unary (mandatory) task with fixed processing, start or end time
int ect(void) const
Return earliest completion time.
ModEvent norun(Space &home, int e, int l)
Update such that task cannot run from e to l.
int pmax(void) const
Return maximum processing time.
int pmin(void) const
Return minimum processing time.
ManFixPSETask(void)
Default constructor.
void init(TaskType t, IntVar s, int p)
Initialize task.
int est(void) const
Return earliest start time.
int lct(void) const
Return latest completion time.
int lst(void) const
Return latest start time.
void update(Space &home, ManFixPSETask &t)
Update this task to be a clone of task t.
Unary (mandatory) task with fixed processing time
int pmax(void) const
Return maximum processing time.
bool optional(void) const
Whether task can still be optional.
ModEvent norun(Space &home, int e, int l)
Update such that task cannot run from e to l.
ManFixPTask(void)
Default constructor.
int est(void) const
Return earliest start time.
int pmin(void) const
Return minimum processing time.
void init(IntVar s, int p)
Initialize with start time s and processing time p.
int ect(void) const
Return earliest completion time.
Int::IntView _s
Start time.
bool assigned(void) const
Test whether task is assigned.
void reschedule(Space &home, Propagator &p, PropCond pc)
Schedule propagator p.
int lct(void) const
Return latest completion time.
IntVar st(void) const
Return start time.
void cancel(Space &home, Propagator &p, PropCond pc)
Cancel subscription of propagator p for task.
int lst(void) const
Return latest start time.
void update(Space &home, ManFixPTask &t)
Update this task to be a clone of task t.
bool mandatory(void) const
Whether task is mandatory.
bool excluded(void) const
Whether task is excluded.
void subscribe(Space &home, Propagator &p, PropCond pc)
Subscribe propagator p to task.
Unary (mandatory) task with flexible processing time
int lst(void) const
Return latest start time.
int est(void) const
Return earliest start time.
IntVar p(void) const
Return processing time.
int pmin(void) const
Return minimum processing time.
Int::IntView _s
Start time.
IntVar st(void) const
Return start time.
ModEvent norun(Space &home, int e, int l)
Update such that task cannot run from e to l.
void reschedule(Space &home, Propagator &p, PropCond pc)
Schedule propagator p.
bool mandatory(void) const
Whether task is mandatory.
void subscribe(Space &home, Propagator &p, PropCond pc)
Subscribe propagator p to task.
int ect(void) const
Return earliest completion time.
int pmax(void) const
Return maximum processing time.
IntVar e(void) const
Return end time.
void update(Space &home, ManFlexTask &t)
Update this task to be a clone of task t.
Int::IntView _p
Processing time.
bool excluded(void) const
Whether task is excluded.
int lct(void) const
Return latest completion time.
void cancel(Space &home, Propagator &p, PropCond pc)
Cancel subscription of propagator p for task.
ManFlexTask(void)
Default constructor.
bool optional(void) const
Whether task can still be optional.
bool assigned(void) const
Test whether task is assigned.
void init(IntVar s, IntVar p, IntVar e)
Initialize with start time s, processing time p, end time e.
Scheduling propagator for unary resource with mandatory tasks
static ExecStatus post(Home home, TaskArray< ManTask > &t)
Post propagator that schedules tasks on unary resource.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual Actor * copy(Space &home)
Perform copying during cloning.
ManProp(Home home, TaskArray< ManTask > &t)
Constructor for creation.
Node for an omega lambda tree.
void update(const OmegaLambdaNode &l, const OmegaLambdaNode &r)
Update node from left child l and right child r.
void init(const OmegaLambdaNode &l, const OmegaLambdaNode &r)
Initialize node from left child l and right child r.
int lp
Processing times for subtree.
static const int undef
Undefined task.
int resEct
Node which is responsible for lect.
int resLp
Node which is responsible for lp.
int lect
Earliest completion times for subtree.
Omega-lambda trees for computing ect of task sets.
int responsible(void) const
Return responsible task.
OmegaLambdaTree(Region &r, const TaskViewArray< TaskView > &t, bool inc=true)
Initialize tree for tasks t with all tasks included, if inc is true.
void shift(int i)
Shift task with index i from omega to lambda.
void lremove(int i)
Remove task with index i from lambda.
bool lempty(void) const
Whether has responsible task.
void oinsert(int i)
Insert task with index i to omega.
int lect(void) const
Return earliest completion time of all tasks excluding lambda tasks.
void linsert(int i)
Insert task with index i to lambda.
int ect(void) const
Return earliest completion time of all tasks.
int ect
Earliest completion time for subtree.
void init(const OmegaNode &l, const OmegaNode &r)
Initialize node from left child l and right child r.
int p
Processing time for subtree.
void update(const OmegaNode &l, const OmegaNode &r)
Update node from left child l and right child r.
Omega trees for computing ect of task sets.
void insert(int i)
Insert task with index i.
int ect(void) const
Return earliest completion time of all tasks.
void remove(int i)
Remove task with index i.
OmegaTree(Region &r, const TaskViewArray< TaskView > &t)
Initialize tree for tasks t.
Unary optional task with fixed processing, start or end time.
OptFixPSETask(void)
Default constructor.
void init(TaskType t, IntVar s, int p, BoolVar m)
Initialize with start time s, processing time p, and mandatory flag m.
Unary optional task with fixed processing time
void init(IntVar s, int p, BoolVar m)
Initialize with start time s, processing time p, and mandatory flag m.
OptFixPTask(void)
Default constructor.
Unary optional task with flexible processing time
OptFlexTask(void)
Default constructor.
void init(IntVar s, IntVar p, IntVar e, BoolVar m)
Initialize with start time s, processing time p, end time e, and mandatory flag m.
Scheduling propagator for unary resource with optional tasks
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
static ExecStatus post(Home home, TaskArray< OptTask > &t)
Post propagator that schedules tasks on unary resource.
OptProp(Home home, TaskArray< OptTask > &t)
Constructor for creation.
virtual Actor * copy(Space &home)
Perform copying during cloning.
Base-class for propagators.
ModEventDelta med
A set of modification events (used during propagation)
int ModEventDelta
Modification event deltas.
TaskType
Type of task for scheduling constraints.
IntPropLevel
Propagation levels for integer propagators.
ExecStatus optpost(Home home, TaskArray< OptTask > &t, IntPropLevel ipl)
Post optional task propagator according to propagation level.
FwdToBwd< OptFixPSETaskFwd > OptFixPSETaskBwd
Backward (dual) optional fixed task view.
FwdToBwd< ManFlexTaskFwd > ManFlexTaskBwd
Backward (dual) mandatory flexible task view.
FwdToBwd< OptFlexTaskFwd > OptFlexTaskBwd
Backward (dual) optional flexible task view.
ExecStatus manpost(Home home, TaskArray< ManTask > &t, IntPropLevel ipl)
Post mandatory task propagator according to propagation level.
FwdToBwd< ManFixPSETaskFwd > ManFixPSETaskBwd
Backward (dual) mandatory fixed task view.
FwdToBwd< OptFixPTaskFwd > OptFixPTaskBwd
Backward (dual) optional fixed task view.
ExecStatus timetabling(Space &home, Propagator &p, TaskArray< Task > &t)
Perform time-tabling propagation.
ExecStatus overload(TaskArray< ManTask > &t)
Check mandatory tasks t for overload.
ExecStatus subsumed(Space &home, Propagator &p, TaskArray< Task > &t)
Check tasks t for subsumption.
ExecStatus detectable(Space &home, TaskArray< ManTask > &t)
Propagate detectable precedences.
FwdToBwd< ManFixPTaskFwd > ManFixPTaskBwd
Backward (dual) mandatory fixed task view.
ExecStatus notfirstnotlast(Space &home, TaskArray< ManTask > &t)
Propagate not-first and not-last.
ExecStatus edgefinding(Space &home, TaskArray< Task > &t)
Propagate by edge-finding.
std::basic_ostream< Char, Traits > & operator<<(std::basic_ostream< Char, Traits > &os, const ManFixPTaskBwd &t)
Gecode toplevel namespace
Post propagator for SetVar SetOpType SetVar SetRelType r
int PropCond
Type for propagation conditions.
int ModEvent
Type for modification events.