Last updated: 2023-12-24

General information and introduction

Evolutionary Computation is the branch of Computer Science which studies Evolutionary Algorithms, i.e. a set of metaheuristics (stochastic optimization techniques) used for solving optimization problems, which are heavily inspired from the biological concepts of genetics and evolution.

More traditional optimisation approaches (e.g. Linear Models / Neural Networks) typically attempt to solve an optimisation problem by operating on a single candidate solution, and iteratively pushing it towards 'better' positions in the solution space. Evolutionary Algorithms, on the other hand, operate on large samples of individuals (i.e. a population of candidate solutions) instead. Given appropriate (re)definitions for the concept of genes, phenotypes, gene recombination (e.g. crossover), mutation, and fitness, as applied to candidate solutions (i.e. the individuals), an Evolutionary Algorithm then allows the population of solutions to evolve usefully and efficiently, ultimately leading to populations of 'fitter' solutions within a small number of generations (i.e. iterations).

In theory, there exist several subsets of techniques within the domain of Evolutionary Computation, ostensibly differing in the manner in which they interpret or apply the above concepts for the purpose of solving optimisation problems. In practice, however, the distinction between all these subsets has become rather blurred over the years, with large semantic overlap existing between them; the most prominent groupings in this space are Evolution Strategies (ES), and Genetic Algorithms (GA), which focus on somewhat different aspects of the evolutionary process and how it is driven.

Finally, Genetic programming (GP) is an incredibly powerful evolutionary approach that extends genetic algorithms to allow the exploration of the space of computer programs. This means that, by providing appropriate representations for problems, we can efficiently evolve computer programs / artificial agents that can solve incredibly complex tasks in a human-competitive manner.

Aims

The aim of this module is to provide students with the knowledge and ability to:

  • Use evolutionary algorithms in order to solve non-trivial optimisation problems, and
  • Use genetic programming techniques, and define appropriate computer program architectures, which learn/evolve in ways that allow them to adapt to and solve complex problems.

Learning Outcomes

After completing this module, students will be expected to be able to:

  1. Demonstrate an understanding of evolutionary algorithms and their relationships.
  2. Demonstrate an understanding of genetic programming and its relationship with other evolutionary algorithms.
  3. Categorise typical genetic programming application domains and associate these with good genetic programming techniques.
  4. Determine the right parameter settings and specialise existing genetic programming operators, representations and fitness functions for specific applications.

Syllabus outline

  • Evolution in Nature
  • Evolution Strategies
  • Genetic Algorithms
  • The basics of Genetic Programming (GP)
  • Fitness functions in GP
  • Advanced Representations
  • Code growth and methods to control it
  • Applications of GP.
  • Criteria for human-competitive machine intelligence and review of GP's human-competitive results
  • Advanced techniques and tricks of the trade.