/* Planets: Floats using approx Kepler's third law is: Period^2 = Distance^3 i.e. Period = sqrt(Distance)*Distance (From (https://www.r-bloggers.com/2019/04/symbolic-regression-genetic-programming-or-if-kepler-had-r/ ) Note: For some runs, ** /2 might blow up. * With sqrt [program = X * sqrt(X),res = 83.473774324634448,count = 175] [program = sqrt(X) * X,res = 83.473774324634448,count = 29] [program = X * X / sqrt(X),res = 83.473774324634448,count = 5] [program = X / (sqrt(X) / X),res = 83.473774324634448,count = 4] [program = sqrt(X) * (X / 1),res = 83.473774324634448,count = 3] [program = X / 1 * sqrt(X),res = 83.473774324634448,count = 2] [program = X * sqrt(X / 1),res = 83.473774324634448,count = 2] [program = sqrt(X) * X / 1,res = 83.473774324634448,count = 1] [program = sqrt(X) * 2 / (2 / X),res = 83.473774324634462,count = 1] [program = 3 * X / (3 / 1) * sqrt(X),res = 83.473774324634448,count = 1] [program = (X - X + X) * sqrt(X),res = 83.473774324634448,count = 1] [program = 1 * X * (X / X) * sqrt(X),res = 83.473774324634448,count = 1] [program = sqrt(X) * X * 1,res = 83.473774324634448,count = 1] [program = 1 * X * sqrt(X),res = 83.473774324634448,count = 1] [program = sqrt(X / 1) * X,res = 83.473774324634448,count = 1] [program = sqrt(X) * (X * 1),res = 83.473774324634448,count = 1] [program = sqrt(X) * (1 * X),res = 83.473774324634448,count = 1] resultMap = [83.473774324634448 = 16,83.473774324634462 = 1] * Without sqrt [program = X ** (3 / 2),res = 83.473774324634448,count = 53] [program = (1 * X) ** (3 / 2),res = 83.473774324634448,count = 22] [program = (X * 1) ** (3 / 2),res = 83.473774324634448,count = 1] resultMap = [83.473774324634448 = 3] * pow_mod2/2 or pow_mod/3 cannot be used since they require integers. Cf http://hakank.org/jgap/planets.conf */ data(planets,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [ [[0.72],0.61], [[1.00],1.00], [[1.52],1.84], [[5.20],11.90], [[9.53],29.40], [[19.10],83.50] ], println(data=Data), Ops = [+,*,-,/,sqrt], % Ops = [+,*,-,/,**], % Might blow up! Vars = ['X'], Unknown = [19.10], Constants = 1..3, MaxSize = 4, Params = new_map([init_size=1000, approx=0.1, num_gens=20, mutate_rate=0.1, crossover_rate=0.94, debug=false ]).