Chris Mears wrote: > 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. [...] > 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?
Yes. You can use the GECODE_ME_CHECK and GECODE_ES_CHECK macros, like this: GECODE_ME_CHECK(Int::BoolView(q->w[pvd->pos()]).eq(q, val)); GECODE_ME_CHECK(something else); GECODE_ES_CHECK(call some constraint posting function that returns an ExecStatus); return ES_OK; The macros return ES_FAILED if the ModEvent or ExecStatus is failed, and otherwise do nothing. > (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). ) Yes, that's no problem. Cheers, Guido _______________________________________________ Gecode users mailing list [EMAIL PROTECTED] https://www.gecode.org/mailman/listinfo/gecode-users