# lilgpSetup User's Manual

## 1.1 Introduction

LilgpSetup is a companion utility for lil-gp that will help you construct the parameter files necessary to run experiments with lil-gp. It provides a set of fill-in forms that are organized by the type of parameters they are responsible for. You simply enter parameters in the required fields, many of which already contain default values that follow the recommendations found in John Koza's Genetic Programming and Genetic Programming II. Once the parameters have been entered, lilgpSetup will parse them and report any errors or warnings it has found. After the you have resolved the errors, lilgpSetup will automatically generate a parameter file that is ready to be used by lil-gp.

If you are unfamiliar with genetic algorithms, genetic programming, or lil-gp, then you should begin by reading the lil-gp User's Manual.

### 1.1.1 Features

lilgpSetup features include:

- Ease of use: graphical interface allows point and click selection of several parameters
- Secure: built-in error checking for every parameter allows nearly error-proof entry of parameters
- Parameter file generation: automatically creates the lil-gp parameter file
- Parameter file support: able to read existing parameter files and edit them
- Visual sub-population editor: graphical editor allows point and click construction of sub-population exchanges
- Complete: supports most of the lil-gp parameter file features
- Portable: written in Java for portability
- Help: point and click access to definitions of every parameter

### 1.1.2 Limitations

lilgpSetup does not support the following features of lil-gp:

- no built in support for any of the parameters associated with problems that define individuals in the population as sets of trees, rather than as single trees. However, these parameters can be entered in the User Defined Parameters window, but they will not be checked for errors. The following table summarizes the parameters that are not supported:

tree[#].max_nodes
tree[#].max_depth
init.tree[#].method
init.tree[#].depth
exch[#].from.tree[#]
exch[#].fromselect[#]

- No support for parameter file pre-processor directives
- Not guaranteed to read parameter files that were not created with lilgpSetup. Unknown parameters are placed in the User Defined Parameter window.

### 1.1.3 Author

This software was written by Ryan Shoemaker under the direction of Dr. William Punch. Other companion utilities for lil-gp have been developed by Ryan Shoemaker and Dave Guyette as part of a joint project.

Comments and suggestions may be sent to:

> shoema16@cps.msu.edu
> punch@cps.msu.edu

> Department of Computer Science
> 3115 Engineering Building
> Michigan State University
> East Lansing, MI 48824
> USA

## 1.2 Getting Started

When you unpack the distribution, you should get this directory tree:

    lilgpSetup/
        classes/          (byte-code files)
        docs/             (documentation files)
            images/       (image files used in documentation)
        javadocs/         (source-code documentation files)
            images/       (image files used in source-code documentation)
        src/              (source-code files)

Before using lilgpSetup, you must have Java JDK 1.02 installed on your system. To generate the .class files, change into the lilgpSetup/src directory and type:

javac -d ../classes *.java

To run lilgpSetup, simply change into the lilgpSetup/classes directory and type:

java lilgpSetup

If you are running the utilities under Windows95/NT, you will have to modify the paths in the above commands and also add the lilgpSetup/classes directory to your CLASSPATH in place of the dot directory ".".

This is version 1.0 of lilgpetup. Updates and information related to lilgpSetup can be found on the World Wide Web at http://isl.cps.msu.edu.

## 1.3 Window Descriptions

The user interface for lilgpSetup is structured around the different parameter categories outlined in Chapter 5 of [Zon96]. Each parameter category has a panel dedicated to it in lilgpSetup and switching between them is accomplished by clicking on the buttons on the left-hand side of the main window. Each panel contains a number of fields and components that allow you to select values for the parameters that control the operation of lil-gp. Several of these components already contain values when you run lilgpSetup. These are the default values that the system assumes if you do not change them. Each component has a label next to it that can be used to request immediate help for that parameter. Simply place the mouse over the label and hold down the Ctrl button while you click on the label. This will open the on-line help system to a page that contains information about the selected parameter.

This remainder of this manual will be dedicated to providing screen-by-screen description of every feature available in lilgpSetup. Each section will focus on a specific window in the system and the features available from it.

### 1.3.1 Menu Options

The only two menus available on the menubar are File and Help. The File menu offers three options: Open, Save As, and Exit. Selecting the Open or Save As menu items will open a file dialog and allow you to open and save parameter files. Selecting the Exit menu item will exit the system after asking for confirmation. The Help menu has two menu items: Help and About. Selecting Help will open an on-line help system that will allow you to search by keyword and selecting About will display information about the author and version of lilgpSetup.

### 1.3.2 The General Parameters Window

This window allows you to enter all of the parameters that control the over all operation of lil-gp. As you can see in Figure 1, this parameter panel contains three textfields for entering parameter values. The following table summarizes legal values for these fields:

Parameter Name | Expected Data Type and Range | Default Value
max_generations | positive integer | none
pop_size | positive integer | none
random_seed | integer | 1

Figure 1 - General Parameters Window

### 1.3.3 The Output Parameters Window

This panel allows you to enter parameters that control lil-gp's output files and checkpoint files.

Parameter Name | Expected Data Type and Range | Default Value
output.basename | string | lilgp
output.detail | integer between 0 and 100 | 50
output.stt_interval | integer between 1 and max_generations | 1
output.bestn | integer between 1 and pop_size | 1
output.digits | positive integer | 4
checkpoint.interval | integer between 1 and max_generations | none
checkpoint.filename | string | gp%06d.ckp
checkpoint.compress | string | none

Figure 2 - Output Parameters Window

### 1.3.4 The Size Limit Parameter Window

This panel allows you to enter the parameters that control the size of individual trees in the population.

Parameter Name | Expected Data Type and Range | Default Value
max_nodes | positive integer | none
max_depth | positive integer | none

Figure 3 - Size Limit Parameters Window

### 1.3.5 The Tree Initialization Window

Parameters entered in this window will control how the population of trees is initialized.

Parameter Name | Expected Data Type and Range | Default Value
init.method | half_and_half, grow, or full | half_and_half
init.depth | string | 2-6
init.random_attempts | positive integer | 100

Figure 4 - Tree Initialization Parameter Window

### 1.3.6 The Breeding Parameter Window

This window allows you to select the number of breed phases and whether or not to use probabilistic operators. After entering the number of breed phases, click the 'Go' button to open the Phase Parameters window where you will select the individual operators and rates. If you want to delete all of the current breed phase operators and rates from the database, simply press the 'Purge' button.

Parameter Name | Expected Data Type and Range | Default Value
breed_phase | positive integer | none
probabilistic_operators | on or off | on

Figure 5 - Breeding Parameters Window

### 1.3.7 The Phase Parameters Window

This window allows you to select the breed operators, selection methods, and breed rates for each phase. The left-hand panel contains all of the parameter labels for the phase panels. The phase panels respond to your selections by hiding and showing only those options appropriate for the current selection. For example, when you select 'crossover' in an operator field, the 'cutoff', 'proportion', 'size', 'method', and 'depth' options are hidden since they do not apply to the crossover operation. When you are through selecting the options for each phase, click the 'Accept' button to save your changes and return to the main window.

Parameter Name | Expected Data Type and Range | Default Value
operator | crossover, reproduction, or mutation | crossover
selection | fitness, fitness_overselect, tournament, inverse_fitness, random, best, or worst | fitness
cutoff | real number between 0.0 and 1.0 | if pop_size <= 1000 else 320/pop_size
proportion | real number between 0.0 and 1.0 | 0.80
size | integer between 1 and pop_size | 2
keep_trying | on or off | on
internal | real number between 0.0 and 1.0 | 0.9
external | real number between 0.0 and 1.0 | 0.1
method | half_and_half, grow, full | half_and_half
depth | string | 0-4
rate | real number between 0.0 and 1.0 | none

Figure 6 - Phase Parameters Window

### 1.3.8 The Sub Population Parameters Window

This window is very similar to the Breed Phase Parameters window. After entering the number of sub-populations and the exchange frequency, click on the 'Go' button to open the exchange editor and exchange graph. This window also has a 'Purge' button on it to remove any exchange parameters that are currently in the database.

Parameter Name | Expected Data Type and Range | Default Value
multiple.subpops | positive integer | 1
multiple.exch_gen

integer between 1 and max_generations
none

Note, there is no field for multiple.exchanges. This parameter is automatically entered into the database by lilgpSetup when you close the sub-population editor.

Figure 7 - Sub Population Parameters Window

### 1.3.9 The Sub Population Editor Window

This window contains all of the controls needed to create and edit sub-population exchanges. Adding a new exchange requires you to set the five components in the top of the panel and click on the 'Add/Replace' button. After adding the new exchange, you will see a verbal description of it appear in the bottom summary area. You should also see a graphical representation of it in the Sub Population Graph window. There are several other options available to you in this window. To delete an existing exchange, select it in the summary portion of the window and press the 'Delete' button. Similarly, you can edit and replace exchanges by clicking the appropriate buttons.

Figure 8 - Sub Population Editor Window

### 1.3.10 The Sub Population Graph Window

In this window, you will find a graphic representation of the sub-population exchanges that you have entered in the exchange editor. There are no controls available in this window - it is for visual purposes only.

Figure 9 - Sub Population Graph Window

### 1.3.11 The User Defined Parameters Window

Any application specific parameters may be typed in this window as long as they are of the form 'parameter = value' Even though there is no explicit support for the multi-tree individual parameters listed in the Limitations section, you may enter values for them here. Unfortunately, the validity of the parameter values can not be checked.

If lilgpSetup fails to recognize a parameter while reading from a parameter file, then it will assume that the parameter is user defined and place it in this window. As a consequence, if you hand edit a parameter file (i.e. in emacs or notepad) and make a typographical error, that parameter will likely appear in this window along with any legitimate user defined parameters.

Figure 10 - User Defined Parameters Window

### 1.3.12 The Compile Button and Error List

At any time during the process of entering parameters, you may press the 'Compile' button found in the lower left corner of the main window. This will cause lilgpSetup to collect all of the parameters from each window and check them for errors. When this process is complete, the Error List window will open (or be updated if it is already open) and display the results. Figure 11 shows what this window looks like when it contains errors. In this case, lilgpSetup has found an error with the pop_size parameter. Consequently, it can not verify any of the variables that depend on pop_size, so a warning is issued for output.bestn. Entries beginning with '>' are comments inserted by lilgpSetup.

Figure 11 - Error Window With Errors

Once you have fixed all of the errors, the Error List window should look like Figure 12, and you are ready to save the parameter file. It is not necessary to manually compile the parameters before saving the parameter file, lilgpSetup automatically checks them for errors before allowing a save to occur. As a result, there is no way of saving a set of parameters that contains either errors or warnings.

Figure 12 - Error Window With No Errors