/* Heron formula. From Banzhaf, Nordin, Keller, Francone: Genetic Programming - An Introduction, page 262 Also see http://en.wikipedia.org/wiki/Heron%27s_formula The function is: S = sqrt( ((a+b+c)*(a+b-c)*(a-b+c)*(-a+b+c))/16 ) Here I just used randomized values of a, b, and c Best after 10min gen = 179 (time: 37.902s) results_best = [[11.876005480751736,-4.444505783936244 / -6.048972614132321 * sin(sin(-4.444505783936244))],[11.888861826579786,sin(5.36459189623808 * -4.444505783936244) * (6.803754343094191 / (-3.29554488570222 * -3.29554488570222))],[11.888861826579786,6.803754343094191 / (-3.29554488570222 * -3.29554488570222) * sin(5.36459189623808 * -4.444505783936244)],[11.889113590394977,sin(6.803754343094191) * ((y + 8.232947158735687 - y) / 6.803754343094191)],[11.889113590394977,(y + 8.232947158735687 - y) / 6.803754343094191 * sin(6.803754343094191)],[11.953035252112878,sin(sin(-4.444505783936244)) * sin(5.661984475172117 / 6.803754343094191)],[12.001836120211641,6.803754343094191 / (-3.29554488570222 * -3.29554488570222) / (5.968800669521466 / 5.968800669521466)],[12.024292306559239,6.803754343094191 / 5.661984475172117 * sin(6.803754343094191)],[12.192798354160594,sin(6.803754343094191) / ((5.36459189623808 + (-4.444505783936244 + (y - y))) * sin(8.232947158735687))],[12.200717960997286,sin(5.661984475172117 / 6.803754343094191) * sin(x / x)]] Cf heron_formula.conf */ import util. data(henon,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [ [[A,B,C], D] : [A,B,C,D] in chunks_of([ 41.3147502186806,18.8868049389811,35.5287822700245,334.792124523163, 26.6796670944082,23.0490328639537,44.3667610161341,248.304150751068, 30.3238431361333,71.7805354664129,96.4131250037472,731.454384295795, 7.19512529328767,41.0251484734356,38.3387712286527,131.889565929886, 26.3230278419531,39.3634313333465,13.7580538707422,70.4183447053215, 35.6734911532946,14.2737183225851,42.3052732016941,242.241164865157, 63.1529303098841,40.7238597123985,77.5163325082662,1282.72598954574, 94.1562675220254,51.2185553357678,58.9339053705906,1341.15222388139, 73.0128212759357,81.812910950822,95.05422961448,2891.71220057324, 33.5686275638672,48.468765166017,36.7561161896745,616.087328856396, 84.7310374661728,97.2734070369533,16.0098820230477,450.987434630173, 70.6443754456547,38.6577399619554,89.0773650183259,1316.49821574606, 65.1263757531424,77.9251434050021,75.5746086104629,2261.65120582103, 77.704052551093,37.3294343649974,89.3669088279307,1443.67101109816, 30.7909416640754,73.614133279224,68.865095393388,1058.03656441456, 79.3185352192868,91.4972112818759,45.9500848463943,1822.33012490689, 85.0840161045561,48.8619450799408,88.4391231546545,2029.09781433798, 80.4879731588315,74.0110998726831,81.1943302889112,2659.61813088355, 40.0595583338035,44.311360555443,37.0390553813206,697.306096985719, 83.3101430025511,20.8566072277918,83.378282250521,862.303762826322 ],4)], Vars = ['A','B','C'], Unknown = [1,1,1], Ops = [+,*,/,-,sqrt,if_then_else,==,!=,<], Constants = [frand(-3,3) : _ in 1..10], Params = new_map([approx = 1, % num_gens=30, init_size=500, show_only_improvements=true, show_best=1, show_instances=false ]), MaxSize = 51.