Configuration

The configuration file config.txt is a text file that is read once when evolve starts. Each line of the file is in the format:


     PARAMETER_NAME  value


Parameters that are not set explicitly in this file are given their default value. The config.txt file for the cheetah-test example is:

 

POPULATION_SIZE               500

RANK_PARENTS                  250

NUM_STEPS_PER_TRIAL           100

NUM_TRIALS_PER_GENERATION     1

MAXIMISE                      1

PROGRAM_MEMORY_SIZE           1024

MAX_RUN_CYCLES                1024

INPUT_MEMORY_SIZE             32

OUTPUT_MEMORY_SIZE            8


The configuration parameters, their default values and their interpretations are given in the sections below.

POPULATION_SIZE

Default: 5000

 

This is the number of individuals in the population. Higher numbers improve the search performance and enable many combinations of behaviours to be tested per generation.

 

This parameter has a direct impact on memory required by evolve when running. If evolve crashes due to lack of resources then try reducing this value.

RANK_PARENTS

Default: 2500

 

This is the number of individuals in the population that will be designated to be parents based upon their performance ranking. This number should always be less than POPULATION_SIZE. The difference between POPULATION_SIZE and RANK_PARENTS will be the number of children tested per generation. More children enables more combinations of behaviours to be tested, however more parents promotes diversity of these behaviours. 

NUM_STEPS_PER_TRIAL

Default: 500

 

This is the number of times StepEnv will be called per trial per individual and the number of times the learned program will be run per trial per individual. StepEnv will return a fitness value each time it is called and therefore this is also the number of fitness values that will be accumulated per trial.

NUM_TRIALS_PER_GENERATION

Default: 1

 

This is the number of trials that are run per individual per generation. The ResetEnv function will be called for every new trial and therefore every trial can be an independent event as determined by problemDefinition.py. The total fitness function for the individual will not be reset between trials and therefore is the accumulated value over all steps in all trials.

 

If there is randomness in the environment, using multiple trials can produce more robust solutions at the cost of longer runtimes. This feature can also be used to subject the agent to different types of trial and therefore to encourage more complex behaviours to emerge.  

MAXIMISE

Default: 0

 

Setting this to 1 causes evolve to maximise the fitness value. Setting to 0 causes evolve to minimise the fitness value.

PROGRAM_MEMORY_SIZE

Default: 128

 

The maximum number of instructions that can be in the learned program. Higher values are required for more complex programs. This has to be a 2N value where N is an integer.

MAX_RUN_CYCLES

Default: 128

 

The maximum number of instructions that can be executed in a single run of the program. Higher values are required for more complex programs.

DATA_MEMORY_SIZE

Default: 128

 

The size of the data memory available to the learned program. Higher values are required for more complex programs. This has to be a 2N value where N is an integer.

CONTEXT_DEPTH

Default: 4

 

The number of program contexts available in the learned program. Higher values are required for more complex programs.

OUTPUT_MEMORY_SIZE

Default: 128

 

The number of outputs that can be produced by the program. This has to be a 2N value where N is an integer. This also needs to be equal to or higher than the size of the action array expected back by StepEnv.

INPUT_MEMORY_SIZE

Default: 128

 

The number of inputs expected by the program. This has to be a 2N value where N is an integer. This also needs to be equal to or higher than the size of the observation array received from StepEnv.

NUM_SEED_FILES

Default: 10

 

When evolve first starts, it will take files seedN.hif (where N is in the range 0 to NUM_SEED_FILES) and load these into children in the next generation.

 

NUM_SEED_FILES is the maximum N that will be checked when looking for files seedN.hif. If less that NUM_SEED_FILES exist, the process of seeding the individuals will continue by looping through the available files.

NUM_GENERATIONS_TO_SEED

Default: 10

 

When evolve first starts, it will take files seedN.hif (where N is in the range 0 to NUM_SEED_FILES) and load these into children in the next generation. The number of generations it will perform this action is controlled by this parameter.

NUM_INDIVIDUALS_TO_SEED

Default: 10

 

When evolve first starts, it will take files seedN.hif (where N is in the range 0 to NUM_SEED_FILES) and load these into children in the next generation. The number of children seeded at each generation is controlled by this parameter.

RAND_LOG_MEAN

Default: 0.0

 

Constants within the generated software are based upon random numbers. These random numbers have a normal distribution in the log10 space. The default value of 0.0 gives the centre of the distribution of random numbers at 100.0 = 1.0

RAND_LOG_SIGMA

Default: 1.0

 

Constants within the generated software are based upon random numbers. These random numbers have a normal distribution in the log10 space. The default value of sigma is 1.0. Given that the default value for the mean is 0.0 the +1 sigma point is 101.0 = 10.0 and the -1 sigma point is 10-1.0 = 0.1