42 namespace Gecode {
namespace Int {
namespace Cumulative {
44 template<
class OptTask,
class Cap>
51 template<
class OptTask,
class Cap>
56 c.update(home,shared,p.
c);
59 template<
class OptTask,
class Cap>
66 for (
int i=n;
i--; ) {
67 if (t[
i].
c() > c.
max())
71 else if (t[
i].mandatory())
77 if (t[0].mandatory()) {
80 }
else if (c.min() >= t[0].c()) {
87 if (c.assigned() && c.val()==1) {
89 for (
int i=t.
size();
i--; )
105 template<
class OptTask,
class Cap>
111 template<
class OptTask,
class Cap>
116 return sizeof(*this);
119 template<
class OptTask,
class Cap>
138 while ((i < n) &&
t[i].mandatory()) i++;
139 while ((j >= 0) && !
t[j].mandatory()) j--;
141 std::swap(
t[i],
t[j]);
152 if (Cap::varderived() &&
c.assigned() &&
c.val()==1) {
154 for (
int i=
t.size(); i--; )
159 for (
int i=
t.size(); i--;)
163 ::
post(home(*
this),ut)));
virtual size_t dispose(Space &home)
Delete propagator and return its size.
#define GECODE_REWRITE(prop, post)
Rewrite propagator by executing post function.
void post(Home home, Term *t, int n, FloatRelType frt, FloatVal c)
Post propagator for linear constraint over floats.
ExecStatus ES_SUBSUMED(Propagator &p)
static ExecStatus post(Home home, Cap c, TaskArray< OptTask > &t)
Post propagator that schedules tasks on cumulative resource.
ExecStatus basic(Space &home, bool &subsumed, Cap c, TaskArray< Task > &t)
Perform basic propagation.
ExecStatus overload(Space &home, int c, TaskArray< ManTask > &t)
Check mandatory tasks t for overload.
Scheduling propagator for cumulative resource with optional tasks.
virtual Actor * copy(Space &home, bool share)
Perform copying during cloning.
Traits class for mapping tasks to task views.
Base-class for both propagators and branchers.
#define GECODE_ES_CHECK(es)
Check whether execution status es is failed or subsumed, and forward failure or subsumption.
Gecode::FloatVal c(-8, 8)
int p
Number of positive literals for node type.
Gecode::IntArgs i(4, 1, 2, 3, 4)
int n
Number of negative literals for node type.
const Gecode::PropCond PC_INT_BND
Propagate when minimum or maximum of a view changes.
const Gecode::PropCond PC_INT_DOM
Propagate when domain changes.
#define GECODE_ME_CHECK(me)
Check whether modification event me is failed, and forward failure.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
ExecStatus subsumed(Space &home, Propagator &p, TaskArray< Task > &t)
Check tasks t for subsumption.
OptProp(Home home, Cap c, TaskArray< OptTask > &t)
Constructor for creation.
Scheduling propagator for unary resource with optional tasks
const Gecode::ModEvent ME_INT_DOM
Domain operation has changed the domain.
static ModEvent me(const ModEventDelta &med)
Return modification event for view type in med.
int size(void) const
Return size of array (number of elements)
Propagation has not computed fixpoint.
Scheduling propagator for cumulative resource with mandatory tasks.
bool shared(const ConstView< ViewA > &, const ConstView< ViewB > &)
Test whether views share same variable.
Gecode toplevel namespace
friend FloatVal max(const FloatVal &x, const FloatVal &y)
int ModEventDelta
Modification event deltas.
Home class for posting propagators
ExecStatus edgefinding(Space &home, int c, TaskViewArray< TaskView > &t)
const Gecode::ModEvent ME_BOOL_VAL
Domain operation has resulted in a value (assigned variable)