[gecode-users] order of "wait" statements maintained?

Christian Schulte cschulte at kth.se
Tue Apr 30 10:30:01 CEST 2013


Oh, don't worry about performance... That's miniscule compared to
propagation.

Branchers are always executed, even if all variables are assigned (but the
might not generate any branches then).

Cheers
Christian

--
Christian Schulte, Professor of Computer Science, KTH,
www.ict.kth.se/~cschulte/



-----Original Message-----
From: Martin Mann [mailto:mmann at informatik.uni-freiburg.de] 
Sent: Tuesday, April 30, 2013 10:27 AM
To: cschulte at kth.se
Cc: 'gecode user list'
Subject: Re: [gecode-users] order of "wait" statements maintained?


Another question arised when posting this


	branch(*this, A, ..);
	branch( *this, &checkA );
	branch(*this, B, ..);
	wait( *this, A+B, &checkB );

I thought about replacing the wait with another branch call. But are
branchers always called even if all variables are assigned?
Or is the given solution better than the "4-branch-option"?

And where is the true difference also for performance etc.? Guess the wait
call does more checks on the domains?!?

Thanks,
Martin


Am 30.04.2013 09:58, schrieb Martin Mann:
>
> Hi Christian,
>
> guessed as much.. mhh.. think the additional bool var wont be a 
> problem but I will give the branch call with &checkA a first try, 
> since it keeps the CSP small without further variables etc.
>
> Thanks for you help,
> Martin
>
>
> Am 29.04.2013 20:06, schrieb Christian Schulte:
>> Hi Martin,
>>
>> There is no order among several waits. You could either use branch 
>> with a function as you suggested (calling status is in fact fine) or 
>> you could encode the order yourself. Make checkA and checkB assign a 
>> variable and then you wait on these variables as well. Would that do?
>>
>> Cheers
>> Christian
>>
>> --
>> Christian Schulte, www.ict.kth.se/~cschulte/
>>
>>
>>> -----Original Message-----
>>> From: users-bounces at gecode.org [mailto:users-bounces at gecode.org] On 
>>> Behalf Of Martin Mann
>>> Sent: Monday, April 29, 2013 5:39 PM
>>> To: gecode user list
>>> Subject: [gecode-users] order of "wait" statements maintained?
>>>
>>>
>>> Hi everybody,
>>>
>>> for some processing, I post something like this in my Space 
>>> constructor
>>>
>>>     wait( *this,   A, &checkA);
>>>     wait( *this,   B, &checkB);
>>>     wait( *this, A+B, &printAB);
>>>
>>>     branch( *this, A, .. );
>>>     branch( *this, B, .. );
>>>
>>> to do some dedicated successive checks on assignments of A, B and 
>>> both A
>> and
>>> B.
>>>
>>> Since my last printAB depends on the outcome of both checkA and 
>>> checkB
>> (both
>>> might make the CSP fail) I need to know if the processing order of 
>>> the
>> wait
>>> statements the same as their posting order within the constructor... 
>>> :/
>>>
>>> Or is there a better solution to that as posting an according 
>>> branching
>> like
>>>
>>>     branch( *this, &checkA );
>>>
>>> where I first have to trigger constraint propagation in order to 
>>> ensure assignment... !??!
>>>
>>> Thanks for your help,
>>> Martin
>>>
>>>

--
Dr. Martin Mann, Postdoc
Bioinformatics - Inst. of Computer Science Albert-Ludwigs-University
Freiburg
Tel: ++49-761-203-8254
Fax: ++49-761-203-7462
http://www.bioinf.uni-freiburg.de/~mmann/





More information about the users mailing list