Overview: Evolutionary Computation

Evolutionary Computation (EC) seeks to harness the power of Darwinian evolution in order to solve computational problems.  Click here for a
n overview of EC and evolutionary algorithms.

These algorithms have shown great promise in evolving novel solutions to real-world problems, such as the design of anteneas currently used on a Nasa satellite, neural controllers for legged robots allowing them to traverse varied landscapes, and even programs that help choose sound investments based on past data (used by several major investment firms).

Current research: Complexity and Diversity

Despite the success of EC to evolve solutions to real problems, the complexity of those solutions is limited, unlike the apparently open-ended evolution that occurs in the natural world.
The complexity of solutions produced by traditional evolutionary algorithms is typically limited by rapid convergence to a single solution on a sub-optimal local peak in the fitness landscape, leading to stagnation. In part, nature surmounts these complexity barriers with natural ecological dynamics (such as spatial and temporal environment heterogeneity) that generate an incredibly diverse array of raw materials for the evolutionary process to build upon, allowing for the evolution of very complex problem solutions, such as humans ourselves!

I am investigating integrating one diversity-promoting ecological factor, limited resources, into an evolutionary algorithm, and studying in what problem domains this ecology-based evolutionary algorithm is able to achieve higher levels of complexity.  I am currently using Avida as my test evolutionary system, but limited resources could be implemented in and benefit any evolutionary algorithm.  Diversity in a population, if done right, can provide other significant advantages beyond forestalling stagnation.  Potential benefits to EA’s include:

(1) maintenance of a selection of good solutions for the researcher to choose from, often with slightly different properties

(2) the use of a diverse set of partial-solutions as starting points to build the full solution from, without the researcher needing to know the ideal path

(3) resilient solutions that can withstand environmental changes

(4) significantly more rapid evolution of targeted complex functions. 

Robust ecological communities exhibit all of these traits, and ideally so would evolutionary algorithms.  I am specifically studying the advantages of my ecological algorithm in evolving UML models for adaptive software programs, a problem which benefits from all of the above traits.

Past Research: So many interesting things to study!

I have also performed research in other related areas, and still have interest in continuing these projects in my future career.  Past projects include:

(1)  The evolution of altruism and kin-selection

(2)  The evolution of evolvability, especially evolving the parameters of a genetic algorithm

(3)  The evolution of communication and cooperation

(4)  Automatic problem decomposition