úÎ7ü5C$      !"#None%&>Loss value, chromosome, and the best expression indices vectorEvaluated populationList of chromosomes*A function and its symbolic representationOEither a terminal symbol or a three-address code (a function and two pointers) !A chromosome is a vector of genes     None +Evaluate each subexpression in a chromosome 4Generate code for the functions with a single output Average population loss Chromosome to evaluateVariable values(Resulting vector of multiple evaluations    None$&Randomly draw an element from a vector%'Similar to uniformIn, but using range [a, b) instead of [a, b] and only for integral types.&)Returns a double value from the range of [0, 1)6. If there is no specific reason, then prefer double (0, 1].'$Modify a value with the probability p$%&'The probability pModification function ()*+,$%&'$%&'NoneA function to minimize.NThe argument is a vector evaluation function whose input is a vector (length c'vars1) and ouput is a vector with a different length c'length.DThe result is a vector of the best indices and a scalar loss value."Probability of constant generationjProbability of variable generation. The probability of operator generation is inferred automatically as 1 - p'const - p'var.Mutation probabilityCrossover probabilityThe chromosome lengthA (sub)population size7Number of subpopulations (1 or more) [not implemented]3Functions pool with their symbolic representationsThe input dimensionality ÞdefaultConfig = Config { p'const = 0.1 , p'var = 0.4 , p'mutation = 0.1 , p'crossover = 0.9 , c'length = 50 , c'popSize = 100 , c'popN = 1 , c'ops = V.empty -- <-- To be overridden , c'vars = 1 } -=Evaluates a chromosome according to the given loss function."Randomly generate a new population?Selection operator that produces the next evaluated population.zStandard algorithm: the best offspring O replaces the worst individual W in the current population if O is better than W.Binary tournament selection Uniform crossover operator!;Mutation operator with up to three mutations per chromosome"AMutation operator with a fixed mutation probability of each gene#mRandomly initialize a new chromosome. By definition, the first gene is terminal (a constant or a variable)..Produce a new random gene/(A randomly generated variable identifier0-A random operation from the operations vector15Draw a constant from the uniform distribution within  (-0.5, 0.5]-Common configurationCustom loss functionMutation CrossoverIA chromosome selection algorithm. Does not need to be random, but may be.Evaluated populationNew generation 23!Common configuration"Probability of gene mutationCommon configuration#Common configuration.!Probability to produce a constant!Probability to produce a variableNumber of input variablesOperations vectorMaximal operation index4 Probability p of a constant generation. 1-p2 will be the probability of a variable generation.Number of input variables/01- !"# - 23!"#.4/01None  !"#   !"# 5      !"#$%&'()*+,-./0123456789:;<=> hmep-0.1.0-DlwcL2UureHOiMpwTGuFQAI.MEP AI.MEP.Types AI.MEP.Run AI.MEP.RandomAI.MEP.Operators%probable-0.1.2-ABcLc8m5czN4pXrYuQbPrxMath.Probable.RandomRandT Phenotype Generation PopulationFGeneCVarOp Chromosome $fShowGeneevaluate generateCodeavgLoss runRandIO LossFunctionConfigp'constp'var p'mutation p'crossoverc'length c'popSizec'popNc'opsc'vars defaultConfig initializeevaluateGenerationevolvebinaryTournament crossover mutation3smoothMutation newChromosomedrawFrom uniformIn_double_withProbability*mwc-random-0.13.6.0-C2JET14bUvr87meYowzx06System.Random.MWCVariatevectorOfvectorOfVariate uniformIndouble phenotypenewnewVarnewOpnewCswap replaceAt newTerminal