Gecode::Propagator Class Reference
[Programming actors]
Base-class for propagators. More...
#include <core.hpp>
Protected Member Functions | |
Propagator (Home home) | |
Constructor for posting. | |
Propagator (Space &home, bool share, Propagator &p) | |
Constructor for cloning p. | |
Propagator * | fwd (void) const |
Return forwarding pointer during copying. | |
GPI::Info & | gpi (void) |
Provide access to global propagator information. | |
Propagation | |
| |
virtual void | reschedule (Space &home)=0 |
Schedule function. | |
virtual ExecStatus | propagate (Space &home, const ModEventDelta &med)=0 |
Propagation function. | |
virtual PropCost | cost (const Space &home, const ModEventDelta &med) const =0 |
Cost function. | |
ModEventDelta | modeventdelta (void) const |
Return the modification event delta. | |
virtual ExecStatus | advise (Space &home, Advisor &a, const Delta &d) |
Advise function. | |
virtual void | advise (Space &home, Advisor &a) |
Run advisor a to be run on failure in failed space. | |
Information | |
| |
double | afc (void) const |
Return the accumlated failure count. | |
Id and group support | |
| |
unsigned int | id (void) const |
Return propagator id. | |
PropagatorGroup | group (void) const |
Return group propagator belongs to. | |
void | group (PropagatorGroup g) |
Add propagator to group g. | |
bool | disabled (void) const |
Whether propagator is currently disabled. |
Detailed Description
Base-class for propagators.
Definition at line 1092 of file core.hpp.
Constructor & Destructor Documentation
Gecode::Propagator::Propagator | ( | Home | home | ) | [inline, protected] |
Gecode::Propagator::Propagator | ( | Space & | home, | |
bool | share, | |||
Propagator & | p | |||
) | [inline, protected] |
Member Function Documentation
Propagator * Gecode::Propagator::fwd | ( | void | ) | const [inline, protected] |
GPI::Info & Gecode::Propagator::gpi | ( | void | ) | [inline, protected] |
virtual void Gecode::Propagator::reschedule | ( | Space & | home | ) | [pure virtual] |
Schedule function.
The function is executed when a propagator is enabled again. Note that a propagator should be scheduled with the right modification event delta and should only be scheduled if it is legal to execute the propagator.
Implemented in Gecode::Float::Bool::Ite< View >, Gecode::Float::Linear::Lin< P, N, pc >, Gecode::Int::Arithmetic::ArgMax< VA, VB, tiebreak >, Gecode::Int::BinPacking::Pack, Gecode::Int::Bool::BoolBinary< BVA, BVB >, Gecode::Int::Bool::BoolTernary< BVA, BVB, BVC >, Gecode::Int::Bool::NaryOr< VX, VY >, Gecode::Int::Bool::Clause< VX, VY >, Gecode::Int::Bool::IteBase< V0, V1, V2, pc >, Gecode::Int::Channel::Base< Info, Offset, pc >, Gecode::Int::Channel::LinkMulti, Gecode::Int::Circuit::Dom< View, Offset >, Gecode::Int::Count::IntBase< VX, VY >, Gecode::Int::Count::ViewBase< VX, VY, VZ >, Gecode::Int::Cumulatives::Val< ViewM, ViewP, ViewU, View >, Gecode::Int::Distinct::Bnd< View >, Gecode::Int::Element::Int< V0, V1, Idx, Val >, Gecode::Int::Element::View< VA, VB, VC, pc_ac >, Gecode::Int::Extensional::LayeredGraph< View, Val, Degree, StateIdx >, Gecode::Int::Extensional::Base< View, subscribe >, Gecode::Int::Extensional::Incremental< View >, Gecode::Int::GCC::Val< Card >, Gecode::Int::GCC::Bnd< Card >, Gecode::Int::GCC::Dom< Card >, Gecode::Int::Linear::LinBin< Val, A, B, pc >, Gecode::Int::Linear::ReLinBin< Val, A, B, pc, Ctrl >, Gecode::Int::Linear::LinTer< Val, A, B, C, pc >, Gecode::Int::Linear::Lin< Val, P, N, pc >, Gecode::Int::Linear::ReLin< Val, P, N, pc, Ctrl >, Gecode::Int::Linear::EqBoolInt< VX >, Gecode::Int::Linear::GqBoolInt< VX >, Gecode::Int::Linear::ReGqBoolInt< VX, VB, rm >, Gecode::Int::Linear::ReEqBoolInt< VX, VB, rm >, Gecode::Int::Linear::LinBoolView< XV, YV >, Gecode::Int::Linear::LinBoolScale< SBAP, SBAN, VX, pcx >, Gecode::Int::NoOverlap::Base< Box >, Gecode::Int::NValues::BoolBase< VY >, Gecode::Int::Precede::Single< View >, Gecode::Int::ReUnaryPropagator< View, pc, CtrlView >, Gecode::Int::ReBinaryPropagator< View, pc, CtrlView >, Gecode::Int::ReMixBinaryPropagator< View0, pc0, View1, pc1, CtrlView >, Gecode::Int::Rel::NaryLqLe< View, o >, Gecode::Int::Rel::LexLqLe< VX, VY >, Gecode::Int::Rel::LexNq< VX, VY >, Gecode::Int::Sequence::Sequence< View, Val >, Gecode::Int::Sorted::Sorted< View, Perm >, Gecode::Int::TaskProp< Task, PL >, Gecode::Action::Recorder< View >, Gecode::CHB::Recorder< View >, Gecode::UnaryPropagator< View, pc >, Gecode::BinaryPropagator< View, pc >, Gecode::TernaryPropagator< View, pc >, Gecode::NaryPropagator< View, pc >, Gecode::NaryOnePropagator< View, pc >, Gecode::MixBinaryPropagator< View0, pc0, View1, pc1 >, Gecode::MixTernaryPropagator< View0, pc0, View1, pc1, View2, pc2 >, Gecode::MixNaryOnePropagator< View0, pc0, View1, pc1 >, Gecode::ViewTraceRecorder< View >, Gecode::TraceRecorder, Gecode::Kernel::UnaryWait< View >, Gecode::Kernel::NaryWait< View >, Gecode::Search::Meta::NoGoodsProp, Gecode::Set::Channel::ChannelSorted< View >, Gecode::Set::Channel::ChannelInt< View >, Gecode::Set::Channel::ChannelBool< View >, Gecode::Set::Channel::ChannelSet< View >, Gecode::Set::Element::ElementIntersection< View, View0, View1 >, Gecode::Set::Element::ElementUnion< View, View0, View1 >, Gecode::Set::Element::ElementUnionConst< SView, RView >, Gecode::Set::Element::ElementDisjoint< SView, RView >, Gecode::Set::Int::Weights< View >, Gecode::Set::Precede::Single< View >, Gecode::Set::Rel::ReSubset< View0, View1, CtrlView, rm >, Gecode::Set::Rel::ReEq< View0, View1, CtrlView, rm >, Gecode::Set::Rel::ReLq< View0, View1, rm, strict >, Gecode::Float::Linear::Lin< P, N, PC_FLOAT_BND >, Gecode::Int::Bool::BoolBinary< BV, BV >, Gecode::Int::Bool::IteBase< V0, V1, V2, PC_INT_DOM >, Gecode::Int::Bool::IteBase< V0, V1, V2, PC_INT_BND >, Gecode::Int::Channel::Base< DomInfo< View, Offset >, Offset, PC_INT_DOM >, Gecode::Int::Channel::Base< ValInfo< View >, Offset, PC_INT_VAL >, Gecode::Int::Element::View< VA, VB, VC, PC_INT_DOM >, Gecode::Int::Element::View< VA, VB, VC, PC_INT_BND >, Gecode::Int::Extensional::Base< View, false >, Gecode::Int::Extensional::Base< View >, Gecode::Int::Linear::LinBin< Val, A, B, PC_INT_BND >, Gecode::Int::Linear::LinBin< Val, A, B, PC_INT_VAL >, Gecode::Int::Linear::ReLinBin< Val, A, B, PC_INT_BND, Ctrl >, Gecode::Int::Linear::ReLinBin< Val, A, B, PC_INT_BND, BoolView >, Gecode::Int::Linear::LinTer< Val, A, B, C, PC_INT_BND >, Gecode::Int::Linear::LinTer< Val, A, B, C, PC_INT_VAL >, Gecode::Int::Linear::Lin< Val, View, View, PC_INT_DOM >, Gecode::Int::Linear::Lin< Val, P, N, PC_INT_VAL >, Gecode::Int::Linear::Lin< Val, P, N, PC_INT_BND >, Gecode::Int::Linear::ReLin< Val, P, N, PC_INT_BND, Ctrl >, Gecode::Int::Linear::ReLin< Val, P, N, PC_INT_BND, BoolView >, Gecode::Int::Linear::LinBoolScale< SBAP, SBAN, VX, PC_INT_VAL >, Gecode::Int::Linear::LinBoolScale< SBAP, SBAN, VX, PC_INT_BND >, Gecode::Int::ReUnaryPropagator< View, PC_FLOAT_BND, CtrlView >, Gecode::Int::ReUnaryPropagator< View, PC_INT_DOM, CtrlView >, Gecode::Int::ReUnaryPropagator< View, PC_INT_BND, CtrlView >, Gecode::Int::ReUnaryPropagator< View, PC_INT_DOM, BoolView >, Gecode::Int::ReBinaryPropagator< View, PC_FLOAT_BND, CtrlView >, Gecode::Int::ReBinaryPropagator< View, PC_INT_DOM, CtrlView >, Gecode::Int::ReBinaryPropagator< View, PC_INT_BND, CtrlView >, Gecode::Int::ReMixBinaryPropagator< View, PC_SET_ANY, Gecode::Int::IntView, Gecode::Int::PC_INT_DOM, Gecode::Int::BoolView >, Gecode::Int::TaskProp< OptTask, PL >, Gecode::Int::TaskProp< ManTask, PL >, Gecode::UnaryPropagator< View0, PC_SET_ANY >, Gecode::UnaryPropagator< View, PC_FLOAT_VAL >, Gecode::UnaryPropagator< BoolView, PC_BOOL_VAL >, Gecode::UnaryPropagator< SetView, PC_SET_ANY >, Gecode::BinaryPropagator< View, PC_FLOAT_BND >, Gecode::BinaryPropagator< VX, PC_INT_VAL >, Gecode::BinaryPropagator< IntView, PC_INT_DOM >, Gecode::BinaryPropagator< View, PC_INT_DOM >, Gecode::BinaryPropagator< IntView, PC_INT_BND >, Gecode::BinaryPropagator< View, PC_INT_BND >, Gecode::BinaryPropagator< BoolView, PC_BOOL_VAL >, Gecode::BinaryPropagator< SetView, PC_SET_ANY >, Gecode::BinaryPropagator< BV, PC_BOOL_VAL >, Gecode::TernaryPropagator< View, PC_FLOAT_BND >, Gecode::TernaryPropagator< IntView, PC_INT_DOM >, Gecode::TernaryPropagator< IntView, PC_INT_BND >, Gecode::TernaryPropagator< View, PC_INT_DOM >, Gecode::TernaryPropagator< View, PC_INT_BND >, Gecode::NaryPropagator< View, PC_FLOAT_BND >, Gecode::NaryPropagator< VX, PC_BOOL_NONE >, Gecode::NaryPropagator< View, PC_INT_DOM >, Gecode::NaryPropagator< View, PC_INT_VAL >, Gecode::NaryPropagator< View, Int::PC_INT_DOM >, Gecode::NaryPropagator< View, PC_INT_BND >, Gecode::NaryPropagator< View, PC_INT_NONE >, Gecode::NaryPropagator< View, PC_GEN_NONE >, Gecode::NaryPropagator< SetView, PC_SET_ANY >, Gecode::NaryPropagator< View, PC_SET_NONE >, Gecode::NaryPropagator< BV, PC_BOOL_VAL >, Gecode::NaryOnePropagator< View, PC_FLOAT_BND >, Gecode::NaryOnePropagator< View, PC_INT_DOM >, Gecode::NaryOnePropagator< View, PC_INT_BND >, Gecode::NaryOnePropagator< SetView, PC_SET_ANY >, Gecode::MixBinaryPropagator< View, PC_SET_ANY, Gecode::Int::IntView, Gecode::Int::PC_INT_BND >, Gecode::MixBinaryPropagator< View0, PC_INT_VAL, View1, PC_INT_VAL >, Gecode::MixBinaryPropagator< View0, PC_FLOAT_VAL, View1, PC_FLOAT_VAL >, Gecode::MixBinaryPropagator< VA, PC_INT_DOM, VB, PC_INT_DOM >, Gecode::MixBinaryPropagator< VA, PC_INT_BND, VB, PC_INT_BND >, Gecode::MixBinaryPropagator< View0, PC_SET_CGLB, View1, PC_SET_CLUB >, Gecode::MixBinaryPropagator< V0, PC_INT_VAL, V1, PC_INT_VAL >, Gecode::MixBinaryPropagator< A, PC_FLOAT_BND, B, PC_FLOAT_BND >, Gecode::MixBinaryPropagator< View0, PC_SET_VAL, View1, PC_SET_VAL >, Gecode::MixBinaryPropagator< View, PC_SET_ANY, Gecode::Int::IntView, Gecode::Int::PC_INT_DOM >, Gecode::MixBinaryPropagator< VA, PC_FLOAT_BND, VB, PC_FLOAT_BND >, Gecode::MixBinaryPropagator< View0, PC_INT_DOM, View1, PC_INT_DOM >, Gecode::MixBinaryPropagator< VX, PC_BOOL_VAL, VY, PC_BOOL_VAL >, Gecode::MixBinaryPropagator< View0, PC_FLOAT_BND, View1, PC_FLOAT_BND >, Gecode::MixBinaryPropagator< View0, PC_INT_BND, View1, PC_INT_BND >, Gecode::MixBinaryPropagator< View0, PC_SET_ANY, View1, PC_SET_ANY >, Gecode::MixBinaryPropagator< View0, PC_SET_CLUB, View1, PC_SET_CGLB >, Gecode::MixBinaryPropagator< View, PC_SET_CARD, Gecode::Int::IntView, Gecode::Int::PC_INT_BND >, Gecode::MixBinaryPropagator< BoolView, PC_BOOL_VAL, IntView, PC_INT_VAL >, Gecode::MixBinaryPropagator< A, PC_FLOAT_BND, B, Gecode::Int::PC_INT_BND >, Gecode::MixBinaryPropagator< V0, PC_INT_BND, V1, PC_INT_BND >, Gecode::MixTernaryPropagator< VA, PC_FLOAT_BND, VB, PC_FLOAT_BND, VC, PC_FLOAT_BND >, Gecode::MixTernaryPropagator< VA, PC_INT_BND, VB, PC_INT_BND, VC, PC_INT_BND >, Gecode::MixTernaryPropagator< View0, PC_SET_ANY, View1, PC_SET_ANY, View2, PC_SET_CLUB >, Gecode::MixTernaryPropagator< VA, PC_INT_DOM, VB, PC_INT_DOM, VC, PC_INT_DOM >, Gecode::MixTernaryPropagator< View0, PC_SET_ANY, View1, PC_SET_ANY, View2, PC_SET_ANY >, Gecode::MixTernaryPropagator< A, PC_FLOAT_BND, B, PC_FLOAT_BND, C, PC_FLOAT_BND >, Gecode::MixNaryOnePropagator< BoolView, PC_BOOL_NONE, IntView, PC_INT_DOM >, Gecode::MixNaryOnePropagator< IntView, PC_INT_DOM, VY, PC_INT_BND >, Gecode::MixNaryOnePropagator< VX, PC_BOOL_NONE, VY, PC_BOOL_VAL >, Gecode::MixNaryOnePropagator< View0, PC_SET_ANY, View1, PC_SET_ANY >, and Gecode::MixNaryOnePropagator< Gecode::Int::BoolView, Gecode::Int::PC_BOOL_VAL, View, PC_GEN_NONE >.
virtual ExecStatus Gecode::Propagator::propagate | ( | Space & | home, | |
const ModEventDelta & | med | |||
) | [pure virtual] |
Propagation function.
The propagation function must return an execution status as follows:
- ES_FAILED: the propagator has detected failure
- ES_NOFIX: the propagator has done propagation
- ES_FIX: the propagator has done propagation and has computed a fixpoint. That is, running the propagator immediately again will do nothing.
Apart from the above values, a propagator can return the result from calling one of the functions defined by a space:
- ES_SUBSUMED: the propagator is subsumed and has been already deleted.
- ES_NOFIX_PARTIAL: the propagator has consumed some of its propagation events.
- ES_FIX_PARTIAL: the propagator has consumed some of its propagation events and with respect to these events is at fixpoint For more details, see the individual functions.
Implemented in Gecode::Float::Arithmetic::SqrPlus< VA, VB >, Gecode::Float::Arithmetic::Sqr< View >, Gecode::Float::Arithmetic::Sqrt< A, B >, Gecode::Float::Arithmetic::Abs< A, B >, Gecode::Float::Arithmetic::Pow< A, B >, Gecode::Float::Arithmetic::NthRoot< A, B >, Gecode::Float::Arithmetic::MultZeroOne< View >, Gecode::Float::Arithmetic::MultPlus< VA, VB, VC >, Gecode::Float::Arithmetic::Mult< View >, Gecode::Float::Arithmetic::Div< A, B, C >, Gecode::Float::Arithmetic::Min< A, B, C >, Gecode::Float::Arithmetic::Max< A, B, C >, Gecode::Float::Arithmetic::NaryMax< View >, Gecode::Float::Bool::Ite< View >, Gecode::Float::Channel::Channel< A, B >, Gecode::Float::Linear::Eq< P, N >, Gecode::Float::Linear::Lq< P, N >, Gecode::Float::Rel::Eq< View0, View1 >, Gecode::Float::Rel::NaryEq< View >, Gecode::Float::Rel::ReEq< View, CtrlView, rm >, Gecode::Float::Rel::ReEqFloat< View, CtrlView, rm >, Gecode::Float::Rel::Nq< View0, View1 >, Gecode::Float::Rel::NqFloat< View >, Gecode::Float::Rel::Lq< View >, Gecode::Float::Rel::Le< View >, Gecode::Float::Rel::ReLqFloat< View, CtrlView, rm >, Gecode::Float::Rel::ReLeFloat< View, CtrlView, rm >, Gecode::Float::Rel::ReLq< View, CtrlView, rm >, Gecode::Float::Transcendental::Exp< A, B >, Gecode::Float::Transcendental::Pow< A, B >, Gecode::Float::Trigonometric::Sin< A, B >, Gecode::Float::Trigonometric::Cos< A, B >, Gecode::Float::Trigonometric::ASin< A, B >, Gecode::Float::Trigonometric::ACos< A, B >, Gecode::Float::Trigonometric::Tan< A, B >, Gecode::Float::Trigonometric::ATan< A, B >, Gecode::Int::Arithmetic::AbsBnd< View >, Gecode::Int::Arithmetic::AbsDom< View >, Gecode::Int::Arithmetic::MaxBnd< View >, Gecode::Int::Arithmetic::NaryMaxBnd< View >, Gecode::Int::Arithmetic::MaxDom< View >, Gecode::Int::Arithmetic::NaryMaxDom< View >, Gecode::Int::Arithmetic::ArgMax< VA, VB, tiebreak >, Gecode::Int::Arithmetic::PowPlusBnd< VA, VB, Ops >, Gecode::Int::Arithmetic::PowBnd< Ops >, Gecode::Int::Arithmetic::PowPlusDom< VA, VB, Ops >, Gecode::Int::Arithmetic::PowDom< Ops >, Gecode::Int::Arithmetic::NrootPlusBnd< Ops, minus >, Gecode::Int::Arithmetic::NrootBnd< Ops >, Gecode::Int::Arithmetic::NrootPlusDom< Ops, minus >, Gecode::Int::Arithmetic::NrootDom< Ops >, Gecode::Int::Arithmetic::MultZeroOne< View, pc >, Gecode::Int::Arithmetic::MultPlusBnd< VA, VB, VC >, Gecode::Int::Arithmetic::MultBnd, Gecode::Int::Arithmetic::MultPlusDom< VA, VB, VC >, Gecode::Int::Arithmetic::MultDom, Gecode::Int::Arithmetic::DivPlusBnd< VA, VB, VC >, Gecode::Int::Arithmetic::DivBnd< View >, Gecode::Int::Arithmetic::DivMod< View >, Gecode::Int::BinPacking::Pack, Gecode::Int::Bool::OrTrueSubsumed< BV >, Gecode::Int::Bool::Eq< BVA, BVB >, Gecode::Int::Bool::NaryEq< BV >, Gecode::Int::Bool::Lq< BV >, Gecode::Int::Bool::NaryLq< VX >, Gecode::Int::Bool::BinOrTrue< BVA, BVB >, Gecode::Int::Bool::TerOrTrue< BV >, Gecode::Int::Bool::QuadOrTrue< BV >, Gecode::Int::Bool::Or< BVA, BVB, BVC >, Gecode::Int::Bool::NaryOr< VX, VY >, Gecode::Int::Bool::NaryOrTrue< BV >, Gecode::Int::Bool::Eqv< BVA, BVB, BVC >, Gecode::Int::Bool::NaryEqv, Gecode::Int::Bool::Clause< VX, VY >, Gecode::Int::Bool::ClauseTrue< VX, VY >, Gecode::Int::Bool::IteBnd< V0, V1, V2 >, Gecode::Int::Bool::IteDom< V0, V1, V2 >, Gecode::Int::Channel::Val< View, Offset, shared >, Gecode::Int::Channel::Dom< View, Offset, shared >, Gecode::Int::Channel::LinkSingle, Gecode::Int::Channel::LinkMulti, Gecode::Int::Circuit::Val< View, Offset >, Gecode::Int::Circuit::Dom< View, Offset >, Gecode::Int::Count::EqInt< VX, VY >, Gecode::Int::Count::GqInt< VX, VY >, Gecode::Int::Count::LqInt< VX, VY >, Gecode::Int::Count::EqView< VX, VY, VZ, shr, dom >, Gecode::Int::Count::LqView< VX, VY, VZ, shr >, Gecode::Int::Count::GqView< VX, VY, VZ, shr, dom >, Gecode::Int::Cumulative::ManProp< ManTask, Cap, PL >, Gecode::Int::Cumulative::OptProp< OptTask, Cap, PL >, Gecode::Int::Cumulatives::Val< ViewM, ViewP, ViewU, View >, Gecode::Int::Distinct::Val< View >, Gecode::Int::Distinct::Bnd< View >, Gecode::Int::Distinct::Dom< View >, Gecode::Int::Distinct::TerDom< View >, Gecode::Int::Distinct::EqIte, Gecode::Int::Dom::ReRange< View, rm >, Gecode::Int::Dom::ReIntSet< View, rm >, Gecode::Int::Element::Int< V0, V1, Idx, Val >, Gecode::Int::Element::ViewBnd< VA, VB, VC >, Gecode::Int::Element::ViewDom< VA, VB, VC >, Gecode::Int::Element::Pair, Gecode::Int::Exec::When, Gecode::Int::Extensional::LayeredGraph< View, Val, Degree, StateIdx >, Gecode::Int::Extensional::Basic< View, shared >, Gecode::Int::Extensional::Incremental< View >, Gecode::Int::GCC::Val< Card >, Gecode::Int::GCC::Bnd< Card >, Gecode::Int::GCC::Dom< Card >, Gecode::Int::Linear::EqBin< Val, A, B >, Gecode::Int::Linear::ReEqBin< Val, A, B, Ctrl, rm >, Gecode::Int::Linear::NqBin< Val, A, B >, Gecode::Int::Linear::LqBin< Val, A, B >, Gecode::Int::Linear::GqBin< Val, A, B >, Gecode::Int::Linear::ReLqBin< Val, A, B, rm >, Gecode::Int::Linear::EqTer< Val, A, B, C >, Gecode::Int::Linear::NqTer< Val, A, B, C >, Gecode::Int::Linear::LqTer< Val, A, B, C >, Gecode::Int::Linear::Eq< Val, P, N >, Gecode::Int::Linear::DomEq< Val, View >, Gecode::Int::Linear::ReEq< Val, P, N, Ctrl, rm >, Gecode::Int::Linear::Nq< Val, P, N >, Gecode::Int::Linear::Lq< Val, P, N >, Gecode::Int::Linear::ReLq< Val, P, N, rm >, Gecode::Int::Linear::EqBoolInt< VX >, Gecode::Int::Linear::GqBoolInt< VX >, Gecode::Int::Linear::NqBoolInt< VX >, Gecode::Int::Linear::ReGqBoolInt< VX, VB, rm >, Gecode::Int::Linear::ReEqBoolInt< VX, VB, rm >, Gecode::Int::Linear::EqBoolView< XV, YV >, Gecode::Int::Linear::NqBoolView< XV, YV >, Gecode::Int::Linear::GqBoolView< XV, YV >, Gecode::Int::Linear::EqBoolScale< SBAP, SBAN, VX >, Gecode::Int::Linear::LqBoolScale< SBAP, SBAN, VX >, Gecode::Int::Linear::NqBoolScale< SBAP, SBAN, VX >, Gecode::Int::Member::Prop< View >, Gecode::Int::Member::ReProp< View, rm >, Gecode::Int::NoOverlap::ManProp< Box >, Gecode::Int::NoOverlap::OptProp< Box >, Gecode::Int::NValues::EqInt< VY >, Gecode::Int::NValues::LqInt< VY >, Gecode::Int::NValues::GqInt< VY >, Gecode::Int::NValues::EqBool< VY >, Gecode::Int::NValues::LqBool< VY >, Gecode::Int::NValues::GqBool< VY >, Gecode::Int::Precede::Single< View >, Gecode::Int::Rel::EqDom< View0, View1 >, Gecode::Int::Rel::EqVal< View0, View1 >, Gecode::Int::Rel::EqBnd< View0, View1 >, Gecode::Int::Rel::NaryEqDom< View >, Gecode::Int::Rel::NaryEqBnd< View >, Gecode::Int::Rel::NaryLqLe< View, o >, Gecode::Int::Rel::NaryNq< View >, Gecode::Int::Rel::ReEqDom< View, CtrlView, rm >, Gecode::Int::Rel::ReEqBnd< View, CtrlView, rm >, Gecode::Int::Rel::ReEqDomInt< View, CtrlView, rm >, Gecode::Int::Rel::ReEqBndInt< View, CtrlView, rm >, Gecode::Int::Rel::Nq< V0, V1 >, Gecode::Int::Rel::Lq< V0, V1 >, Gecode::Int::Rel::Le< V0, V1 >, Gecode::Int::Rel::ReLq< View, CtrlView, rm >, Gecode::Int::Rel::ReLqInt< View, CtrlView, rm >, Gecode::Int::Rel::LexLqLe< VX, VY >, Gecode::Int::Rel::LexNq< VX, VY >, Gecode::Int::Sequence::Sequence< View, Val >, Gecode::Int::Sorted::Sorted< View, Perm >, Gecode::Int::Unary::ManProp< ManTask, PL >, Gecode::Int::Unary::OptProp< OptTask, PL >, Gecode::Action::Recorder< View >, Gecode::CHB::Recorder< View >, Gecode::ViewTraceRecorder< View >, Gecode::TraceRecorder, Gecode::Kernel::UnaryWait< View >, Gecode::Kernel::NaryWait< View >, Gecode::Search::Meta::NoGoodsProp, Gecode::Set::Channel::ChannelSorted< View >, Gecode::Set::Channel::ChannelInt< View >, Gecode::Set::Channel::ChannelBool< View >, Gecode::Set::Channel::ChannelSet< View >, Gecode::Set::Convex::Convex, Gecode::Set::Convex::ConvexHull, Gecode::Set::Distinct::AtmostOne, Gecode::Set::Element::ElementIntersection< View, View0, View1 >, Gecode::Set::Element::ElementUnion< View, View0, View1 >, Gecode::Set::Element::ElementUnionConst< SView, RView >, Gecode::Set::Element::ElementDisjoint< SView, RView >, Gecode::Set::Int::MinElement< View >, Gecode::Set::Int::NotMinElement< View >, Gecode::Set::Int::ReMinElement< View, rm >, Gecode::Set::Int::MaxElement< View >, Gecode::Set::Int::NotMaxElement< View >, Gecode::Set::Int::ReMaxElement< View, rm >, Gecode::Set::Int::Card< View >, Gecode::Set::Int::Weights< View >, Gecode::Set::Precede::Single< View >, Gecode::Set::RelOp::SuperOfInter< View0, View1, View2 >, Gecode::Set::RelOp::SubOfUnion< View0, View1, View2 >, Gecode::Set::RelOp::Intersection< View0, View1, View2 >, Gecode::Set::RelOp::Union< View0, View1, View2 >, Gecode::Set::RelOp::IntersectionN< View0, View1 >, Gecode::Set::RelOp::UnionN< View0, View1 >, Gecode::Set::RelOp::PartitionN< View0, View1 >, Gecode::Set::Rel::Subset< View0, View1 >, Gecode::Set::Rel::NoSubset< View0, View1 >, Gecode::Set::Rel::ReSubset< View0, View1, CtrlView, rm >, Gecode::Set::Rel::Eq< View0, View1 >, Gecode::Set::Rel::ReEq< View0, View1, CtrlView, rm >, Gecode::Set::Rel::Lq< View0, View1, strict >, Gecode::Set::Rel::ReLq< View0, View1, rm, strict >, Gecode::Set::Rel::Distinct< View0, View1 >, Gecode::Set::Rel::DistinctDoit< View0 >, Gecode::Set::Sequence::Seq, and Gecode::Set::Sequence::SeqU.
virtual PropCost Gecode::Propagator::cost | ( | const Space & | home, | |
const ModEventDelta & | med | |||
) | const [pure virtual] |
Cost function.
Implemented in Gecode::Float::Bool::Ite< View >, Gecode::Float::Linear::Lin< P, N, pc >, Gecode::Float::Rel::NaryEq< View >, Gecode::Int::Arithmetic::AbsBnd< View >, Gecode::Int::Arithmetic::AbsDom< View >, Gecode::Int::Arithmetic::MaxDom< View >, Gecode::Int::Arithmetic::NaryMaxDom< View >, Gecode::Int::Arithmetic::ArgMax< VA, VB, tiebreak >, Gecode::Int::Arithmetic::PowPlusDom< VA, VB, Ops >, Gecode::Int::Arithmetic::PowDom< Ops >, Gecode::Int::Arithmetic::NrootPlusDom< Ops, minus >, Gecode::Int::Arithmetic::NrootDom< Ops >, Gecode::Int::Arithmetic::MultPlusDom< VA, VB, VC >, Gecode::Int::Arithmetic::MultDom, Gecode::Int::BinPacking::Pack, Gecode::Int::Bool::BoolBinary< BVA, BVB >, Gecode::Int::Bool::BoolTernary< BVA, BVB, BVC >, Gecode::Int::Bool::NaryEq< BV >, Gecode::Int::Bool::NaryLq< VX >, Gecode::Int::Bool::NaryOr< VX, VY >, Gecode::Int::Bool::NaryOrTrue< BV >, Gecode::Int::Bool::NaryEqv, Gecode::Int::Bool::Clause< VX, VY >, Gecode::Int::Bool::ClauseTrue< VX, VY >, Gecode::Int::Bool::IteBase< V0, V1, V2, pc >, Gecode::Int::Bool::IteDom< V0, V1, V2 >, Gecode::Int::Channel::Base< Info, Offset, pc >, Gecode::Int::Channel::Dom< View, Offset, shared >, Gecode::Int::Channel::LinkSingle, Gecode::Int::Channel::LinkMulti, Gecode::Int::Circuit::Val< View, Offset >, Gecode::Int::Circuit::Dom< View, Offset >, Gecode::Int::Count::IntBase< VX, VY >, Gecode::Int::Count::ViewBase< VX, VY, VZ >, Gecode::Int::Cumulatives::Val< ViewM, ViewP, ViewU, View >, Gecode::Int::Distinct::Bnd< View >, Gecode::Int::Distinct::Dom< View >, Gecode::Int::Distinct::EqIte, Gecode::Int::Element::Int< V0, V1, Idx, Val >, Gecode::Int::Element::View< VA, VB, VC, pc_ac >, Gecode::Int::Element::ViewDom< VA, VB, VC >, Gecode::Int::Extensional::LayeredGraph< View, Val, Degree, StateIdx >, Gecode::Int::Extensional::Base< View, subscribe >, Gecode::Int::Extensional::Basic< View, shared >, Gecode::Int::Extensional::Incremental< View >, Gecode::Int::GCC::Val< Card >, Gecode::Int::GCC::Bnd< Card >, Gecode::Int::GCC::Dom< Card >, Gecode::Int::Linear::LinBin< Val, A, B, pc >, Gecode::Int::Linear::ReLinBin< Val, A, B, pc, Ctrl >, Gecode::Int::Linear::NqBin< Val, A, B >, Gecode::Int::Linear::LinTer< Val, A, B, C, pc >, Gecode::Int::Linear::Lin< Val, P, N, pc >, Gecode::Int::Linear::DomEq< Val, View >, Gecode::Int::Linear::LinBoolInt< VX >, Gecode::Int::Linear::NqBoolInt< VX >, Gecode::Int::Linear::ReLinBoolInt< VX, VB >, Gecode::Int::Linear::LinBoolView< XV, YV >, Gecode::Int::Linear::LinBoolScale< SBAP, SBAN, VX, pcx >, Gecode::Int::Member::Prop< View >, Gecode::Int::NoOverlap::Base< Box >, Gecode::Int::NValues::IntBase< VY >, Gecode::Int::NValues::BoolBase< VY >, Gecode::Int::Precede::Single< View >, Gecode::Int::ReUnaryPropagator< View, pc, CtrlView >, Gecode::Int::ReBinaryPropagator< View, pc, CtrlView >, Gecode::Int::ReMixBinaryPropagator< View0, pc0, View1, pc1, CtrlView >, Gecode::Int::Rel::EqDom< View0, View1 >, Gecode::Int::Rel::EqVal< View0, View1 >, Gecode::Int::Rel::NaryEqDom< View >, Gecode::Int::Rel::NaryEqBnd< View >, Gecode::Int::Rel::NaryLqLe< View, o >, Gecode::Int::Rel::NaryNq< View >, Gecode::Int::Rel::Nq< V0, V1 >, Gecode::Int::Rel::LexLqLe< VX, VY >, Gecode::Int::Rel::LexNq< VX, VY >, Gecode::Int::Sequence::Sequence< View, Val >, Gecode::Int::Sorted::Sorted< View, Perm >, Gecode::Int::TaskProp< Task, PL >, Gecode::Action::Recorder< View >, Gecode::CHB::Recorder< View >, Gecode::UnaryPropagator< View, pc >, Gecode::BinaryPropagator< View, pc >, Gecode::TernaryPropagator< View, pc >, Gecode::NaryPropagator< View, pc >, Gecode::NaryOnePropagator< View, pc >, Gecode::MixBinaryPropagator< View0, pc0, View1, pc1 >, Gecode::MixTernaryPropagator< View0, pc0, View1, pc1, View2, pc2 >, Gecode::MixNaryOnePropagator< View0, pc0, View1, pc1 >, Gecode::ViewTraceRecorder< View >, Gecode::TraceRecorder, Gecode::Kernel::UnaryWait< View >, Gecode::Kernel::NaryWait< View >, Gecode::Search::Meta::NoGoodsProp, Gecode::Set::Channel::ChannelSorted< View >, Gecode::Set::Channel::ChannelInt< View >, Gecode::Set::Channel::ChannelBool< View >, Gecode::Set::Channel::ChannelSet< View >, Gecode::Set::Element::ElementIntersection< View, View0, View1 >, Gecode::Set::Element::ElementUnion< View, View0, View1 >, Gecode::Set::Element::ElementUnionConst< SView, RView >, Gecode::Set::Element::ElementDisjoint< SView, RView >, Gecode::Set::Int::Weights< View >, Gecode::Set::Precede::Single< View >, Gecode::Set::RelOp::IntersectionN< View0, View1 >, Gecode::Set::RelOp::UnionN< View0, View1 >, Gecode::Set::RelOp::PartitionN< View0, View1 >, Gecode::Set::Rel::ReSubset< View0, View1, CtrlView, rm >, Gecode::Set::Rel::ReEq< View0, View1, CtrlView, rm >, Gecode::Set::Rel::ReLq< View0, View1, rm, strict >, Gecode::Float::Linear::Lin< P, N, PC_FLOAT_BND >, Gecode::Int::Bool::BoolBinary< BV, BV >, Gecode::Int::Bool::IteBase< V0, V1, V2, PC_INT_DOM >, Gecode::Int::Bool::IteBase< V0, V1, V2, PC_INT_BND >, Gecode::Int::Channel::Base< DomInfo< View, Offset >, Offset, PC_INT_DOM >, Gecode::Int::Channel::Base< ValInfo< View >, Offset, PC_INT_VAL >, Gecode::Int::Element::View< VA, VB, VC, PC_INT_DOM >, Gecode::Int::Element::View< VA, VB, VC, PC_INT_BND >, Gecode::Int::Extensional::Base< View, false >, Gecode::Int::Extensional::Base< View >, Gecode::Int::Linear::LinBin< Val, A, B, PC_INT_BND >, Gecode::Int::Linear::LinBin< Val, A, B, PC_INT_VAL >, Gecode::Int::Linear::ReLinBin< Val, A, B, PC_INT_BND, Ctrl >, Gecode::Int::Linear::ReLinBin< Val, A, B, PC_INT_BND, BoolView >, Gecode::Int::Linear::LinTer< Val, A, B, C, PC_INT_BND >, Gecode::Int::Linear::LinTer< Val, A, B, C, PC_INT_VAL >, Gecode::Int::Linear::Lin< Val, View, View, PC_INT_DOM >, Gecode::Int::Linear::Lin< Val, P, N, PC_INT_VAL >, Gecode::Int::Linear::Lin< Val, P, N, PC_INT_BND >, Gecode::Int::Linear::LinBoolScale< SBAP, SBAN, VX, PC_INT_VAL >, Gecode::Int::Linear::LinBoolScale< SBAP, SBAN, VX, PC_INT_BND >, Gecode::Int::ReUnaryPropagator< View, PC_FLOAT_BND, CtrlView >, Gecode::Int::ReUnaryPropagator< View, PC_INT_DOM, CtrlView >, Gecode::Int::ReUnaryPropagator< View, PC_INT_BND, CtrlView >, Gecode::Int::ReUnaryPropagator< View, PC_INT_DOM, BoolView >, Gecode::Int::ReBinaryPropagator< View, PC_FLOAT_BND, CtrlView >, Gecode::Int::ReBinaryPropagator< View, PC_INT_DOM, CtrlView >, Gecode::Int::ReBinaryPropagator< View, PC_INT_BND, CtrlView >, Gecode::Int::ReMixBinaryPropagator< View, PC_SET_ANY, Gecode::Int::IntView, Gecode::Int::PC_INT_DOM, Gecode::Int::BoolView >, Gecode::Int::TaskProp< OptTask, PL >, Gecode::Int::TaskProp< ManTask, PL >, Gecode::UnaryPropagator< View0, PC_SET_ANY >, Gecode::UnaryPropagator< View, PC_FLOAT_VAL >, Gecode::UnaryPropagator< BoolView, PC_BOOL_VAL >, Gecode::UnaryPropagator< SetView, PC_SET_ANY >, Gecode::BinaryPropagator< View, PC_FLOAT_BND >, Gecode::BinaryPropagator< VX, PC_INT_VAL >, Gecode::BinaryPropagator< IntView, PC_INT_DOM >, Gecode::BinaryPropagator< View, PC_INT_DOM >, Gecode::BinaryPropagator< IntView, PC_INT_BND >, Gecode::BinaryPropagator< View, PC_INT_BND >, Gecode::BinaryPropagator< BoolView, PC_BOOL_VAL >, Gecode::BinaryPropagator< SetView, PC_SET_ANY >, Gecode::BinaryPropagator< BV, PC_BOOL_VAL >, Gecode::TernaryPropagator< View, PC_FLOAT_BND >, Gecode::TernaryPropagator< IntView, PC_INT_DOM >, Gecode::TernaryPropagator< IntView, PC_INT_BND >, Gecode::TernaryPropagator< View, PC_INT_DOM >, Gecode::TernaryPropagator< View, PC_INT_BND >, Gecode::NaryPropagator< View, PC_FLOAT_BND >, Gecode::NaryPropagator< VX, PC_BOOL_NONE >, Gecode::NaryPropagator< View, PC_INT_DOM >, Gecode::NaryPropagator< View, PC_INT_VAL >, Gecode::NaryPropagator< View, Int::PC_INT_DOM >, Gecode::NaryPropagator< View, PC_INT_BND >, Gecode::NaryPropagator< View, PC_INT_NONE >, Gecode::NaryPropagator< View, PC_GEN_NONE >, Gecode::NaryPropagator< SetView, PC_SET_ANY >, Gecode::NaryPropagator< View, PC_SET_NONE >, Gecode::NaryPropagator< BV, PC_BOOL_VAL >, Gecode::NaryOnePropagator< View, PC_FLOAT_BND >, Gecode::NaryOnePropagator< View, PC_INT_DOM >, Gecode::NaryOnePropagator< View, PC_INT_BND >, Gecode::NaryOnePropagator< SetView, PC_SET_ANY >, Gecode::MixBinaryPropagator< View, PC_SET_ANY, Gecode::Int::IntView, Gecode::Int::PC_INT_BND >, Gecode::MixBinaryPropagator< View0, PC_INT_VAL, View1, PC_INT_VAL >, Gecode::MixBinaryPropagator< View0, PC_FLOAT_VAL, View1, PC_FLOAT_VAL >, Gecode::MixBinaryPropagator< VA, PC_INT_DOM, VB, PC_INT_DOM >, Gecode::MixBinaryPropagator< VA, PC_INT_BND, VB, PC_INT_BND >, Gecode::MixBinaryPropagator< View0, PC_SET_CGLB, View1, PC_SET_CLUB >, Gecode::MixBinaryPropagator< V0, PC_INT_VAL, V1, PC_INT_VAL >, Gecode::MixBinaryPropagator< A, PC_FLOAT_BND, B, PC_FLOAT_BND >, Gecode::MixBinaryPropagator< View0, PC_SET_VAL, View1, PC_SET_VAL >, Gecode::MixBinaryPropagator< View, PC_SET_ANY, Gecode::Int::IntView, Gecode::Int::PC_INT_DOM >, Gecode::MixBinaryPropagator< VA, PC_FLOAT_BND, VB, PC_FLOAT_BND >, Gecode::MixBinaryPropagator< View0, PC_INT_DOM, View1, PC_INT_DOM >, Gecode::MixBinaryPropagator< VX, PC_BOOL_VAL, VY, PC_BOOL_VAL >, Gecode::MixBinaryPropagator< View0, PC_FLOAT_BND, View1, PC_FLOAT_BND >, Gecode::MixBinaryPropagator< View0, PC_INT_BND, View1, PC_INT_BND >, Gecode::MixBinaryPropagator< View0, PC_SET_ANY, View1, PC_SET_ANY >, Gecode::MixBinaryPropagator< View0, PC_SET_CLUB, View1, PC_SET_CGLB >, Gecode::MixBinaryPropagator< View, PC_SET_CARD, Gecode::Int::IntView, Gecode::Int::PC_INT_BND >, Gecode::MixBinaryPropagator< BoolView, PC_BOOL_VAL, IntView, PC_INT_VAL >, Gecode::MixBinaryPropagator< A, PC_FLOAT_BND, B, Gecode::Int::PC_INT_BND >, Gecode::MixBinaryPropagator< V0, PC_INT_BND, V1, PC_INT_BND >, Gecode::MixTernaryPropagator< VA, PC_FLOAT_BND, VB, PC_FLOAT_BND, VC, PC_FLOAT_BND >, Gecode::MixTernaryPropagator< VA, PC_INT_BND, VB, PC_INT_BND, VC, PC_INT_BND >, Gecode::MixTernaryPropagator< View0, PC_SET_ANY, View1, PC_SET_ANY, View2, PC_SET_CLUB >, Gecode::MixTernaryPropagator< VA, PC_INT_DOM, VB, PC_INT_DOM, VC, PC_INT_DOM >, Gecode::MixTernaryPropagator< View0, PC_SET_ANY, View1, PC_SET_ANY, View2, PC_SET_ANY >, Gecode::MixTernaryPropagator< A, PC_FLOAT_BND, B, PC_FLOAT_BND, C, PC_FLOAT_BND >, Gecode::MixNaryOnePropagator< BoolView, PC_BOOL_NONE, IntView, PC_INT_DOM >, Gecode::MixNaryOnePropagator< IntView, PC_INT_DOM, VY, PC_INT_BND >, Gecode::MixNaryOnePropagator< VX, PC_BOOL_NONE, VY, PC_BOOL_VAL >, Gecode::MixNaryOnePropagator< View0, PC_SET_ANY, View1, PC_SET_ANY >, and Gecode::MixNaryOnePropagator< Gecode::Int::BoolView, Gecode::Int::PC_BOOL_VAL, View, PC_GEN_NONE >.
ModEventDelta Gecode::Propagator::modeventdelta | ( | void | ) | const [inline] |
ExecStatus Gecode::Propagator::advise | ( | Space & | home, | |
Advisor & | a, | |||
const Delta & | d | |||
) | [virtual] |
Advise function.
The advisor is passed as argument a.
A propagator must specialize this advise function, if it uses advisors. The advise function must return an execution status as follows:
- ES_FAILED: the advisor has detected failure.
- ES_FIX: the advisor's propagator (that is, this propagator) does not need to be run.
- ES_NOFIX: the advisor's propagator (that is, this propagator) must be run.
- ES_NOFIX_FORCE: the advisor's propagator (that is, this propagator) must be run and it must forcefully be rescheduled (including recomputation of cost).
Apart from the above values, an advisor can return the result from calling the function defined by a space:
- ES_FIX_DISPOSE: the advisor's propagator does not need to be run and the advisor will be disposed.
- ES_NOFIX_DISPOSE: the advisor's propagator must be run and the advisor will be disposed.
- ES_NOFIX_FORCE_DISPOSE: the advisor's propagator must be run , it must forcefully be rescheduled (including recomputation of cost), and the adviser will be disposed. For more details, see the function documentation.
The delta d describes how the variable has been changed by an operation on the advisor's variable. Typically, the delta information can only be utilized by either static or member functions of views as the actual delta information is both domain and view dependent.
Reimplemented in Gecode::Int::Bool::NaryLq< VX >, Gecode::Int::Bool::NaryOr< VX, VY >, Gecode::Int::Bool::Clause< VX, VY >, Gecode::Int::Channel::LinkMulti, Gecode::Int::Extensional::LayeredGraph< View, Val, Degree, StateIdx >, Gecode::Int::Extensional::Incremental< View >, Gecode::Int::Linear::EqBoolInt< VX >, Gecode::Int::Linear::GqBoolInt< VX >, Gecode::Int::Linear::ReGqBoolInt< VX, VB, rm >, Gecode::Int::Linear::ReEqBoolInt< VX, VB, rm >, Gecode::Int::NValues::BoolBase< VY >, Gecode::Int::Precede::Single< View >, Gecode::Int::Rel::NaryLqLe< View, o >, Gecode::Int::Sequence::Sequence< View, Val >, Gecode::Action::Recorder< View >, Gecode::CHB::Recorder< View >, Gecode::ViewTraceRecorder< View >, Gecode::Set::Channel::ChannelBool< View >, and Gecode::Set::Precede::Single< View >.
Run advisor a to be run on failure in failed space.
Reimplemented in Gecode::Action::Recorder< View >, and Gecode::CHB::Recorder< View >.
double Gecode::Propagator::afc | ( | void | ) | const [inline] |
unsigned int Gecode::Propagator::id | ( | void | ) | const [inline] |
PropagatorGroup Gecode::Propagator::group | ( | void | ) | const [inline] |
void Gecode::Propagator::group | ( | PropagatorGroup | g | ) | [inline] |
bool Gecode::Propagator::disabled | ( | void | ) | const [inline] |
Member Data Documentation
size_t Gecode::Propagator::size |
The documentation for this class was generated from the following files:
- gecode/kernel/core.hpp (Revision: 15597)
- gecode/kernel/core.cpp (Revision: 15597)