Evolutionary algorithms (EAs), which are automated problem solving techniques inspired by biological evolution, have been used to address many challenging problems in a variety of fields. For example, EAs have been used to layout electronic circuits, design radio antennas, identify drug interactions, and to predict cancer malignancy. EAs have also been used to advance our understanding of evolutionary biology, including the evolutionary origins of complexity and altruism. This broad applicability of EAs has led to a variety of different incompatible approaches, which complicates the replication of experiments, promotes duplication of effort, and hinders collaboration among researchers. Moreover, while a powerful tool for solving complex problems, many EAs require that thousands of computationally-expensive simulations be performed before a solution is found. A framework that enables the use of advanced computational resources, while minimizing the incompatibilities between different evolutionary algorithms, is needed.
This research involves the development of "GENEVA," a framework to GENeralize EVolutionary Algorithms. GENEVA is designed to address the challenges facing users of EAs in three ways: First, it provides a C++ and Python-based software abstraction layer so that components from existing EA software packages can be used within a common environment. Second, it enables users to transparently make use of available high-performance computing resources. Finally, GENEVA provides an interactive graphical environment that can be used by students and researchers alike to explore and analyze evolutionary algorithms. To guide the development of GENEVA, two case studies will be investigated, one from each of engineering and evolutionary biology.