This work builds off of the work done by Krawiec et al. in their paper entitled 'Behavioral GP: A Broader and More Detailed Take on Semantic GP'. It entails an implementation of Behavioral Genetic Programming (BGP) which is introduced in their work, with the addition of several extensions to the BGP paradigm.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
The following works on Ubuntu 14.04.5 LTS. Simply download the zip, or clone the repository to your local machine. (If you are using a different system, you may need to change the value of jdk.home.1.8
in build.properties
)
To build the application, in the root folder of the repository, simply run
ant -f build.xml
This will create an out
directory.
To run conventional genetic programming on the Keijzer1 data set for one minute, simply run
java -jar out/artifacts/BGP_steven_fine_jar/BGP_steven_fine.jar -train ./data/keijzer1 -minutes 1 -properties ./props/gp
This will create a file called mostAccurate.txt
, which contains the most accurate model from the run. It shows the fitness and an S-expression of the model, e.g.
$ cat mostAccurate.txt
-0.22959479982773615,0.08131685328492509,(mylog (cos (* (sin (sin (+ (mylog (cos (sin (sin (+ (mylog (cos (* (sin (+ (mylog (cos (sin (sin (+ (mylog (mylog (cos (sin (sin (+ (mylog (cos (* (sin (sin (+ (mylog (cos (sin (sin (sin (sin (mylog (mylog X1)))))))) (mylog (sin (mylog X1)))))) X1))) (mylog (mylog X1)))))))) X1))))) (mylog (mylog X1)))) (mydivide (sin X1) X1)))) (mylog (mylog X1))))))) (mylog (mylog X1))))) X1)))
There are a variety of data sets in the data
directory. Any of these data sets can be used by replacing the argument for -train
with a different data file. E.g. -train ./data/nguyen9
To use your own data set it must be provided in csv format where each line corresponds to a single data point and the target values are placed in the last column.
To run different configurations of genetic programming, a property file must be specified. The props
directory contains a large number of different configurations for different genetic programming runs.
The three BGP configurations presented by Krawiec et al. can be run by using the files ./props/bp2a_reptree
, ./props/bp4_reptree
, and ./props/bp4a_reptree
respectively. To use any configuration file simple replace the argument for -properties
with a different propery file, E.g. -properties ./props/bp4_reptree
.
See docs
folder.