Today’s research will be further dedicated to studying genetic programming and it’s applications, as well as development of our Java application.
In the last post, I went over vocabulary associated with Genetic Programming and what they actually refer to. Here, I will discuss the steps associated with this vocabulary.
The book “Cartesian Genetic Programming” by Julian F. Miller discusses these steps as so:
Step 1] Generate a number of chromosomes randomly, this is the initial population
Step 2] Determine which chromosomes are fittest and allow them to propagate the next generation.
Step 3] Allow the fittest chromosomes to be the parents and select genes from the two parents to participate in recombination to create children.
Step 4] If invalid permutations arise implement a repair procedure to fix them.
Step 5] Allow mutation to happen, for example, swap one gene from a child to another.
Step 6] Form the new population from a combination of the new children and their parents. Sometimes, certain parents are specifically added to the next generation without change.
Genetic programming however, has been implemented in a variety of ways. The book “Cartesian Genetic Programming” lists examples of genetic programming implemented linearly, using trees, and using stacks. Cartesian genetic programming is a graph implementation of genetic programming that minimizes unnecessary program growth.
The nitty gritty details of working with Cartesian Genetic Programming will be further outlined next week by both Taylor and myself. However, for now, I will briefly touch on the work me and Taylor have done toward developing an environment to explore our algorithms with.
Currently me and Taylor have set up a Github repository to collaborate and work on the development of our application. It will be written in Java, and already an initial design has been put forth by my partner.
An initial look at me and Taylor’s GUI, which can be found here on Github.
We are working on getting it up an running, with a goal of having some sort of drawing in black and white functionality by the end of next week.
Our long term goal of understanding our programs, and having a running program by the end of the month remains. Although significant steps have already begun!