There are 3 configuration files that describe the training and running behaviour of NEAT4J. These are '.ga', '.net' and '.app'.
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 |