neat4j logo
Home
Tutorials
Documentation
  Configuration
  Javadoc
Screenshots
Downloads
Contact

Configuration guide

There are 3 configuration files that describe the training and running behaviour of NEAT4J. These are '.ga', '.net' and '.app'.

.ga parameters
The '.ga' file is the most important configuration file as this file contain the training parameters.

Parameter Name Parameter Description Range Example
PROBABILITY.MUTATION This value controls the mutation of connection weights and the sigmoid factor of the neurons. 0 - 1 0.25
PROBABILITY.CROSSOVER This value controls the rate at which individuals, within the same specie, perform a GA crossover operation as defined in the NEAT algortihm. 0 - 1 0.2
PROBABILITY.ADDLINK This is the rate at which new links are added between neurons. It does not take into account the recurrent parameter as this check is performed at the end of a mutation. 0 - 1 0.05
PROBABILITY.ADDNODE This is the rate at which new neuron is added to an enabled link. 0 - 1 0.03
PROBABILITY.MUTATEBIAS Each neuron has a bias value. This parameter controls the rate at which they are mutated. 0 - 1 0.3
PROBABILITY.TOGGLELINK A link (neuron-neuron connection) has two states, enabled and disabled. This paramter controls the rate at which a link might toggle its state. 0 - 1 0.3
PROBABILITY.WEIGHT.REPLACED A link can have its weight reset to some arbitrary value regardless of its current value. This parameter controls the rate at which this happens. 0 - 1 0.3
EXCESS.COEFFICIENT A NEAT specific coefficient that privides a measure of importance to the excess of genes, within a chromosome, when it comes to calculating the compatability between two chromosomes. >=0 1
DISJOINT.COEFFICIENT A NEAT specific coefficient that privides a measure of importance to the difference of genes, within a chromosome, when it comes to calculating the compatability between two chromosomes. >=0 1
WEIGHT.COEFFICIENT A NEAT specific coefficient that privides a measure of importance to the weight differences of link genes, within a chromosome, when it comes to calculating the compatability between two chromosomes. >=0 3
COMPATABILITY.THRESHOLD A speciation parameter that is used when deciding if a given chromosome should go in a given species. >=0 3
COMPATABILITY.CHANGE If this is 0, then the COMPATABILITY.THRESHOLD will not change at all. This means that the number of species will be not controlled. If this is greater than 0, then the COMPATABILITY.THRESHOLD will by dynalically changed (*up or down) by this change value to try and keep the number of species to be SPECIE.COUNT. >=0 0.1
SPECIE.COUNT When the compatability change is non zero, this paramter defines the target number of species >=1 15
SURVIVAL.THRESHOLD During mating within a species, this value defines the fraction of the top specie members that are allowed to mate. For example, if the value was 0.2, then only the fittest 20% of the specie would be allowed to mate. >=0 0.4
SPECIE.AGE.THRESHOLD Once a species age reaches this value, the fitnesses of the specie members will be multiplied by SPECIE.OLD.PENALTY. >=1 80
SPECIE.YOUTH.THRESHOLD Whilst a species age is less than this value, the fitnesses of the specie members will be multiplied by SPECIE.YOUTH.BOOST >=1 10
SPECIE.OLD.PENALTY The penalty applied to the fitness of a given species members. Note, if NATURAL.ORDER.STRATEGY is true, this should be >= 1 else <= 1 >=0 1.2
SPECIE.YOUTH.BOOST The boost applied to the fitness of a given species members. Note, if NATURAL.ORDER.STRATEGY is true, this should be <= 1 else >= 1 >=0 8.8
SPECIE.FITNESS.MAX This parameter defines the allowed staleness of the species fitness. For example, if this value was 15, then if a species overall or best fitness did not improve for 15 epochs, then this species would become extinct and removed. >=1 15
OPERATOR.XOVER The crossover operator class org.neat4j.neat.core.xover.NEATCrossover N/A
OPERATOR.FUNCTION The fitness function operator class org.neat4j.neat.core.fitness.MSENEATFitnessFunction N/A
OPERATOR.PSELECTOR The parent selection operator class org.neat4j.neat.core.pselectors.TournamentSelector N/A
OPERATOR.MUTATOR The mutator operator class org.neat4j.neat.core.mutators.NEATMutator N/A
MAX.PERTURB The maximum (plus and minus) value that a connection weight can be modified by. >=0 0.5
MAX.BIAS.PERTURB The maximum (plus and minus) value that a neuron bias can be modified by. >=0 0.1
FEATURE.SELECTION This defines the initial topology setting. If it is true then a random input is connected an output until all outputs have one connection. If it is false then all inuts are connected to all outputs. true or false false
RECURRENCY.ALLOWED This defines the whether recurrent connections are kept, or not, after a chromosome has been mutated. true or false false
INPUT.NODES Number of inputs into the network >=1 2
OUTPUT.NODES Number of outputs from the network >=1 1
NN.CONFIG Path to the neural network configuration file. Can be relative or absolute. String ../xor_ga_neat.net
ELE.EVENTS Determines whether ELEs (Extinct Life Events) occur. This will multiply the compatability threshold by 5 and keep the top n% as defined in ELE.SURVIVAL.COUNT. This is usually meant to be quite brutal. true or false false
ELE.SURVIVAL.COUNT The fraction of the resultant species that will survive. >=0 0.1
ELE.EVENT.TIME The number of epochs between each ELE. Should be quite high as (hopefully) in real life. >=1 1000
KEEP.BEST.EVER This parameter coontrols whether, or not, the species containing the best performer is kept after the SPECIE.FITNESS.MAX has been exceeded. true or false true
EXTRA.FEATURE.COUNT Describes the number of extra genes within the chromosome that have no topological effect and are used for defining evolved input values. >=0 0
POP.SIZE Size of the chromosome population. >=1 150
NUMBER.EPOCHS Number of epochs for the training run. >=1 100
TERMINATION.VALUE The fitness value at which the training run will stop assuming the number of epochs has not been exceeded. >=0 0.1
NATURAL.ORDER.STRATEGY This defines if fitnesses are better as they approach 0 (true) or as they get larger (false). true or false true
SAVE.LOCATION The location to save the best performing member of each generation. Currently, this just serialises the Java object String xor_neat_ga.ser

.app parameters
This defines parameters for running applications that use a trained individual.

Parameter Name Parameter Description Range Example
INPUT.NODES Provides the number of input nodes into the NEAT neural net >=1 2
OUTPUT.NODES Provides the number of output nodes from the NEAT neural net >=1 1
AI.SOURCE Defines the relative or absolute path to the saved chromosome. String org.neat4j.neat.nn.core.learning.GALearnable
NN.CONFIG This is the path to the NEAT neural net config. This is in because the NEAT project was originally part of an AI framework. This parameter will be removed. String xor_ga_neat.net
INPUT.DATA efines the relative or absolute path to the test data. String xor_test.csv
LEARNABLE The class that provides the learning environment to the network. This value should always be this class. String org.neat4j.neat.nn.core.learning.GALearnable

.net parameters
This file contains the path to the training data for the NEAT neural network.

Parameter Name Parameter Description Range Example
LEARNABLE The class that provides the learning environment to the network. This value should always be this class. String org.neat4j.neat.nn.core.learning.GALearnable
TRAINING.SET The location to of the training data.t String xor.csv