Goal

  • To gain a deeper understanding about how to evolve controllers and morphologies in RoboGen.

Note: Download the folder Tutorial to get relevant files for this exercise.

Getting Started

Click “Evolution Settings” tab and use myEvolConf.evol.txt as the Configuration file.

Take note of these parameters that define an experiment: the configuration file specifies an evolution configuration file. Note: This is different from the simulator configuration file described above!

The seed for the random number generator is important. If you are replicating an evolutionary experiment several times, you should be sure to specify different seeds for each replicate (this is important for making statistical comparisons!).

The evolution configuration file specifies parameters related to the evolutionary algorithm, as you saw last time, and also includes references to the simulator configuration file that will be used for the fitness evaluations, and to a robot file to evolve from (if applicable). The possible options for this file are documented: http://robogen.org/docs/evolution-configuration/#Evolution_client_settings

evolutionaryAlgorithm – this lets you switch between a basic evolutionary algorithm (Basic) or an indirect encoding known as HyperNEAT, which you will learn about later in the course. For this example we use HyperNEAT so that we can quickly evolve good gaits for our robot. The neatParamsFile lets you modify some internal parameters for HyperNEAT, but we will not touch this file now.

HyperNEAT vs Basic

Try changing properties of the evolution or the robot and running additional evolutionary experiments. Some suggestions:

Change the evolutionaryAlgorithm from HyperNEAT to Basic, and see how the gaits you evolve compare when using a direct encoding vs. the indirect HyperNEAT encoding (you will learn more about this later in the course)
Remove the Oscillator lines from your robot description file. This will revert the ANN to use standard sigmoid neurons. How do standard neurons compare to oscillators on the “chasing” task? Why would we want to use a standard ANN instead of oscillators on other tasks?

Full body Evolution

Now, you will explore the basics of evolving morphologies:
Look at the myEvolConfFull.evol.txt, this shows an example of evolutionary configuration for evolving brains + bodies (note the line evolutionMode=full). Your population will start from a random collection of morphologies using the specified allowed parts

numInitialParts=MIN:MAX defines the possible sizes of these initial morphologies
The addBodyPart command in your evolutionary configuration file defines what body parts are allowed to be included

In the example, this is set to All, so all possible body parts are allowed to be included

Think about why including all body parts may not always be the best idea
Change this to specify just particular body parts (on separate lines), this can take either the Character Code, or name of the Body Part. For example:

addBodyPart=FixedBrick
addBodyPart=ActiveHinge
addBodyPart=PassiveHinge

Try evolving some basic morphologies! We recommend starting with a small number of initial components (say 4 or 5), and only allowing a small subset of components at first.
Familiarize yourself with the other parameters controlling the mutation operators for morphological evolution

http://robogen.org/docs/evolution-configuration/#Evolution_client_settings

For example try adjusting the probabilities of adding body parts, swapping subtrees, modifying parameters, etc.

Be aware: getting good results with full evolution may take some time.

You may need to use larger population sizes, experiment with the replacement strategy and tournament-size and run for many generations.
Today we want to make sure you know how to use the software so you can begin working on your projects.
You should begin carrying on experiments outside of class time.

If you have questions, ask your instructor or the community.

 


Previous Exercise: Configuring the Simulator