[gecode-users] Can a propagator hide domain wipe-out of a variable?

Christian Schulte cschulte at kth.se
Mon Apr 16 10:31:59 CEST 2018


Hi, no you can't do that. If a variable operation returns failure, the propagator _must_ report failure as well. This has to do with the fact that the variable domain in most cases has been modified in a way that violates certain invariants. The only thing you can do with a variable like that is inspect it.

Cheers
Christian

--
Christian Schulte, https://chschulte.github.io/
Professor of Computer Science, KTH, cschulte at kth.se
Expert Researcher, RISE SICS, christian.schulte at ri.se

-----Original Message-----
From: users-bounces at gecode.org <users-bounces at gecode.org> On Behalf Of Sebastian Albert
Sent: 13 April 2018 19:48
To: users at gecode.org
Subject: [gecode-users] Can a propagator hide domain wipe-out of a variable?

Dear list

I consider using "conditional variables", i.e., similar to "conditional constraints" (a.k.a. reified constraints), I want to have a set (array) of variables among which only (exactly) one will be actually "active" in any solution, selected by another variable (call it the "selection"
variable), and only the active/selected one has to fulfill its constraints. Now I would implement propagators that are aware of this, and when their propagation finds out that one of the candidates from the conditional variables has no possible values left in its domain (via pruning its view completely, resulting in a "failed" modification event), then, instead of failing the current space, the propagator should "hide" this failure and instead prune this candidate from the domain of the selection variable.

Is this a possible way to go in Gecode? If I understand MPG, page 310, correctly, this should be possible, since it's the propagator's obligation to report any failure. However, in chapter 25, reification is not implemented by checking for some ME_FAIL, but rather by inspecting the domain individually (which is easy in bounds propagation, but seems unnecessarily intricate in case of domain propagation).
Furthermore, is there an existing name for this concept (like there is "reification" on constraints)? Maybe it really is just reification in disguise.

Regards
Sebastian

_______________________________________________
Gecode users mailing list
users at gecode.org
https://www.gecode.org/mailman/listinfo/gecode-users


More information about the users mailing list