Hi,
I just had the idea that maybe QuickXplain could take advantage of the afc
values, even if you don't have the link between propagators and high-level
constraints. Simply take the afc of the variables, and first try the
constraints that are linked to the variables with high afc.
Cheers,
Guido
Mikael Zayenz Lagerkvist wrote:
> Hi,
>
> Debugging failures in constraint programs is unfortunately a very hard
> problem. A main problem is that the reasons behind a failure to find
> solutions might be very global in nature. As a very simple example, think of
> a ring of less-than constraints (x1 < x2 < ... < xn < x1). There is obviously
> no solution, but the failure depends on all the constraints. Removing any one
> of the constraints gives a solution (given that the initial domains admit a
> solution that is).
>
> One possibility would be for you to implement something like QuickXplain [1],
> which was developed for use in an interactive configuration system. The main
> idea is to find a minimal set of constraints that gives no solutions by
> repeatedly finding constraints that when added lead to failure. If your
> problems are not too hard, then this is probably a good idea and reasonably e
> to implement.
>
> Another possibility, that is more akin to what you are asking, would be to
> use the afc. Afc stands for accumulated failure count, and is used for
> branching heuristics. It simply records the number of times each propagator
> has reported a failure. Note that the afc is a heuristic measure, in that
> there might be many propagators that would have reported failure, but only
> one does so. Unfortunately, while you can access all the propagators and get
> their afc (using the Propagators class), there is no way native to Gecode to
> connect the propagator instances with your model level constraints. That
> means that you would have to modify Gecode itself to use the afc.
>
> Cheers,
> Mikael
>
> [1] http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.23.3472
>
>
> On Wed, Feb 24, 2010 at 8:51 PM, Adrian Secord <[email protected]> wrote:
> Hi, all:
>
> My colleagues and I are working on a user interface research project that
> uses Gecode internally to solve integer set problems. Our experiences with
> Gecode have been excellent; we are limited mostly by our lack of knowledge in
> the field of constraint programming.
>
> In our application, the constraints in our problems come from the user via a
> domain-appropriate user interface and we translate them into Gecode
> equivalents. The difficulty is that the user might specify constraints that
> lead to no solutions being found at all. Our users are not experts.
>
> What we'd like to do is give the user feedback about what they can do to best
> fix the situation, or possibly fix the situation for them. In particular,
> the constraints that come from the user are not necessarily set in stone --
> they are vague and messy, a problem with humans. ;) For our application, it
> is far better to ignore a constraint and come up with some solution than to
> not return a solution at all. The user can then adjust and iterate to get to
> a final solution.
>
> Is there some way to determine what was the "worst" or "tightest" constraint
> after a solution search failed? I'm looking for some indicator that
> constraint A was easy to satisfy while constraint B was difficult to satisfy.
> If we had that then we could suggest that the user drop B, or drop it
> automatically.
>
> I could probably do this crudely by iteratively dropping each constraint in
> turn and counting the number of solutions obtained, but this seems
> unsatisfying in many respects.
>
> Is something like this possible in Gecode? It's similar in some sense to the
> problem of soft constraints, but we don't need a full general solution.
>
> Any pointers or advice would be appreciated.
>
> Thanks!
>
> Adrian.
>
>
>
>
>
> _______________________________________________
> Gecode users mailing list
> [email protected]
> https://www.gecode.org/mailman/listinfo/gecode-users
>
>
>
> --
> Mikael Zayenz Lagerkvist, http://www.ict.kth.se/~zayenz/
> _______________________________________________
> Gecode users mailing list
> [email protected]
> https://www.gecode.org/mailman/listinfo/gecode-users
_______________________________________________
Gecode users mailing list
[email protected]
https://www.gecode.org/mailman/listinfo/gecode-users