[gecode-users] Initializing domain of IntegerVars

Max Ostrowski ChaosAngel at gmx.de
Mon Jul 18 11:03:40 CEST 2011


-------- Original-Nachricht --------
> Datum: Mon, 18 Jul 2011 10:37:32 +0200
> Von: Guido Tack <tack at gecode.org>
> An: Max Ostrowski <ChaosAngel at gmx.de>
> CC: users at gecode.org
> Betreff: Re: [gecode-users] Initializing domain of IntegerVars

> On 18 Jul 2011, at 10:21, Max Ostrowski wrote:
> 
> > Hello,
> > 
> > currently i have to create some IntegerVariables and some constraints,
> and i'm doing this using the IntVar/2 constructor, restricting the variables
> domain.
> > 
> > Due to some design decisions it could be necessary to change this to
> something like:
> > 
> > IntVar x(*this, MIN_INT,MAX_INT);
> 
> You should use Gecode::Int::Limits::min and ::max here (otherwise you'll
> get an exception).
Sorry, this was only Pseudo-code ...
> 
> > dom(*this, x,2,12);
> > or worse
> > BoolVar a,b;
> > dom(*this, x,2,12, a);
> > dom(*this, x,24,42, b);
> > rel(*this, a, BOT_OR, b, 1).
> > 
> > 
> > Afterwards i will do post further constraints and do search.
> > Is this bad in terms of performance, and if, why.
> 
> In some cases it may lead to less efficient propagators being posted (e.g.
> linear equation propagators exist in different versions depending on the
> variable domains).  In the case of the BOT_OR, it may be even worse if you
> search the x variables before the Boolean variables, because search will try
> everything in min..max instead of just the two possible sets of values
> (see below).
> 
> > (I can understand that i have to post the dom constraint first, because
> sending a constraint already does some propagation.
> 
> Yes, dom constraints have an immediate effect.
> 
> > Furthermore: does the second variant (with the BOT_OR) also restrict the
> domain of the variable?)
> 
> No, it doesn't (it would require something called constructive
> disjunction, which the BOT_OR constraint in Gecode cannot do).  In this case you'll
> have to preprocess your input data yourself to determine the smallest
> possible domains.
> 
> Cheers,
> Guido

Thanks a lot for this information.
Max
> 
> -- 
> Guido Tack, http://people.cs.kuleuven.be/~guido.tack/
> 
> 
> 
> 
> 

-- 
Empfehlen Sie GMX DSL Ihren Freunden und Bekannten und wir
belohnen Sie mit bis zu 50,- Euro! https://freundschaftswerbung.gmx.de



More information about the users mailing list