users-prolog
[Top][All Lists]
Advanced

[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

Hello,

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) :-
        length(List,L_list),
        constrain(List,0,L_list-1),
        constrain(Delta,1,floor((L_list-1)/3)),
        solve(List,Delta).

constrain(List,Min,Max) :-
        M is Max,
        fd_domain(List,Min,M),
        fd_all_different(List).

solve([],[]) .
solve([A,B,C,D|R],[Delta|RDelta]) :-
        A #< B , B #< C , C #< D ,
        fd_labeling(Delta,[variable_method(ff),value_method(max)]),
        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)]) ,
        solve(R,RDelta).

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).

Sumary:
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]