GSoc 2010 ALife
The ALife on Asteroids project will try to use the recently released PyBrain python modules to allow for an easy interface between optimization techniques, machine learning algorithms and ALife simulations. This allows also to define ALife type of optimization tasks (see Evolutionary Robotics) that have been one of the targets of PaGMO http://www.esa.int/gsp/ACT/ai/op/roboticislands.html With the release of PaGMO V1.0 it will be possible for users to define problems directly from Python and thus it becomes natural to think to exploit the synergies among the two projects.
The evolution of artificial life on an asteroid-like environment will be the target simulation of this project. Variable creatures should evolve a "walking" behaviour in various gravitational environments.
Student: John Glover
Mentors: Eduardo Martin Moraud, Dario Izzo
Context & Previous Work
The idea is to implement a pagmo::problem (in Python) interfacing a physics/ALife simulator and a machine learning toolbox. The problem would define an artificial life type of task aimed at evolving a walking behaviour of a multi-legged creature on a weak-gravity micro-planet. For the physical simulation ODE (or similar) can be used. For the neural network architecture definition PyBrain is a suggested possibility.
**Related Reading **:
PaGMO applied to Evolutionary Robotics: http://www.esa.int/gsp/ACT/doc/AI/pub/ACT-RPR-AI-2009-galapagos.pdf
Evolving Adaptive Behaviors: A Review: http://www.plosbiology.org/article/info:doi%2F10.1371%2Fjournal.pbio.1000292
**'Bonding' Period ** (April 26 - May 24) Preliminary concepts & tasks
Getting to know PaGMO: Installation, Tutorials & First example of how to create new problems in Python (ex. of Shubert unconstrained global optimisation problem).
More in-depth details on Evolutionary Robotics (ER) problems, and how these are tackled in PaGMO: Stochastic programming, re-evaluation of individuals after migrations etc (ex. of the Inventory problem)
First examples of the use & modification of graphical environments in PyBrain (definition of environments & tasks, use of PyODE etc)
Interim Period (Phase 1: May 24 - July 12 = 1.5 moths) The first phase will be focused on creating the skeleton of the working environment:
- The creation of the physical world (asteroid & creature - no need for much flexibility at first, parameters such as gravity, type of creature, size of asteroid etc can predetermined for now. The flexibility + fancy stuff will come in the second stage). Start with the asteroid, e.g. a potato-shaped mesh grid, + A simple snake-like or 4-legged robot with few DoFs. [by the end of June]
- Setting up both the neuro-controller (i.e. the controller should be a neural net that takes as inputs the readings from joint-sensors --e.g. position & speeds-- and outputs the forces to be applied to each joint to move the bodies) and the fitness (e.g. the distance from initial point to the ending point). The chromosome that gathers the weights of the controller is random and fixed for now: the simulation runs for N seconds with it, after which the fitness is evaluated and returned.
- Linking it with PaGMO: the neuro-controller now takes the chromosomes from PaGMO for each member of the population, compares the fitnesses after the N runs for each one of them, and performs migrations between islands). The principles of stochastic programming to be applied here, so as to account for the randomness underlying the varying environmental conditions. [by mid-July] (Phase 2: July 12 - August 16 = 1 month) This second stage should concentrate on increasing the flexibility, usability & coolness of the environment: Making it possible to choose the paramaters dynamically at initialisation (graphical interface, buttons etc), improving the visual resolution, zooming in/out, store + plotting trajectory followed by agents after evolution. And allow for different types of creatures (with or without legs, number of bodies etc).
- Creation of the Physical world ( Asteroid 3D Mesh-grid & Simple creature)
Setting up the neuro-controller, e.g. Recurrent Neural Network that controls the robot's movements. Random initialisation of the weights for now.
Linking with PaGMO.
Adding texture to the asteroid.
- GUI for increased flexibility provided to the user.
- Final (Thanks John!!!) http://www.esa.int/gsp/ACT/doc/INF/gsoc/ACT-RPT-INF-GSoC2011-JohnGloverAlife.pdf