/* Test of polynomial: poly1, poly2, poly3, poly4 */ /* polynomial2 Fibonacci: data = [[[1,1],2],[[1,2],3],[[2,3],5],[[3,5],8],[[5,8],13],[[8,13],21],[[13,21],34]] operators: poly1,- constants: 1 AllGood: [program = poly1(1,B,1) - (1 - A),res = 55,count = 67] [program = poly1(1,A,B),res = 55,count = 63] [program = poly1(1,1,B) - (1 - A),res = 55,count = 62] [program = poly1(A,1,B),res = 55,count = 42] [program = poly1(B,1,A),res = 55,count = 30] [program = poly1(1,B,A),res = 55,count = 29] [program = poly1(1,A,B) - (B - B),res = 55,count = 16] [program = poly1(1,A,B) - (1 - 1),res = 55,count = 14] [program = poly1(B,1,1) - (1 - A),res = 55,count = 6] [program = poly1(A - 1,1,poly1(1,1,B)),res = 55,count = 4] [program = poly1(1,poly1(A,1,B),B - B),res = 55,count = 3] [program = poly1(poly1(1 - 1,B,1),B,A),res = 55,count = 2] [program = poly1(B - B,A,poly1(A,1,B)),res = 55,count = 2] [program = poly1(A - B,1,poly1(B,1,B)),res = 55,count = 2] [program = poly1(A - 1,1,poly1(B,1,1)),res = 55,count = 2] [program = poly1(1 - 1,A,poly1(1,A,B)),res = 55,count = 2] [program = poly1(B,B - B,poly1(1,A,B)),res = 55,count = 2] [program = poly1(B,1 - 1,poly1(1,B,A)),res = 55,count = 2] [program = poly1(A,poly1(A - A,A,1),B),res = 55,count = 2] [program = poly1(1,poly1(1,B,B),A - B),res = 55,count = 2] [program = poly1(1,B - B,poly1(1,A,B)),res = 55,count = 2] [program = poly1(1,B - 1,poly1(1,A,1)),res = 55,count = 2] [program = poly1(1,A - B,poly1(B,1,B)),res = 55,count = 2] [program = poly1(1,A - 1,poly1(1,1,B)),res = 55,count = 2] [program = poly1(B,1,A) - (B - B),res = 55,count = 2] [program = poly1(B,1,A) - (1 - 1),res = 55,count = 2] [program = poly1(A,1,B) - (1 - 1),res = 55,count = 2] [program = poly1(poly1(B,1,B),1 - 1,poly1(1,B,A)),res = 55,count = 1] [program = poly1(poly1(B,1,1),1,A - 1),res = 55,count = 1] [program = poly1(poly1(A,1,B),1,B - B),res = 55,count = 1] [program = poly1(poly1(A,1,B),1,1 - 1),res = 55,count = 1] [program = poly1(poly1(A,1,1),1,B - 1),res = 55,count = 1] [program = poly1(poly1(1,B,1),1,A - 1),res = 55,count = 1] [program = poly1(poly1(1,A,A),1,B - A),res = 55,count = 1] [program = poly1(poly1(1,1,A),B - B,poly1(1,A,B)),res = 55,count = 1] [program = poly1(poly1(1,1,1),A,B - A),res = 55,count = 1] [program = poly1(B - B,poly1(A,A,1),poly1(1,A,B)),res = 55,count = 1] [program = poly1(B - B,poly1(A,1,1),poly1(1,B,A)),res = 55,count = 1] [program = poly1(B - B,poly1(1,A,A),poly1(1,B,A)),res = 55,count = 1] [program = poly1(B - B,poly1(1,1,1),poly1(1,A,B)),res = 55,count = 1] [program = poly1(B - B,A - 1,poly1(1,B,A)),res = 55,count = 1] [program = poly1(B - B,1,poly1(1,B,A)),res = 55,count = 1] [program = poly1(B - B,1,poly1(1,A,B)),res = 55,count = 1] [program = poly1(A - B,1 - 1,poly1(1,A,B)),res = 55,count = 1] [program = poly1(A - B,1,poly1(1,B,B)),res = 55,count = 1] [program = poly1(A - A,poly1(1,A,B),poly1(A,1,B)),res = 55,count = 1] [program = poly1(A - A,A,poly1(A,1,B)),res = 55,count = 1] [program = poly1(A - 1,1,poly1(1,B,1)),res = 55,count = 1] [program = poly1(1 - A,A - A,poly1(1,A,B)),res = 55,count = 1] [program = poly1(1 - 1,poly1(B,B,A),poly1(A,1,B)),res = 55,count = 1] [program = poly1(1 - 1,B - B,poly1(1,B,A)),res = 55,count = 1] [program = poly1(1 - 1,A - B,poly1(A,1,B)),res = 55,count = 1] [program = poly1(1 - 1,B,poly1(A,1,B)),res = 55,count = 1] [program = poly1(B,poly1(1,1,1),A - B),res = 55,count = 1] [program = poly1(B,B - B,poly1(1,B,A)),res = 55,count = 1] [program = poly1(B,A - A,poly1(1,A,B)),res = 55,count = 1] [program = poly1(B,1 - 1,poly1(A,1,B)),res = 55,count = 1] [program = poly1(A,B - B,poly1(1,A,B)),res = 55,count = 1] [program = poly1(A,1 - 1,poly1(1,B,A)),res = 55,count = 1] [program = poly1(1,poly1(B,1,1),A - 1),res = 55,count = 1] [program = poly1(1,poly1(1,B,A),A - A),res = 55,count = 1] [program = poly1(1,poly1(1,A,B),B - B),res = 55,count = 1] [program = poly1(1,poly1(1,1,B),A - 1),res = 55,count = 1] [program = poly1(B,1,B) - (B - A),res = 55,count = 1] [program = poly1(A,1,1) - (1 - B),res = 55,count = 1] [program = poly1(1,B,A) - (A - A),res = 55,count = 1] resultMap = [55 = 66] */ /* data(polynomial_test_fib,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [[[1,1],2],[[1,2],3],[[2,3],5],[[3,5],8],[[5,8],13],[[8,13],21],[[13,21],34]], Ops = [poly1,-], Constants = 1..1, Vars = ['A','B'], Unknown = [21,34], MaxSize = 3, Params = new_map([init_size=100, num_gens=100 ] ). */ /* 3*X**2 + 2**X + 1 data = [[[1],6],[[2],17],[[3],36],[[4],65],[[5],108],[[6],173],[[7],276],[[8],449],[[9],756],[[10],1325]] poly1 AllGood: [program = poly1(3,poly1(X,X,X),1 - X), res = 386, count = 1] resultMap = [386 = 1] poly2 AllGood: [program = poly2(X,3,2,1), res = 386, count = 82] [program = poly2(1,X,poly2(X,2,X,X),1), res = 386, count = 55] [program = poly2(1,1 * X,1,poly2(X,2,X,X)), res = 386, count = 46] [program = poly2(1,X + 0,1,poly2(X,2,X,X)), res = 386, count = 40] [program = poly2(1,X,1,poly2(X,2,X,X)), res = 386, count = 40] [program = poly2(1,1,poly2(X,2,X,X),X), res = 386, count = 38] [program = poly2(1,poly2(X,2,X,X),X,1), res = 386, count = 22] [program = poly2(1,poly2(X,2,X,X),1,X), res = 386, count = 20] [program = poly2(1,X + 0,poly2(X,2,X,X),1), res = 386, count = 18] [program = poly2(1,1,X,poly2(X,2,X,X)), res = 386, count = 15] [program = poly2(1,1,1 * X,poly2(X,2,X,X)), res = 386, count = 11] [program = poly2(1,poly2(X,2,X,X),1 * X,1), res = 386, count = 1] resultMap = [386 = 12] poly3 AllGood: [program = poly3(X,1,2,2,1), res = 386, count = 66] [program = poly3(X,0,3,2,1), res = 386, count = 65] [program = poly3(X,2,1,2,1), res = 386, count = 43] resultMap = [386 = 3] poly4 AllGood: [program = poly4(X,0,0,3,2,1), res = 386, count = 37] [program = poly4(X,0,0,3,0 + 2,1), res = 386, count = 35] resultMap = [386 = 2] */ /* data(polynomial_test2,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [ [[X],Y] : X in 1..10, Y = 3*X**2 + 2*X + 1], Ops = [poly4,+,-,*], Constants = 0..10, Vars = ['X'], Unknown = [11], MaxSize = 1, Params = new_map([init_size=1000, num_gens=100 ] ). */ /* From symbolic_regression_p4.pi: x^4 + x^3 + x^2 + x poly1 AllGood: [program = poly1(poly1(X,X,X),X * X,poly1(X,X,X)), res = 6.50476286908248014, count = 38] [program = poly1(X * X,poly1(X,X,X),poly1(X,X,X)), res = 6.50476286908248014, count = 34] resultMap = [6.50476286908248014 = 2] poly2 AllGood: [program = poly2(poly2(X,X,X,X),0,X,X), res = 6.50476286908248014, count = 69] [program = poly2(X,0,poly2(X,X,X,X),X), res = 6.50476286908248014, count = 58] resultMap = [6.50476286908248014 = 2] poly3 AllGood: [program = poly3(X,X,X * X,X,X), res = 6.50476286908247836, count = 82] [program = poly3(X,X * X,X,X,X), res = 6.50476286908247836, count = 66] [program = poly3(X,1,X * X,X * X,X), res = 6.50476286908247925, count = 21] [program = poly3(X,0,X * X,poly3(X,-8,8,X,X),X), res = 6.50476286908247925, count = 1] resultMap = [6.50476286908247925 = 2,6.50476286908247836 = 2] poly4: AllGood: [program = poly4(X,0,X,X,X,X), res = 6.50476286908248014, count = 95] [program = poly4(X,1,0,X,X,X), res = 6.50476286908248014, count = 79] [program = poly4(X,0,X,X,X + -1,X + X), res = 6.50476286908247925, count = 28] [program = poly4(X,X / X,1,0,X,X), res = 6.50476286908248014, count = 20] resultMap = [6.50476286908248014 = 3,6.50476286908247925 = 1] */ import util. data(polynomial_p4,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [ [[X],Y] : [X,Y] in chunks_of([ 1.2043,6.5044, -3.7717,159.1734, -4.0556,216.2142, -3.9966,203.2764, 0.5565,1.1346, 4.8681,705.5586, -3.9138,186.0963, 3.0942,133.9503, 4.3114,448.5548, -0.9415,-0.1039, -3.6508,138.6630, -3.7575,156.6488, 2.9606,114.5059, 0.1500,0.1764, 1.8950,25.1883, -0.2465,-0.1970, -0.3330,-0.2467, -2.0765,11.8735, 4.5447,545.6483, -4.5665,355.9047, 0.0472,0.0495, -0.3731,-0.2665, 1.5154,12.5662, -3.7143,149.1612, -1.2237,0.6837, -3.0398,63.4983, 3.1357,140.4837, -0.7316,-0.3015, -1.2564,0.8305, -3.5941,129.7562 ],2)], Ops = [poly4,+,-,*,/], Constants = -10..10, Vars = ['X'], Unknown = [1.2043], MaxSize = 1, Params = new_map([approx=0.02, init_size=1000, num_gens=100 ] ).