úÎ633`%      !"#$None%&*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 chromosome4Generate code for the functions with a single outputAverage population loss Chromosome to evaluateVariable values(Resulting vector of multiple evaluations   None%&Randomly draw an element from a vector&Modify value with probability p'$Randomly generate Int between 0 and nj. Should be strictly less than n if n > 1 or zero otherwise. Therefore, getMaxInt 1 should be always 0.%&The probability pModification function' n( )*+,-%&'(%&'(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 gene0(A randomly generated variable identifier1-A random operation from the operations vector2,Draw a constant from the normal distribution3-Draw a constant from the uniform distribution.Common configurationCustom loss functionMutation CrossoverIA chromosome selection algorithm. Does not need to be random, but may be.Evaluated populationNew generation !45"Common configuration#Probability of gene mutationCommon configuration$Common configuration/!Probability to produce a constant!Probability to produce a variableNumber of input variablesOperations vectorMaximal operation index6 Probability p of a constant generation. 1-p2 will be the probability of a variable generation.Number of input variables012Mean Std deviation3. !"#$ . !45"#$/60123None  !"#$   !"#$7   !"#$%&'()*+,-./01 2 3 4 56789:;<=>?@AB!hmep-0.0.1-ECYnJzx5uT04TDB4romQp9AI.MEP AI.MEP.Types AI.MEP.Run AI.MEP.RandomAI.MEP.Operators5mersenne-random-pure64-0.2.2.0-560i5rQoI3i9IX3BgSFLBVSystem.Random.Mersenne.Pure64 newPureMT0monad-mersenne-random-0.2-6tqyOWwAPZD5rWNfoRrnLpControl.Monad.Mersenne.Random evalRandom runRandomRandFGeneCVarOp Chromosome Phenotype Population $fShowGeneevaluate generateCodeavgLoss LossFunctionConfigp'constp'var p'mutation p'crossoverc'length c'popSizec'popNc'opsc'vars defaultConfig initializeevaluateGenerationevolvebinaryTournament crossover mutation3smoothMutation newChromosomedrawwithProbability getMaxInt getNormal getDoublegetWordgetIntgetBool!random-1.1-9tceXaeYIMZ4JrKq20Egog System.RandomRandom phenotypenewnewVarnewOp newCNormalnewCswap replaceAt newTerminal