/* Logistic function Simple logistic function The logistic formula is defined as: 1.0/(1.0+exp(-x)); * Plain logistict formula: [program = age - age + logistic(age),res = 0.5,count = 6] [program = logistic(age / logistic(8.232947158735687)),res = 0.5,count = 3] [program = age + logistic(age) - age,res = 0.5,count = 2] [program = logistic(age) - (8.232947158735687 - 8.232947158735687),res = 0.5,count = 2] [program = logistic(age) + (age - age),res = 0.5,count = 2] [program = logistic(-6.048972614132321) + logistic(age),res = 0.502354727854958,count = 2] [program = age + (logistic(age) - age),res = 0.5,count = 2] [program = logistic(age) / logistic(1.079399115908611 * 5.36459189623808),res = 0.501528172150614,count = 1] [program = logistic(age) - (age - age),res = 0.5,count = 1] [program = logistic(age) - (6.803754343094191 - 6.803754343094191),res = 0.5,count = 1] [program = 8.232947158735687 - 8.232947158735687 + logistic(age),res = 0.5,count = 1] [program = logistic(age) + (8.232947158735687 - 8.232947158735687),res = 0.5,count = 1] [program = logistic(1.079399115908611 * 5.36459189623808) * logistic(age),res = 0.498476484238103,count = 1] [program = logistic(age - age + age),res = 0.5,count = 1] [program = logistic(logistic(-6.048972614132321 - 1.079399115908611) + age),res = 0.500200345366642,count = 1] [program = logistic(logistic(5.661984475172117) * age),res = 0.5,count = 1] resultMap = [0.5 = 13,0.502354727854958 = 1,0.501528172150614 = 1,0.500200345366642 = 1,0.498476484238103 = 1] * approx=0.1 with +,-,*,/,exp,log [program = exp(age) / (1.079399115908611 + exp(age)) - exp(-4.444505783936244) * log(5.36459189623808) / -2.112341463618139,res = 0.49024659939616,count = 1] Included 0..1 in the constant list: [program = exp(Age) / (exp(Age) + log(exp(1 - 0))),res = 0.5,count = 1] [program = exp(Age) / (1 + exp(Age)),res = 0.5,count = 1] */ data(logistic,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [ [[X-10],L] : X in 0..20, L = 1.0/(1.0+exp(-(X-10))) ], Unknown = [0], Vars = ['Age'], % Ops = [+,-,*,/,logistic], Ops = [+,-,*,/,exp,log], % can we recover the formula? Constants = 0..1 ++ [frand(-10,10) : _ in 1..10], MaxSize = 11, Params = new_map([approx=0.01, init_size=1000, show_best=1 % debug=true % show_instances=true, % num_gens=10 ]).