OMNIREP is a coevolutionary algorithm that simultaneously evolves a representation for a particular problem and the encoding for that representation. Here we implement genetic programming with OMNIREP using the DEAP (Distributed Evolutionary Algorithms in Python) library to see how much of a difference OMNIREP makes.
Genetic Programming is an evolutionary computing technique that evolves programs to find and evolve the best fit program out of an initial starting population using mutation, selection and mating techniques. Each program is assigned a fitness score which is then used to choose the better fit programs of each generate for selection and eventually find the best fit program.
Cooperative coevolution involves multiple subproblems or species which evolve separately. Each individual in each species is assigned a fitness score based on the pairings with individuals from the other cooperative species.
OMNIREP is a coevolutionary algorithm where the representation is a species and the encoding is the other species.
Each problem was represented using trees with functions instead of operators.
Each function, represented here as F1 and F3, corresponds to an operator based on a particular encoding. For example, a particular encoding might assign F1 as the addition operator and F3 as the multiplication operator, which would result in the above tree representing the expression 4x+4. However, another encoding could assign F1 as the subtraction multiplier and F3 as the power operator, which would then change the above tree to x^4 – x.
More robust testing across a wide variety of problems is needed to further verify the efficacy of OMNIREP with Genetic Programming. A wide variety is necessary to confirm the viability of OMNIREP as a promising evolutionary computing algorithm.
Thank you to Professor Jason Moore and Professor Moshe Sipper who provided support and help for this project.