[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

fd solver: inconsistent results. (was fd_all_different/1)

From: Claude Certain
Subject: fd solver: inconsistent results. (was fd_all_different/1)
Date: Wed, 10 Nov 2004 16:01:10 +0100


I found inconstent results while solving a CSP with gprolog.
I can hardly tweak the code to find out what's wrong since every try takes
at least 8-12 hours of elapsed time.
And working with smallest I was not able to prove some inconstency.
I give you the skeleton of my code which indeed is very simple and naive.
Please don't comment on my programing style, but just on my mistakes.
I can certainly do better.

populate(List,Delta) :-

constrain(List,Min,Max) :-
        M is Max,

solve([],[]) .
solve([A,B,C,D|R],[Delta|RDelta]) :-
        A #< B , B #< C , C #< D ,
        Delta #= B - A ,
        B - A #= D - C ,
        D - C #= C - B ,
        fd_labeling([A,C],[variable_method(smallest),value_method(min)]) ,
        fd_labeling([B,D],[variable_method(largest),value_method(max)]) ,

Solving the following:
:- length(List,36) , length(Delta,9) , populate(List,Delta) .
succeeds (after 8-12 hours of ellapsd time) with inconsistent results on
both List and Delta (duplicated values).

Solving for a list of length 4*N with N=1 succeeds,
Solving for a list of length 4*N with N= 2,3,4,5,6,7,8 fails. I don't know
what the result has to be. This behavior does not prove inconstency.
The above results from N=1 to 6 are obtained in a glimpse. For 7 it takes
longuer, but it is still a matter of minutes. For 8 it is a matter of
several hours.
Solving for a list of length 4*N with N=9 succeeds with duplicated values.
This behavior does prove inconsistency. Success (?) for N=9 is a matter of
several hours.

fd_vector_max is set to 127, no error message appears during computation.
I urgently need your advice.

best regards,

Claude Certain
OS: windows XP Pro
gprolog version: 1.2.16

reply via email to

[Prev in Thread] Current Thread [Next in Thread]