Hello, How should the return value of commit be constructed in a custom Branching class? In the QueenArmies example (copied below), a single constraint is posted whose ModEvent value is converted into an ExecStatus value by me_failed, and that ExecStatus is returned.
virtual ExecStatus commit(Space* home, const BranchingDesc* d, unsigned int a) { QueenArmies *q = static_cast<QueenArmies*>(home); const PosValDesc<bool,2> *pvd = static_cast<const PosValDesc<bool,2>*>(d); bool val = a == 0 ? pvd->val() : !pvd->val(); return me_failed(Int::BoolView(q->w[pvd->pos()]).eq(q, val)) ? ES_FAILED : ES_OK; } However, what if a commit posts many constraints? Is it necessary to observe the ModEvent returned by every posted constraint, and return ES_FAILED if any of them returns ME_INT_FAILED? (My overall aim is to implement some kind of dynamic symmetry breaking. If a search node branches left with (X = v) and right with (X /= v), I'd like to post additional constraints on the right branch -- for example, if X and Y are symmetric, I'd also post (Y /= v). ) _______________________________________________ Gecode users mailing list [EMAIL PROTECTED] https://www.gecode.org/mailman/listinfo/gecode-users