Re: How does SICStus form its internal constraint queue?




Tomas wrote:
I am conducting some random CSP experiment with binary (allowed
tupples) and the SICStus built in non-binary constraint (up to arity
5). I work in the area of over-constrained CSP (never have solutions).

Constraint layout: all binary constraint posted first followed with a
mix of the non-binary constraint.

When I start removing some non-binary constraint the search result
(resumption, backtrack) stays the same. It seemed that the non-binary
constraint was redundant. I changed the order layout of the constraint
(posted binary constraint last) but the search effort was nevertheless
the same.

My question is; does SICStus forms its own queue, places all the binary
constraints at the head, regardless of the order in which we post them?

SICStus maintains a suspension queue with a simple priority scheme, as
follows. Binary vs. non-binary does not affect the priority. Priority
levels:

1. Indexicals.
2. Globals suspended on value event.
3. Globals suspended on bound change event.
4. Globals suspended on domain value event.

Each level is a mix of queue and stack.

Feel free to email me.
--Mats

.