Giter VIP home page Giter VIP logo

evobab's Introduction

The Environment and Body-Brain Complexity

This project makes use of and extends the open source Robogen platform for the simulated co-evolution of robot bodies and brains.
The folder 'robogen' contains all the code used to run the experiments for this project and should be run on Linux.
The folder 'robogen-windows' is included as the precompiled executable robogen-file-viewer (for viewing evolved robots in their simulation environments) was not available for linux.

Installation and Compilation

Robogen has numerous dependencies and tools that need to be installed. Instructions for doing so can be found at http://robogen.org/docs/robogen-with-source/.

To compile on linux (using CMake):

cd to the robogen/build directory
cmake -DCMAKE_BUILD_TYPE=Release -G"Unix Makefiles" ../src/
make -j3

Usage Instructions

Navigate to the robogen/build directory.
First you need to run the server:
./robogen-server portNumber
Secondly, start the evolution on the same port as the server:
./robogen-evolver <randomSeed, INT> <outputDirectory,String> <evolutionConfigurationFile, String> [--save-all] [--complexity-cost] The optional --save-all tag will save each individual of the population for each generation to the outputDirectory.
The --complexity-cost tag was used to run evolutions with a simulation time penalty based on the complexity of the individual being evaluated.

All of the evolution configuration files used for this project can be found in robogen/projectSimulations/
The evolution configurations for novelty search are found in robogen/projectSimulations/novelty_search/
The novelty search experiments were conducted by running two scripts found in robogen/build: ./novelty_search.sh and ./novelty_search_complexity_cost.sh
Likewise, the evolution configurations for objective-based search are found in robogen/projectSimulations/objective_search/
The objective search experiments were conducted by running two scripts found in robogen/build: ./objective_based.sh and objective_based_complexity_cost.sh

To use robogen-file-viewer on windows: Navigate to the robogen-windows/run directory ./robogen-file-viewer <robot.json or .txt file> <scenarioConfiguration .txt file>

Example Usage

Example for running an evolution using objective-based search and the first simulation environment. (the --complexity-cost argument could optionally be added)

./robogen-server 8000  
./robogen-evolver 1 results/ ../projectSimulations/objective_based/evolConf0.txt --save-all  

To test run both objective search and novelty search with and without an imposed cost on complexity for populations of 10 for 5 generations:
simply run ./testRun.sh in robogen/build
The output of these runs can be found in testRunResults/

Example usage of robogen-file-viewer on Windows:
./robogen-file-viewer ../examples/simpleRobot.txt ../projectSimulations/objective_based/sim_configs/conf0.txt

Evolutionary algorithm class structure overview

Evolutionary algorithm class structure overview

Demo Videos

The videos show examples of performant robots evolved over 100 generations in:

  • flat environment,
  • environment with evenly spaced regular obstacles,
  • environment with irregularly spaced obstacles of differing heights and
  • tilted environment for both the objective-based and novelty search approaches to evolution. (better quality videos are in the "demo-videos" folder although gifs are played here)

Objective based video:

RobotsEvolvedUsingObjectiveBasedSearch

Novelty search video:

RobotsEvolvedUsingNoveltySearch

evobab's People

Contributors

br00ke avatar christinaspanellis avatar

Stargazers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.