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.


Christian Schulte, https://chschulte.github.io/
Professor of Computer Science, KTH, cschu...@kth.se
Expert Researcher, RISE SICS, christian.schu...@ri.se

-----Original Message-----
From: users-boun...@gecode.org <users-boun...@gecode.org> On Behalf Of 
Sebastian Albert
Sent: 13 April 2018 19:48
To: users@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.


Gecode users mailing list
Gecode users mailing list

Reply via email to