CPPN NEAT: General Instructions - GiorgosMethe/Soft-Robots-Novelty-Search GitHub Wiki

CPPN-NEAT

General instruction before you run the experiment

Simulation settings

The default simulation CPPN-NEAT loads on start is: SimFiles/default/default.vxa

All settings concerning the materials that are used from the simulation as well as other simulation settings such as, timestep, temperature, etc. can be changed in this file. There is no need to compile the code after changes in this file.

CPPN-NEAT algorithm

All the other settings CPPN-NEAT algorithm uses are inside SoftRobotExperiment.dat For changes in this file the project does not have to be compiled again.

Experiment settings

ExperimentType 1.0

PopulationSize 30.0, number of individuals in a generation.

MaxGenerations 1000.0, number generations.

CPPN-NEAT Settings

DisjointCoefficient 2.0

ExcessCoefficient 2.0

WeightDifferenceCoefficient 1.0

FitnessCoefficient 0.0

CompatibilityThreshold 6.0, individuals with less difference in topology than this threshold belong to the same specie.

CompatibilityModifier 0.3

SpeciesSizeTarget 8.0

DropoffAge 15.0

AgeSignificance 1.0

SurvivalThreshold 0.2

MutateAddNodeProbability 0.03

MutateAddLinkProbability 0.05

MutateDemolishLinkProbability 0.00

MutateLinkWeightsProbability 0.8

MutateOnlyProbability 0.25

MutateLinkProbability 0.1

AllowAddNodeToRecurrentConnection 0.0

SmallestSpeciesSizeWithElitism 5.0

MutateSpeciesChampionProbability 0.0

MutationPower 2.5

AdultLinkAge 18.0

AllowRecurrentConnections 0.0

AllowSelfRecurrentConnections 0.0

ForceCopyGenerationChampion 1.0

LinkGeneMinimumWeightForPhentoype 0.0

GenerationDumpModulo 10.0

RandomSeed -1.0

ExtraActivationFunctions 1.0

AddBiasToHiddenNodes 0.0

SignedActivation 1.0

ExtraActivationUpdates 9.0

OnlyGaussianHiddenNodes 0.0

Structure

MaterialsNum 4.0, material number evolution uses, must be present in .vxa file also.

NumVoxelsX 3.0, x size of lattice.

NumVoxelsY 3.0, y size of lattice.

NumVoxelsZ 3.0, z size of lattice.

Statistics and Output

RecordEntireGenEvery 1.0, defines every how many generations, population is going to be saved.

RecordBehaviorSignatureCSV 0.0, save .csv of behavior signatures.

RecordBehaviorSignaturePDF 0.0, save plots of behavior signatures.

AllBehaviors 0.0, Only for visualization of all behavior signatures.

RecordStats 1.0, records stats of the evolution, output in stats.dat

RecordStatsClear 1.0

Fitness

FitnessType 2.0, see VoxSim documentation.

FitnessPenaltyType 0.0, see VoxSim documentation.

FitnessPenaltyExp 1.5, see VoxSim documentation.

Behavior

BehaviorType 3.0, type of behavior, see VoxSim documentation.

BehaviorRecordInterval 0.01, time interval between recordings.

BehaviorRecordStartInterval 0.1, time when behavior is going to start being recorded.

PreProcessType 1.0, 1 is Discrete fourier transformation, 2 is normalization(for trajectories).

SimilarityEvaluationType 1.0, 0 is none, 1 is cross-correlation, 2 is Absolute difference.

Misc

ProgressSimulationInfo 0.0, prints out individual info for each simulation.

VoxSimAll 6.0, sets which behavior type is the one voxsim outputs all behavior signatures, see VoxSim documentation.

Novelty Search

NoveltySearch 1.0, Enables novelty search. If novelty search is on, make sure Behavior type is not set to zero.

NoveltyThreshold 30.0, Individual with minimum difference above this value will enter the novelty set, value depends on the type of experiment and the type of distance metric.

NoveltyDistanceType 1.0, 0.0 is the minimum distance from all novel behaviors found so far, 1.0 is the average distance from the K-nearest neighboring behaviors.

NoveltyDistanceKNNvalue 10.0, value for K-nearest-neighbors.

Competition within species

SpeciesCompetition 1.0, 0, no competition parents selected randomly, 1.0 competition.

SpeciesCompetitionType 0.0, 0.0 competition in respect to global fitness, 1.0 in respect to global novelty, 2.0 in respect to local novelty (How different are the selected parent in each own specie).

SpeciesCompetitionSize 3.0, the best couples/parent to reproduce are not selected with a brute force approach. The size of the tournament defines how many random selection of parent are going to happen before the best one-s chosen.

Other

To get full output of the program to the console just comment the following line:

#define SUPPRESS_PRINTS

in file cppn-neat/NE/HyperNEAT/NEAT/include/NEAT_Defines.h


In directory cppn-neat/NE/HyperNEAT/out' there is a python script run.py` with which is possible to run an experiment multiple times. All the data generated from each experiment will stored in the specified name of the experiment. To do this just run:

python run.py NameOfExperiment NumberOfExperiments