-
Notifications
You must be signed in to change notification settings - Fork 4
jal278/novelty-search-cpp
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Novelty Search C++ v1.0 By Joel Lehman Website: eplex.cs.ucf.edu/ns E-mail: [email protected] Documentation for this package is included in this README file. ------------- 1. LICENSE ------------- This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation (LGPL may be granted upon request). This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details. This distribution uses a modified version of the rtNEAT software package from http://nn.cs.ucf.edu/keyword?rtneat rtNEAT includes its own software license, which is included in this release. However, because Novelty Search C++ does not utilize the real-time component of rtNEAT, it or any extension of it is not covered under the rtNEAT license. However, if you utilize the modified rtNEAT code to create a real-time application, then the rtNEAT license would apply to your code. --------------------- 2. USAGE and SUPPORT --------------------- We hope that this software will be a useful starting point for your own explorations with novelty search. The software is provided as is, however, we will do our best to maintain it and accommodate suggestions. If you want to be notified of future releases of the software or have questions, comments, bug reports or suggestions, send email to [email protected] Alternatively, you may post your questions on the NEAT Users Group at : http://tech.groups.yahoo.com/group/neat/. The following explains how to use Novelty Search C++. For information on compiling Novelty Search C++, please see the section on compiling below. Intro ------ Novelty search is a new perspective on evolutionary computation and search; instead of following a gradient towards a predetermined objective, novelty search follows gradients towards *any* novel behavior. It is motivated by the fact that objective functions may sometimes hinder objectives from being reached. A complete explanation of novelty search is available here: @InProceedings{jlehman:alife08, author = "Joel Lehman and Kenneth O. Stanley", title = "Exploiting Open-Endedness to Solve Problems Through the Search for Novelty", booktitle = "Proceedings of the Eleventh International Conference on Artificial Life (ALIFE XI)", year = 2008, publisher = "MIT Press", address = "Cambridge, MA", site = "http://eplex.cs.ucf.edu/publications.html#lehman.alife08", } The version of Novelty Search C++ distributed in this package executed the experiments in the above paper. For more information, please visit the EPlex website at: http://eplex.cs.ucf.edu/ Usage Instructions --------------------------- The only experiment packaged with this release is the maze navigation experiment from the above publication. To run an experiment, invoke the program as follows: ./rtneat maze.ne medium_maze.txt Then select from either using fitness-based search or novelty-based search. The program will terminate when a solution is found, or 500,000 evaluations have elapsed. You can also substitute hard_maze.txt for medium_maze.txt to test Novelty Search C++ on the hard maze (see the above paper for more details). Collecting Results --------------------------- If a run is successful, the program will write out which individual solved the maze and terminate. Regardless upon whether the run is successful or not, several files will be created when the run terminates: runresults.dat - Contains the value of the archive threshold and how many individuals were added in each generation rtarchive.dat - Contains all the individuals in the archive rtgen_final - Contains all the individuals in the population at the time when the run ended. record.dat - Contains a record of each individual created. The first column contains the fitness of each individual, the second and third columns indicate the x and y coordinates of each individual at the end of its evaluation within the maze. Creating your own Experiments ----------------------------- Noveltyexp.cpp provides documented code that implements novelty search in the maze domain. It is a good starting point for your own experiments. The functions maze_novelty_realtime and maze_novelty_realtime_loop are good templates to copy and use for implementing another experiment. They are called from neatmain.cpp. Noveltyset.h and noveltyset.cpp provide the code responsible for the novelty archive and novelty score calculations. Maze.h is the implementation of the maze navigation domain used in the experiments from the publication above. -------------- 3. COMPILING -------------- The provided makefile should work under most linux/unix environments. There are no external dependencies. Simply type make in the Novelty Search C++ directory, and the rtneat executable will be created. (c) 2008 Evolutionary Complexity Research Group at University of Central Florida
About
C++ Implementation of Novelty Search
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published