Hello all, The ask propagator worked fine in Gecode. I tried it with an example to find concurrently if there is path in directed graph. Running around 30000 "ask"s in a 10000 arcs graph it took around 0,112 seconds.
To manage the AskBody I defined a class "AskBody" with a virtual Execute method, that way different bodies can be defined for the ask propagator inhereting from that class. I don't know how to define the "spec" method. Additionally, I had problems with the "reflection post" method since the AskBody is not a Gecode type. What do you think about this definition? Does it seam reasonable? class AskBody { protected: Space * home; public: AskBody(Space * homie) {home = homie;} virtual void Execute() { }; }; class Ask : public UnaryPropagator<BoolView,PC_GEN_ASSIGNED> { protected: using UnaryPropagator<BoolView,PC_GEN_ASSIGNED>::x0; AskBody * askbody; /// Constructor for cloning \a p Ask(Space* home, bool share, Ask& p); /// Constructor for posting Ask(Space* home, BoolView x, AskBody * askbody); public: /// Copy propagator during cloning virtual Actor* copy(Space* home, bool share); /// Perform propagation virtual ExecStatus propagate(Space* home, ModEventDelta med); /// Specification for this propagator //virtual Reflection::ActorSpec spec(const Space* home, // Reflection::VarMap& m) const; /// Post propagator according to specification // static void post(Space* home, Reflection::VarMap& vars, // const Reflection::ActorSpec& spec); /// Mangled propagator name static Support::Symbol ati(void); /// Post ask propagator /// \textbf{blocking\_IF} $<boolean\_var>\ x$ \textbf{then} $<ask\_body>\ askbody$ \textbf{else} $<skip>$ static ExecStatus post(Space* home, BoolView x, AskBody * askbody); }; Thanks for all, -- Mauricio Toro Bermudez Estudiante de Ingeniería de Sistemas Pontificia Universidad Javeriana, Colombia Stagiare à l'Ircam 1, place Igor-Stravinsky 75004 Paris, France de 2008 à 2009
_______________________________________________ Gecode users mailing list [EMAIL PROTECTED] https://www.gecode.org/mailman/listinfo/gecode-users