The Project
How To Run
Group Bios

Evolution Computation

Parts of the weather prediction mechanism of our Android app were equations evolved through genetic programming. The equations inform the prediction mechanism about potential future temperature trends, but the process of evolving the equations is more interesting by far than their application.

A slightly simplified evolutionary process is described by the following cyclical step by step process.

First we must create an initial population of equations. For our purposes, these equations are meant to predict temperature. Because they're randomly generated, they don't do particularly well, nor would we expect them to. Still, some of them are better than others. This is when we enter the selection stage. We test each equation, discard those which do badly, and keep around the comparatively good solutions. The parallel in biological evolution is survival of the fittest. With this smaller population we then enter the crossover stage. Our good equations mate with each other - pieces get swapped, mixed, and matched. We are left with a new, larger population constructed from the part's of last generation's all stars. Finally we enter the mutation stage. It is here that we introduce diversity into our population. For each individual, there is a small chance that it selected for mutation and some part of it is replaced with a bit of random (though mathematically valid) equation which may not exist anywhere else in the population. We then begin our cycle anew, entering the selection stage with our newest set of individuals.

There's quite a bit of randomness in this process and no step is guaranteed to bring us closer to an ideal solution, but when run for hundreds of cycles (generations) with large initial populations, genetic programming can be an affective technique for finding potentially unintuitive but effective solutions.

Carleton CS Comps 2013