CS81 Lab4: Novelty Search

Due by noon next Friday

In this lab you will implement novelty search, introduced by Joel Lehman and Kenneth O. Stanley, and combine it with NEAT to conduct an evolutionary search based on a novelty metric rather than an objective fitness function. Lehman and Stanley argue that objective fitness functions can be deceptive, leading the evolutionary search to local maxima rather than towards the goal. In contrast, novelty search ignores the objective and simply searches for novel behavior, and therefore cannot be deceived.

Do an update81 to ge the starting point files for this lab.

1. Create a class to implement novelty search

Before trying to implement novelty search, review the details of the algorithm on pages 12-14 of the paper Abandoning objectives: Evolution through the search for novelty alone.

In the file noveltySearch.py, create a python class called Novelty. Implement the following methods:


2. Test methods of novelty search on random points in 2d

3. Test novelty search on XOR

Optional: Test novelty search on maze traversal

Before trying to implement maze traversal, read through the details of the maze experiment that Lehman and Stanley conducted on pages 14-16 of their paper Abandoning objectives: Evolution through the search for novelty alone.


Submit

When you are done run handin81 to turn in your completed lab work.