/* Iris dataset * With TotalApprox = 4 (res should be 2) [program = 6.803754343094191 - 5.968800669521466 + PW,res = 2.234953673572725,count = 1] * TotalApprox = 5 (res should be 2) [program = PW + if_then_else(-6.048972614132321,5.661984475172117,6.803754343094191 + -6.048972614132321),res = 2.15478172896187,count = 72] [program = if_then_else(-6.048972614132321,5.661984475172117,6.803754343094191 + -6.048972614132321) + PW,res = 2.15478172896187,count = 70] [program = if_then_else(-6.048972614132321,5.661984475172117,6.803754343094191 + -6.048972614132321) + if_then_else(5.661984475172117,SW * SL,PW),res = 2.15478172896187,count = 60] [program = if_then_else(-6.048972614132321,5.661984475172117,6.803754343094191 + -6.048972614132321) + if_then_else(PL,PW,PW),res = 2.15478172896187,count = 39] [program = if_then_else(-6.048972614132321,5.661984475172117,6.803754343094191 + -6.048972614132321) + if_then_else(5.36459189623808,-2.112341463618139,PW),res = 2.15478172896187,count = 20] [program = if_then_else(5.661984475172117,SW * SL,PW) + if_then_else(-6.048972614132321,5.661984475172117,6.803754343094191 + -6.048972614132321),res = 2.15478172896187,count = 6] [program = if_then_else(PL,PW,PW) + if_then_else(-6.048972614132321,5.661984475172117,6.803754343094191 + -6.048972614132321),res = 2.15478172896187,count = 5] [program = if_then_else(-6.048972614132321,5.661984475172117,6.803754343094191 + -6.048972614132321) + if_then_else(PL + 8.232947158735687,5.661984475172117,PW),res = 2.15478172896187,count = 4] [program = if_then_else(-6.048972614132321 * (PW + -4.444505783936244 + 8.232947158735687),SW,PW) + if_then_else(-6.048972614132321,5.661984475172117,6.803754343094191 + -6.048972614132321),res = 2.15478172896187,count = 1] [program = if_then_else(5.36459189623808,-2.112341463618139,PW) + if_then_else(-6.048972614132321,5.661984475172117,6.803754343094191 + -6.048972614132321),res = 2.15478172896187,count = 1] resultMap = [2.15478172896187 = 10] * TotalApprox = 5 and if_less (res should be 1) [program = PW + (-6.048972614132321 + 6.803754343094191),res = 0.95478172896187,count = 90] [program = -6.048972614132321 + 6.803754343094191 + PW,res = 0.95478172896187,count = 82] [program = -6.048972614132321 + 6.803754343094191 + 1.079399115908611 * PW,res = 0.970661552143592,count = 53] [program = 1.079399115908611 * PW + (-6.048972614132321 + 6.803754343094191),res = 0.970661552143592,count = 52] [program = -6.048972614132321 + 6.803754343094191 + if_less(PL - PL,5.36459189623808,PW,5.968800669521466),res = 0.95478172896187,count = 28] [program = -6.048972614132321 + 6.803754343094191 + if_less(PL,5.661984475172117 + SL,PW,5.968800669521466 + 8.232947158735687),res = 0.95478172896187,count = 10] [program = -6.048972614132321 + 6.803754343094191 + if_less(SW,-4.444505783936244,1.079399115908611,PW),res = 0.95478172896187,count = 2] [program = if_less(5.968800669521466,SW,PW,PW) + (-6.048972614132321 + 6.803754343094191),res = 0.95478172896187,count = 1] resultMap = [0.95478172896187 = 6,0.970661552143592 = 2] [program = -2.112341463618139 - -3.29554488570222 + PW + (5.36459189623808 - 5.661984475172117),res = 1.085810843150043,count = 58] [program = 5.36459189623808 - 5.661984475172117 + (-2.112341463618139 - -3.29554488570222 + PW),res = 1.085810843150043,count = 46] [program = PW * 1.079399115908611 - (5.36459189623808 + round(-6.048972614132321)),res = 0.851287926943642,count = 43] [program = 1.079399115908611 + PW + (5.36459189623808 - 5.661984475172117),res = 0.982006536974574,count = 11] [program = 5.36459189623808 - 5.661984475172117 + (1.079399115908611 + PW),res = 0.982006536974574,count = 1] resultMap = [1.085810843150043 = 2,0.982006536974574 = 2,0.851287926943642 = 1] Cf iris.conf */ import util. data(iris,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [ [[A,B,C,D],E] : [A,B,C,D,E] in chunks_of([ 5.1,3.5,1.4,0.2,1, 4.9,3.0,1.4,0.2,1, 4.7,3.2,1.3,0.2,1, 4.6,3.1,1.5,0.2,1, 5.0,3.6,1.4,0.2,1, 5.4,3.9,1.7,0.4,1, 4.6,3.4,1.4,0.3,1, 5.0,3.4,1.5,0.2,1, 4.4,2.9,1.4,0.2,1, 4.9,3.1,1.5,0.1,1, 5.4,3.7,1.5,0.2,1, 4.8,3.4,1.6,0.2,1, 4.8,3.0,1.4,0.1,1, 4.3,3.0,1.1,0.1,1, 5.8,4.0,1.2,0.2,1, 5.7,4.4,1.5,0.4,1, 5.4,3.9,1.3,0.4,1, 5.1,3.5,1.4,0.3,1, 5.7,3.8,1.7,0.3,1, 5.1,3.8,1.5,0.3,1, 5.4,3.4,1.7,0.2,1, 5.1,3.7,1.5,0.4,1, 4.6,3.6,1.0,0.2,1, 5.1,3.3,1.7,0.5,1, 4.8,3.4,1.9,0.2,1, 5.0,3.0,1.6,0.2,1, 5.0,3.4,1.6,0.4,1, 5.2,3.5,1.5,0.2,1, 5.2,3.4,1.4,0.2,1, 4.7,3.2,1.6,0.2,1, 4.8,3.1,1.6,0.2,1, 5.4,3.4,1.5,0.4,1, 5.2,4.1,1.5,0.1,1, 5.5,4.2,1.4,0.2,1, 4.9,3.1,1.5,0.1,1, 5.0,3.2,1.2,0.2,1, 5.5,3.5,1.3,0.2,1, 4.9,3.1,1.5,0.1,1, 4.4,3.0,1.3,0.2,1, 5.1,3.4,1.5,0.2,1, 5.0,3.5,1.3,0.3,1, 4.5,2.3,1.3,0.3,1, 4.4,3.2,1.3,0.2,1, 5.0,3.5,1.6,0.6,1, 5.1,3.8,1.9,0.4,1, 4.8,3.0,1.4,0.3,1, 5.1,3.8,1.6,0.2,1, 4.6,3.2,1.4,0.2,1, 5.3,3.7,1.5,0.2,1, 5.0,3.3,1.4,0.2,1, 7.0,3.2,4.7,1.4,2, 6.4,3.2,4.5,1.5,2, 6.9,3.1,4.9,1.5,2, 5.5,2.3,4.0,1.3,2, 6.5,2.8,4.6,1.5,2, 5.7,2.8,4.5,1.3,2, 6.3,3.3,4.7,1.6,2, 4.9,2.4,3.3,1.0,2, 6.6,2.9,4.6,1.3,2, 5.2,2.7,3.9,1.4,2, 5.0,2.0,3.5,1.0,2, 5.9,3.0,4.2,1.5,2, 6.0,2.2,4.0,1.0,2, 6.1,2.9,4.7,1.4,2, 5.6,2.9,3.6,1.3,2, 6.7,3.1,4.4,1.4,2, 5.6,3.0,4.5,1.5,2, 5.8,2.7,4.1,1.0,2, 6.2,2.2,4.5,1.5,2, 5.6,2.5,3.9,1.1,2, 5.9,3.2,4.8,1.8,2, 6.1,2.8,4.0,1.3,2, 6.3,2.5,4.9,1.5,2, 6.1,2.8,4.7,1.2,2, 6.4,2.9,4.3,1.3,2, 6.6,3.0,4.4,1.4,2, 6.8,2.8,4.8,1.4,2, 6.7,3.0,5.0,1.7,2, 6.0,2.9,4.5,1.5,2, 5.7,2.6,3.5,1.0,2, 5.5,2.4,3.8,1.1,2, 5.5,2.4,3.7,1.0,2, 5.8,2.7,3.9,1.2,2, 6.0,2.7,5.1,1.6,2, 5.4,3.0,4.5,1.5,2, 6.0,3.4,4.5,1.6,2, 6.7,3.1,4.7,1.5,2, 6.3,2.3,4.4,1.3,2, 5.6,3.0,4.1,1.3,2, 5.5,2.5,4.0,1.3,2, 5.5,2.6,4.4,1.2,2, 6.1,3.0,4.6,1.4,2, 5.8,2.6,4.0,1.2,2, 5.0,2.3,3.3,1.0,2, 5.6,2.7,4.2,1.3,2, 5.7,3.0,4.2,1.2,2, 5.7,2.9,4.2,1.3,2, 6.2,2.9,4.3,1.3,2, 5.1,2.5,3.0,1.1,2, 5.7,2.8,4.1,1.3,2, 6.3,3.3,6.0,2.5,3, 5.8,2.7,5.1,1.9,3, 7.1,3.0,5.9,2.1,3, 6.3,2.9,5.6,1.8,3, 6.5,3.0,5.8,2.2,3, 7.6,3.0,6.6,2.1,3, 4.9,2.5,4.5,1.7,3, 7.3,2.9,6.3,1.8,3, 6.7,2.5,5.8,1.8,3, 7.2,3.6,6.1,2.5,3, 6.5,3.2,5.1,2.0,3, 6.4,2.7,5.3,1.9,3, 6.8,3.0,5.5,2.1,3, 5.7,2.5,5.0,2.0,3, 5.8,2.8,5.1,2.4,3, 6.4,3.2,5.3,2.3,3, 6.5,3.0,5.5,1.8,3, 7.7,3.8,6.7,2.2,3, 7.7,2.6,6.9,2.3,3, 6.0,2.2,5.0,1.5,3, 6.9,3.2,5.7,2.3,3, 5.6,2.8,4.9,2.0,3, 7.7,2.8,6.7,2.0,3, 6.3,2.7,4.9,1.8,3, 6.7,3.3,5.7,2.1,3, 7.2,3.2,6.0,1.8,3, 6.2,2.8,4.8,1.8,3, 6.1,3.0,4.9,1.8,3, 6.4,2.8,5.6,2.1,3, 7.2,3.0,5.8,1.6,3, 7.4,2.8,6.1,1.9,3, 7.9,3.8,6.4,2.0,3, 6.4,2.8,5.6,2.2,3, 6.3,2.8,5.1,1.5,3, 6.1,2.6,5.6,1.4,3, 7.7,3.0,6.1,2.3,3, 6.3,3.4,5.6,2.4,3, 6.4,3.1,5.5,1.8,3, 6.0,3.0,4.8,1.8,3, 6.9,3.1,5.4,2.1,3, 6.7,3.1,5.6,2.4,3, 6.9,3.1,5.1,2.3,3, 5.8,2.7,5.1,1.9,3, 6.8,3.2,5.9,2.3,3, 6.7,3.3,5.7,2.5,3, 6.7,3.0,5.2,2.3,3, 6.3,2.5,5.0,1.9,3, 6.5,3.0,5.2,2.0,3, 6.2,3.4,5.4,2.3,3, 5.9,3.0,5.1,1.8,3 ],5)], % Unknown = [7.0,3.2,4.7,1.4], % should be 2 Unknown = [4.4,3.2,1.3,0.2], % should be 1 Vars = ['SL','SW','PL','PW' ], Ops = [+,-,*,if_less_than,if_then_else,<=,round], % Ops = [+,-,*,if_less,round], Constants = [frand(-10,10) : _ in 1..10], MaxSize = 31, Params = new_map([ approx=0.49, % it has a somewhat close solution for the instance total_approx=5, % total sum of errors show_best=3, init_size=500, num_gens=100, show_only_improvements=true % ,debug=true % ,show_instances=true % ,show_errors=true % mutation_rate=0.5 % from iris.conf % , stop_criteria=loop ]).