Quick start guide
First, let me say thanks for downloading this and having a look, hopefully you will find it useful.
So you have downloaded and extracted the latest NEAT4J binary distribution zip file, what do you do now?
All you need to run NEAT4J is Java 1.4 or better. Thats's it, all the necessary 3rd party libraries are included in the distribution.
Once the correct Java version (java -version will tell you) is installed, follow the steps below to run the XOR experiment:
||Change to the NEAT4J directory e.g. 'directory you unzipped to'/neat4j_1_0.
||Type the following command xor_train.bat xor_neat.ga to run the XOR experiment. If either of the terminating conditions are reached, i.e. NUMBER.EPOCHS exceeded or the fitness is less than TERMINATION.VALUE (both from xor_neat.ga), the training run will stop. The "Best Ever Raw" value of the last epoch should be less than the TERMINATION.VALUE of xor_neat.ga or there should have been 100 epochs.
For example, for a configured termination value of 0.1, a valid (assuming less than 100 epochs) best ever raw could be 0.08443389689200868 or similar. The training run should take around 1 or 2 seconds.
Each generation displays the current epoch of evolution as Running Epoch[n], the current compatability threshold and some basic information about the fittest individual. Additionally, any new or extinct speices will be flagged. In the XOR experiment
you have just run, you should have noticed that the comaptability threshold changes dynamically over time. This is because the configuration is setup to attempt to stabilise the number of created species
and hence the number within in each specie. This will all be explained in the configuration section. This experiment is setup to stop after 100 epochs or the training error of the best individual is less than 0.1, whichever happens first.
||Once training has successfully completed, enter xor_test.bat xor_neat_ga.app to run a test using the best individual. The output will look something like this:
04-Sep-2006 15:52:41 INFO Output for 1.0,0.0, is 0.9393527621861985
04-Sep-2006 15:52:41 INFO Output for 0.0,1.0, is 0.9351482843101866
04-Sep-2006 15:52:41 INFO Output for 0.0,0.0, is 2.573832780521892E-4
04-Sep-2006 15:52:41 INFO Output for 1.0,1.0, is 0.10048743207386308
This shows the network outputs for the given inputs of (1,0), (0,1), (0,0), (1,1). Whilst the outputs are not binary outputs, they are close enough to be considered as that. If you want to get closer values, alter the TERMINATION.VALUE accordingly.
Also, the test run displays the trained network, an explanation and examples of which can be found here
So what are the next steps. First, I recommend you read the configuration section and understand what all the parameters in the *.ga files do and modify them using the XOR experiment. You can then start writing your own experiments.