CPPN NEAT: General Instructions - GiorgosMethe/Soft-Robots-Novelty-Search GitHub Wiki
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