/* Data from StatLib (ftp stat.cmu.edu/datasets) Data from an experiment on the affects of machine adjustments on the time to count bolts. Data appear as the STATS (Issue 10) Challenge. From the Weka ARFF file bolts.arff My JGAP Symbolic Regression program solves this in 2s (min criteria fitness 0.1): """ Evolving generation 2220/1800(time from start: 1.99s) Best solution fitness: 0.03 (error method: totalError) Best solution: sqrt (TIME * (TIME * (((19.994065391605872 * (19.88202129561283 / TOTAL)) * (19.88202129561283 / TOTAL)) / 19.759053505206616))) Depth of chrom: 7. Number of functions+terminals: 16 (8 functions, 8 terminals) Correlation coefficient: 0.9999999984490313 minError: 3.329811484764633E-5 meanError: 8.289363200027599E-4 medianError: 2.9340552017131927E-4 maxError: 0.0036589755530371804 totalError: 0.0331574528001104 """ Maple simplifies it to: / 2 \1/2 |TIME | 19.99990902 |------| | 2| \TOTAL / * stop_criteria=generations num_gens=1800 gen = 1138 (time: 137.767s) results_best = [[46.885338591522988,TIME / TOTAL * (16.465894317471374 - -4.224682927236278)]] gen = 697 (time: 70.563s) results_best = [[5.488999999998313,19.900000000000031 * (TIME / TOTAL)]] See bolts.conf */ import util. data(bolts,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [ [[A,B,C,D,E,F,G], H] : [A,B,C,D,E,F,G,H] in chunks_of([ 25, 2, 10, 1.5, 0, 6, 5.70, 11.40, 24, 2, 10, 1.5, 0, 10, 17.56, 35.12, 30, 2, 10, 1.5, 2, 6, 11.28, 22.56, 2, 2, 10, 1.5, 2, 10, 8.39, 16.78, 40, 2, 10, 2.5, 0, 6, 16.67, 33.34, 37, 2, 10, 2.5, 0, 10, 12.04, 24.08, 16, 2, 10, 2.5, 2, 6, 9.22, 18.44, 22, 2, 10, 2.5, 2, 10, 3.94, 7.88, 33, 2, 30, 1.5, 0, 6, 27.02, 18.01, 17, 2, 30, 1.5, 0, 10, 19.46, 12.97, 28, 2, 30, 1.5, 2, 6, 18.54, 12.36, 27, 2, 30, 1.5, 2, 10, 25.70, 17.13, 14, 2, 30, 2.5, 0, 6, 19.02, 12.68, 13, 2, 30, 2.5, 0, 10, 22.39, 14.93, 4, 2, 30, 2.5, 2, 6, 23.85, 15.90, 21, 2, 30, 2.5, 2, 10, 30.12, 20.08, 23, 6, 10, 1.5, 0, 6, 13.42, 26.84, 35, 6, 10, 1.5, 0, 10, 34.26, 68.52, 19, 6, 10, 1.5, 2, 6, 39.74, 79.48, 34, 6, 10, 1.5, 2, 10, 10.60, 21.20, 31, 6, 10, 2.5, 0, 6, 28.89, 57.78, 9, 6, 10, 2.5, 0, 10, 35.61, 71.22, 38, 6, 10, 2.5, 2, 6, 17.20, 34.40, 15, 6, 10, 2.5, 2, 10, 6.00, 12.00, 39, 6, 30, 1.5, 0, 6, 129.45, 86.30, 8, 6, 30, 1.5, 0, 0, 107.38, 71.59, 26, 6, 30, 1.5, 2, 6, 111.66, 74.44, 11, 6, 30, 1.5, 2, 0, 109.10, 72.73, 6, 6, 30, 2.5, 0, 6, 100.43, 66.95, 20, 6, 30, 2.5, 0, 0, 109.28, 72.85, 10, 6, 30, 2.5, 2, 6, 106.46, 70.97, 32, 6, 30, 2.5, 2, 0, 134.01, 89.34, 1, 4, 20, 2.0, 1, 8, 10.78, 10.78, 3, 4, 20, 2.0, 1, 8, 9.39, 9.39, 5, 4, 20, 2.0, 1, 8, 9.84, 9.84, 7, 4, 20, 2.0, 1, 8, 13.94, 13.94, 12, 4, 20, 2.0, 1, 8, 12.33, 12.33, 18, 4, 20, 2.0, 1, 8, 7.32, 7.32, 29, 4, 20, 2.0, 1, 8, 7.91, 7.91, 36, 4, 20, 2.0, 1, 8, 15.58, 15.58 ],8)], Vars = ['RUN','SPEED1','TOTAL','SPEED2','NUMBER2','SENS', 'TIME'], Unknown = [25, 2, 10, 1.5, 0, 6, 5.70], Ops = [+,*,/,-,log,sqrt,pow2,pow3,pow4,if_less], Constants = -20..0.1..20, % [frand(-20,20) : I in 1..10], MaxSize = 11, Params = new_map([approx=0.1, init_size=500, num_gens=1800, stop_criteria=generations ]).