[gecode-users] Learning in GeCode/SMT
Max
chaosangel at gmx.de
Mon Oct 13 14:00:38 CEST 2008
At first am just forwarding my private mail contact with Guido Tack, as
it may be interesting to other on the mailing list.
Thank you for the answer. Its a pity that the learning techniques have
not made it into CSP yet.
I want to integrate a CSP solver into an ASP Solver, a reasoning system
for logic programs.
The advantage of learning from CSP solvers would be to get a good
"reason" why literals/constraints can be propagated. SAT and ASP systems
use a learning approach based on "reasons" and conflict-learning. So my
system could use the reasons of the CSP solver to produce better
conflicts and prune the search space. If it is not supported i will have
to use a trivial reason, which means a constraint rule applies because
of all other constraint rules the same variable occurs in. But this
reason is not very specific and is not very applicable for backjumping.
Maybe someone of the SMT (Sat Modulo Theory) area reads this message and
can provide information on how this is done in SMT Solvers, as they
incorporate CSP into SAT and using learning techniques. But all systems
i found up to now seam to have written their own theory(CSP) solver.
So if someone knows a CSP library capable of producing non trivial
reasons and maybe doing conflict analysis, it would be great to post
them here. Or maybe someone has an understaning how the SMT people do
the things they do.
Best regards,
Max Ostrowski
> Hi.
>
> Max wrote:
> you probably already know me from the GeCode mailing list.
> I just have a silly? question that i do not wanted to post on the list.
> It regards learning in gecode.
> I'm not very familiar with constraint programming but it seems to me
> that things like backjumping and conflict learning already made it
> into the current CSP systems.
> Found a paper: Backjump-based backtracking for constraint satisfaction
> problems by Rina Dechter and Daniel Frost
>
> So, does GeCode really not support learning and backjumping? Because
> these features seem to be necessary for my diploma thesis and gecode
> seems to be a state of the art CSP solver and one of the best looking.
> So my first question would be: Why it is not supported? - and my
> second barefaced question- : Do you know a similar CSP lib where it is
> supported?
It is not supported (and won't be in the near future), because no one
knows how to do it properly. The work by Dechter et al uses a naive
model, where CSPs are represented entirely by binary constraints which
are given as lists of allowed pairs of values. In this setup, learning
is relatively straightforward. In a realistic, propagation-based
constraint solver, it is not.
That also answers your second question: I don't know of any realistic
library that does learning. None of the commercial packages (ILOG
Solver, SICStus Prolog, B-Prolog) incorporates learning, nor does any of
the other free libraries like Choco or Minion. The closest you can get
is the work on "Propagation = Lazy Clause Generation"
(http://www.cs.bgu.ac.il/~mcodish/Papers/Pages/cp07.html), this is the
most promising attempt at using SAT learning technology for CP solving I
know of (but it's quite different from classic CP solvers).
Btw, you can ask questions like this on the mailing list, no problem.
It's about why we do/don't do certain things, so it definitely fits!
Maybe you can elaborate how learning is important for what you want to do.
Cheers,
Guido
More information about the gecode-users
mailing list