Hi I have find an implementaiton in prolog of simple Genetic Algorithms at this url http://www.ida.his.se/ida/~bjorne/GA/Simuleringar/ProGA/
I want to use it to improve my program solitaire.pl (see below) that can only solve listeboule(39,X,Y,Z). but not listeboule(44,X,Y,Z). or listeboulebytheend(6,X,Y,Z),listeboule(39,X,Y,Z1).
Can i have some advice to use PROGA with CIAO-Prolog
the solitaire.pl
mouvement([closeto(boule(2,1),boule(2,2),boule(2,3)), closeto(boule(2,1),boule(4,7),boule(4,4)), closeto(boule(2,1),boule(1,3),boule(1,2)), closeto(boule(2,1),boule(2,4),boule(2,7)), closeto(boule(2,2),boule(2,3),boule(3,1)), closeto(boule(2,2),boule(4,8),boule(4,5)), closeto(boule(2,2),boule(2,1),boule(1,3)), closeto(boule(2,2),boule(2,5),boule(2,8)), closeto(boule(2,3),boule(2,6),boule(2,9)), closeto(boule(2,3),boule(4,9),boule(4,6)), closeto(boule(2,3),boule(2,2),boule(2,1)), closeto(boule(2,3),boule(3,1),boule(3,2)), closeto(boule(2,4),boule(2,5),boule(2,6)), closeto(boule(2,4),boule(2,1),boule(4,7)), closeto(boule(2,4),boule(1,6),boule(1,5)), closeto(boule(2,4),boule(2,7),boule(5,1)), closeto(boule(2,5),boule(2,6),boule(3,4)), closeto(boule(2,5),boule(2,2),boule(4,8)), closeto(boule(2,5),boule(2,4),boule(1,6)), closeto(boule(2,5),boule(2,8),boule(5,2)), closeto(boule(2,6),boule(3,4),boule(3,5)), closeto(boule(2,6),boule(2,3),boule(4,9)), closeto(boule(2,6),boule(2,5),boule(2,4)), closeto(boule(2,6),boule(2,9),boule(5,3)), closeto(boule(2,7),boule(2,8),boule(2,9)), closeto(boule(2,7),boule(2,4),boule(2,1)), closeto(boule(2,7),boule(1,9),boule(1,8)), closeto(boule(2,7),boule(5,1),boule(5,4)), closeto(boule(2,8),boule(2,9),boule(3,7)), closeto(boule(2,8),boule(2,5),boule(2,2)), closeto(boule(2,8),boule(2,7),boule(1,9)), closeto(boule(2,8),boule(5,2),boule(5,5)), closeto(boule(2,9),boule(3,7),boule(3,8)), closeto(boule(2,9),boule(2,6),boule(2,3)), closeto(boule(2,9),boule(2,8),boule(2,7)), closeto(boule(2,9),boule(5,3),boule(5,6)), closeto(boule(1,1),boule(1,2),boule(1,3)), closeto(boule(1,1),boule(1,4),boule(1,7)), closeto(boule(1,2),boule(1,3),boule(2,1)), closeto(boule(1,2),boule(1,5),boule(1,8)), closeto(boule(1,3),boule(2,1),boule(2,2)), closeto(boule(1,3),boule(1,6),boule(1,9)), closeto(boule(1,3),boule(1,2),boule(1,1)), closeto(boule(1,4),boule(1,5),boule(1,6)), closeto(boule(1,5),boule(1,6),boule(2,4)), closeto(boule(1,6),boule(2,4),boule(2,5)), closeto(boule(1,6),boule(1,5),boule(1,4)), closeto(boule(1,7),boule(1,8),boule(1,9)), closeto(boule(1,7),boule(1,4),boule(1,1)), closeto(boule(1,8),boule(1,9),boule(2,7)), closeto(boule(1,8),boule(1,5),boule(1,2)), closeto(boule(1,9),boule(2,7),boule(2,8)), closeto(boule(1,9),boule(1,6),boule(1,3)), closeto(boule(1,9),boule(1,8),boule(1,7)), closeto(boule(3,1),boule(3,2),boule(3,3)), closeto(boule(3,1),boule(2,3),boule(2,2)), closeto(boule(3,1),boule(3,4),boule(3,7)), closeto(boule(3,2),boule(3,1),boule(2,3)), closeto(boule(3,2),boule(3,5),boule(3,8)), closeto(boule(3,3),boule(3,2),boule(3,1)), closeto(boule(3,3),boule(3,6),boule(3,9)), closeto(boule(3,4),boule(2,6),boule(2,5)), closeto(boule(3,4),boule(3,5),boule(3,6)), closeto(boule(3,5),boule(3,4),boule(2,6)), closeto(boule(3,6),boule(3,5),boule(3,4)), closeto(boule(3,7),boule(3,8),boule(3,9)), closeto(boule(3,7),boule(3,4),boule(3,1)), closeto(boule(3,7),boule(2,9),boule(2,8)), closeto(boule(3,8),boule(3,5),boule(3,2)), closeto(boule(3,8),boule(3,7),boule(2,9)), closeto(boule(3,9),boule(3,6),boule(3,3)), closeto(boule(3,9),boule(3,8),boule(3,7)), closeto(boule(4,1),boule(4,2),boule(4,3)), closeto(boule(4,1),boule(4,4),boule(4,7)), closeto(boule(4,2),boule(4,5),boule(4,8)), closeto(boule(4,3),boule(4,2),boule(4,1)), closeto(boule(4,3),boule(4,6),boule(4,9)), closeto(boule(4,4),boule(4,5),boule(4,6)), closeto(boule(4,4),boule(4,7),boule(2,1)), closeto(boule(4,5),boule(4,8),boule(2,2)), closeto(boule(4,6),boule(4,5),boule(4,4)), closeto(boule(4,6),boule(4,9),boule(2,3)), closeto(boule(4,7),boule(4,8),boule(4,9)), closeto(boule(4,7),boule(4,4),boule(4,1)), closeto(boule(4,7),boule(2,1),boule(2,4)), closeto(boule(4,8),boule(4,5),boule(4,2)), closeto(boule(4,8),boule(2,2),boule(2,5)), closeto(boule(4,9),boule(4,6),boule(4,3)), closeto(boule(4,9),boule(4,8),boule(4,7)), closeto(boule(4,9),boule(2,3),boule(2,6)), closeto(boule(5,1),boule(5,2),boule(5,3)), closeto(boule(5,1),boule(2,7),boule(2,4)), closeto(boule(5,1),boule(5,4),boule(5,7)), closeto(boule(5,2),boule(2,8),boule(2,5)), closeto(boule(5,2),boule(5,5),boule(5,8)), closeto(boule(5,3),boule(2,9),boule(2,6)), closeto(boule(5,3),boule(5,2),boule(5,1)), closeto(boule(5,3),boule(5,6),boule(5,9)), closeto(boule(5,4),boule(5,5),boule(5,6)), closeto(boule(5,4),boule(5,1),boule(2,7)), closeto(boule(5,5),boule(5,2),boule(2,8)), closeto(boule(5,6),boule(5,3),boule(2,9)), closeto(boule(5,6),boule(5,5),boule(5,4)), closeto(boule(5,7),boule(5,8),boule(5,9)), closeto(boule(5,7),boule(5,4),boule(5,1)), closeto(boule(5,8),boule(5,5),boule(5,2)), closeto(boule(5,9),boule(5,6),boule(5,3)), closeto(boule(5,9),boule(5,8),boule(5,7))]). delete(_,[],[]). delete(X,[X|Q],R):-delete(X,Q,R). delete(X,[T|Q],[T|RQ]):-X=T,delete(X,Q,RQ). inserer([],boule(X,Y),[boule(X,Y)]). inserer([boule(X1,Y1)|B],boule(X,Y),[boule(X,Y),boule(X1,Y1)|B]):- X<X1. inserer([boule(X1,Y1)|B],boule(X,Y),[boule(X,Y),boule(X1,Y1)|B]):- X=X1, Y<Y1. inserer([boule(X1,Y1)|B],boule(X,Y),[boule(X1,Y1)|C]):- X>X1, inserer(B,boule(X,Y),C). inserer([boule(X1,Y1)|B],boule(X,Y),[boule(X1,Y1)|C]):- X=X1, Y>Y1, inserer(B,boule(X,Y),C). trier([],C,C). trier([E|B],C,D):- inserer(C,E,A), trier(B,A,D). trierfinal(A,B):-trier(A,[],B). listeboule(1, [boule(1,1), boule(1,2), boule(1,3), boule(1,4), boule(1,5), boule(1,6), boule(1,7), boule(1,8), boule(1,9), boule(2,1), boule(2,2), boule(2,3), boule(2,4), boule(2,5), boule(2,6), boule(2,7), boule(2,8), boule(2,9), boule(3,1), boule(3,2), boule(3,3), boule(3,4), boule(3,5), boule(3,6), boule(3,7), boule(3,8), boule(3,9), boule(4,1), boule(4,2), boule(4,3), boule(4,4), boule(4,5), boule(4,6), boule(4,7), boule(4,8), boule(4,9), boule(5,1), boule(5,2), boule(5,3), boule(5,4), boule(5,5), boule(5,6), boule(5,7), boule(5,8)], [boule(5,9)], []). listeboule(N,Listeboule,Listeboulevide,Allmouvement):- N > 1, N1 is N-1, listeboule(N1,Listeboule1,Listeboulevide1,Allmouvement1), mouvement(Move), member(closeto(Boule1,Boule2,Boulevide),Move), member(Boulevide,Listeboulevide1), member(Boule1,Listeboule1), member(Boule2,Listeboule1), delete(Boule1,Listeboule1,Listeboule2), delete(Boule2,Listeboule2,Listeboule3), Listeboule4=[Boulevide|Listeboule3], trierfinal(Listeboule4,Listeboule), delete(Boulevide,Listeboulevide1,Listeboulevide2), Listeboulevide3=[Boule1,Boule2|Listeboulevide2], trierfinal(Listeboulevide3,Listeboulevide), Allmouvement=[closeto(Boule1,Boule2,Boulevide)|Allmouvement1]. listeboulebytheend(1,[boule(2,9)], [boule(1,1), boule(1,2), boule(1,3), boule(1,4), boule(1,5), boule(1,6), boule(1,7), boule(1,8), boule(1,9), boule(2,1), boule(2,2), boule(2,3), boule(2,4), boule(2,5), boule(2,6), boule(2,7), boule(2,8), boule(3,1), boule(3,2), boule(3,3), boule(3,4), boule(3,5), boule(3,6), boule(3,7), boule(3,8), boule(3,9), boule(4,1), boule(4,2), boule(4,3), boule(4,4), boule(4,5), boule(4,6), boule(4,7), boule(4,8), boule(4,9), boule(5,1), boule(5,2), boule(5,3), boule(5,4), boule(5,5), boule(5,6), boule(5,7), boule(5,8), boule(5,9)], []). listeboulebytheend(Nf,Listeboulef,Listeboulevidef,Allmouvementf):- Nf > 1, N2 is Nf-1, listeboulebytheend(N2,Listeboule1f,Listeboulevide1f,Allmouvement1f), mouvement(Movef), member(closeto(Boule1f,Boule2f,Boulevidef),Movef), member(Boulevidef,Listeboule1f), member(Boule1f,Listeboulevide1f), member(Boule2f,Listeboulevide1f), delete(Boule2f,Listeboulevide1f,Listeboulevide2f), delete(Boule1f,Listeboulevide2f,Listeboulevide3f), Listeboulevide4f=[Boulevidef|Listeboulevide3f], trierfinal(Listeboulevide4f,Listeboulevidef), delete(Boulevidef,Listeboule1f,Listeboule2f), Listeboule3f=[Boule1f,Boule2f|Listeboule2f], trierfinal(Listeboule3f,Listeboulef), Allmouvementf=[closeto(Boule1f,Boule2f,Boulevidef)|Allmouvement1f].