[gecode-users] Diagnosing failures

Christian Schulte cschulte at kth.se
Mon Nov 19 11:34:57 CET 2007


Hi,

To give you an idea, take the following, rather small, examples (they are
included in Gecode).

 - Alpha, 21 propagators, 26 variables: 123 919 propagator executions
 - Golomb rulers 10, 55 variables, 46 propagators: 3 482 588 propagator
executions
 - Magic squares 7, 49 variables, 19 propagators: 9 596 013 propagator
executions

So that's quite something. And most of the propagator executions are not
really interesting. While debugging is difficult, and there is little known
how to do it, the level of abstraction of looking at a single propagator is
not really feasible.

Typically there is a pretty close mapping between a constraint and the
propagator implementing the constraint. But not always and typically not
after some propagations (propagators typically rewrite themselves).

Gecode 2.0 comes with a reflection layer that in principle allows you to get
to know everything about a space, but I do not know whether this will be
available in Gecode/J. Also, I would doubt that the amount of information is
useful.

But what helps a lot is using Gist as said. It will at least tell you the
results of propagation before branching. Just printing before and after
propagation is also not too bad.

Sorry that I cannot be more helpful than that.

Christian

--
Christian Schulte, http://www.imit.kth.se/~schulte/ 

-----Original Message-----
From: users-bounces at gecode.org [mailto:users-bounces at gecode.org] On Behalf
Of Malcolm Ryan
Sent: Friday, November 16, 2007 12:54 AM
To: gecode list
Subject: Re: [gecode-users] Diagnosing failures

On 13/11/2007, at 5:00 PM, Malcolm Ryan wrote:

> On 13/11/2007, at 7:25 AM, Christian Schulte wrote:
>
>> That's not quite an option: well known, there are too many propagator
>> invocations (really, absolutely incomprehensible).
>
> Really? I wouldn't have thought that there were so many. But then
> I've never written an engine.

I've been thinking about this some more and I'd really like to look  
into the debugging problem more deeply. I have some ideas I'd like to  
play with. When you say "too many propagator invocations", exactly  
how many are we talking about? Is there a simple mapping from a  
propagator to the constraint that created it? Is there any way I can  
access this data?

Malcolm

--
       "An inconvenience is only an adventure wrongly considered;
        an adventure is an inconvenience rightly considered."
                 - G.K.Chesterton, On Running After Ones Hat




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





More information about the gecode-users mailing list