Where to start?
Get a genetic algorithm library
So far GAlib written by Matthew Wall at MIT is looking like the favourite for my experiments.
Encoding a core war program
Probably one of the most important details of any genetic algorithm is how you encode the dataset. I've decided to go simple first and get something up and running. I can always change the representation at a later date. One thing that I have decided is that we're not going to go for a binary representation. Maybe a combination of binary and numeric representations for the different fields. Hopefully this will make some sense once I start jotting down some of my ideas for the encoding.
A core war program is a list of commands where a command is of the form
instruction.modifier a-mode a-op , b-mode b-op
For further discussion of the Redcode instruction set refer to the ICWS94 standards.
Most genetic algorithms I have seen use some form of binary encoding for their data. This makes the mutation and crossover functions easy but don't, in my opinion, create a steady search of the solution space in this particular example. For this reason I propose not to encode any of the 6 fields of a command! This may sound a little odd but as long as the mutation and crossover functions take this into account then I believe that a better breeding program can be produced.
Unfortunately the easiest way of getting a GA up and running is to use a binary encoding. So go here for a quick and easy core war breeding program! Once I've got my head around the Genetic Algorithm library I'll change to a decent encoding.