I. Structure
My program has several packages: 
1. LGP  includes implementations on all representations, selection operator, and single-point uniform crossover operator.
2. Symbolic Regression  includes implementations on DM and Type I SM, single-action mutation operator, and classes used to translate between gene representation and math representation and between math representation and Java representation.
3. Symbolic Regression Helpers  includes helper classes. They are used to initialize all components 
4. TestAutomation  used to generate data files.
5. TestwithExternalSet  includes multi-point uniform crossover operator, multi-action mutation operator and Type II SM, along with all necessary modification needed to make the program can work on training cases with more than two variables. Some helper classes are located in this package.
6. Utility  classes performs basic functions like compile, standardize, read file contents and write file contents.
II. Usage
1) Development Environment
I developed the program with Netbeans 8.0 and Java 1.8.EasyMock 3.2 is used in unit test.
2) Start Point of the Program
The start point of my program is class Project. It can be found at Project/src/project/
3) Usage of the Program
I use this program with following command:
Java jar ./dist/Project.jar fi X ums t  uhd t
fi is short for function index. X is the function index in Table 5.1. The function index for concrete dataset is 59. ums is short for use minimal setting. The t after it means use minimal setting, use f means full setting will be used. uhd is used to control which recombination operator setting should be used. t means use Type II setting, f means use Type I setting.
4) Other Aspects
(1) The population for each generation will be saved. To change this, modification on the program is necessary. The class need to be modified is population. However, stop this will make the analysis function stop (generate best fitness, last generation for each run and save them in one csv file), which means you need to create new codes for analyzing.
(2) The base folder is /research/ll230/. You need to change it to the folder you wish to use. The string used to store this information can be found in class project.
(3) The split concrete dataset has to be put in /research/ll230/dataset/. This folder is hardwired. Modification in code and recompile is required to change it. The function index for concrete dataset is 59. I separated the concrete dataset without standardizing it. I did the standardizing before using the dataset. You can see the code used to do this in Project/src/TestwithExternalSet/TrainSetAndTestSet/.
