This project is destined for one or two students who took the course Evolutionary Algorithms and Artificial Life. It involves up-to-date research areas such as dynamic problem decomposition and coevolution. The work will be in collaboration with Assaf Zaritsky who will give all the necessary background and guidance. The preferable programming language is Java.

The goal of this project is to create a genetic algorithm (GA) that automatically decomposes a hard optimization problem into a number of smaller subproblems and then optimizes the global problem by applying cooperative coevolution on the subproblems (a species per subproblem).

The target global function for optimization will be defined as the artificial concatenation of two or more known hard functions. Thus, the desired decomposition is known, but this knowledge is not passed on to the GA.

The GA consists of two main stages:

  1. A standard run of a simple GA with one major difference: during the run of the GA information on the "quality" of recombination loci is updated in order to find potential decomposition loci.
  2. The problem is decomposed into a number of subproblems. The first-stage results aid in deciding where to decompose the problem. These subproblems are optimized using a cooperative coevolutionary GA.
Goto mini-project home page.