[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 |

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

[Prev in Thread] |
**Current Thread** |
[Next in Thread] |

**fd solver: inconsistent results. (was fd_all_different/1)**,
*Claude Certain* **<=**