/* Dots and boxes: the edges See dots_and_boxes.pi [rows = 3,cols = 4] numBoxes = 6 [1,2,3,4] [4,5,6,7] [7,8,9,10] [3,11,12,13] [6,13,14,15] [9,15,16,17] edges = [[1,1,2],[2,1,5],[3,5,6],[4,2,6],[5,2,3],[6,6,7],[7,3,7],[8,3,4],[9,7,8],[10,4,8],[11,5,9],[12,9,10],[13,6,10],[14,10,11],[15,7,11],[16,11,12],[17,8,12]] = 17 * stop_criteria=generations num_gens=1800 gen = 56 (time: 3.306s) results_best = [[16,(Y - X + -6) mod X - (1 - Y)]] gen = 1471 (time: 87.067s) results_best = [[11,-10 mod (Y + Y) + (X + (Y - -9 + -6)) mod (X + Y)]] * stop_criteria=at_least_one_solution Stopped after 2hour32min gen = 8414 (time: 587.171s) results_best = [[8,Y + -16 mod (-4 - Y) + (X mod -8 mod -4 + -10) mod 8]] */ data(dots_and_boxes_edges,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [ [[1,2],1], [[1,5],2], [[5,6],3], [[2,6],4], [[2,3],5], [[6,7],6], [[3,7],7], [[3,4],8], [[7,8],9], [[4,8],10], [[5,9],11], [[9,10],12], [[6,10],13], [[10,11],14], [[7,11],15], [[11,12],16], [[8,12],17] ], println(data=Data), Unknown = [2,3], Vars = ['X','Y'], Ops = [+,-,*,mod], Constants = -17..17, MaxSize = 11, Params = new_map([ mutate_rate=0.2, crossover_rate=0.95, % stop_criteria=generations, num_gens=1800 ]).