Robo Home | Changes | Preferences | AllPages

The idea of genetic programming is that instead of coding a robocode controller by hand, you can produce successful tank programs automatically using evolution. Begin with a population of randomly generated programs that don't do much of anything. Take the best few and push them on to the next generation. Mutation and crossover produce changes in the population. In each generation, the average "fitness" should improve. Over time, very successful programs may arise.

I did a class project on this. You can check out the[paper] and the [powerpoint presentation].

For a basic intro to genetic algorithms, check this out:[[1]].

How to use genetic programming

My results with genetic programming

Damn, looks like the cat is out of the bag. My megabot was supposed to be the first making use of GAs! -- Kuuran

Very interesting! I read your paper a couple of days ago and i think it's great that you post it here on the wiki. Are you planning on taking it to the next level yourself? Together with the neural nets some people are experimenting with this could result in the next generation of top bots! I wonder how long handcoded algorithms will remain on top. Guesses anybody? I would not be surprised if within a few months DT is kicked off the throne by the first NN top bot. The question is... who's bot will it be :-) My bet is on Albert.. One thing's for sure: it will not be mine :-) Vic

My bet is on a jointly developed bot. My bet is that these bots will reign. When it comes to GA vs hand coded I bet on handcoded or carefully crafted combinations of GA and handcoded bots. -- PEZ

As I believe I've suggested before, GA is something to consider for parameter tweaking more than anything else. Though, well... I also have another idea ;) -- Kuuran

Hi everybody -- glad to hear you're interested in this stuff. Unfortunately this was only a class project for me and I don't have any time to take it any further, but I'd be really excited to see people make something that was seriously competitive out of this. I agree that hybrid is probably the best approach, though I think GA can be used for more than just parameter tweaking. Good luck to everyone who is pursuing this! -- Jacob

Two GP-based bots were added to RoboRumble: GPBotA and GPBotB. Don't worry: they won't take over the world. At least for now, we mean :) -- geep

Interesting stuff! Not that they will take over the Robocode-world (yet ;-)), but really interesting. I've found another [PDF] from you (?) about it a little while ago. -- Jonathan

The [PDF] is Jacob's. He has done this research about a year ago and helped us much with ours -- thanks, Jacob!. This is the first and only paper found on the web regarding the use of GeneticProgramming with Robocode.

We hope to publish a paper regarding our works later this year, as we have used different evolutionary methods and techniques. In the meanwhile, we'll try to release a better bot once in a while, if we'd bump into one... -- geep

I think that the powerpoint is broken. For me, I get a continual page direct to itself. -- Kinsen

Wow, this has been dormant for a while. I'm not sure I'll ever be able to program well enough to make a GA bot. However, I am big into genetics, evolution, and adaptation. Might I suggest a version of RH@H be modified to run battles, cull the weak, and duplicate the strong? Essentially it would be a game of evolution with everyone's computers being the environment. Obviously ratings would be considered the resources (IE: food) the bots need to survive. If you then make the amount needed a function of their overall codesize then you've essentially got bots that need to eat... and eat more or less depending on their size. The number of bots will also have to be limited... possibly again by codesize so that only so much space can be taken up by all the bots added together. In that case, if the limit is passed, then the amount of "resources" required by the bots is increased until the number is back under the limits. This would simulate the fact that the bots are in an environment limited by available resources (space and rating points).

Essentially the client would run like this:

I would also suggest the package and name of the bot also be genetic so we can see the evolution of a certain strains as recognized by their names. Also, the rate of mutation will have to be genetic so that there is a variability in how fast a bot can adapt and how stable their code is. In theory, if we can get enough people to run such a client, we could produce a bot that is at least competitive. I would be interested just for the simple fact that we're simulating life in a digital arena. I might have to figure all of this stuff out... just so I can see this to fruition. --Ne

If you are interested in Genetic Programming for Robocode, you should definitely have a look on [RobocodeJGAP] which uses [JGAP] for automatically evolving robots in Robocode. [RobocodeJGAP] has just been released in a new version that is compatible with current versions of Robocode. This project is a very good starting point for GP for Robocode, I think! :-) --Fnl

I don't think GeneticAlgorithm should point to this page. In EvolutionaryComputaion? GeneticAlgorithm s and GeneticProgramming are two different techiniques. GPs evolve programs GAs evolve ... anything really ... that can be expressed in a suitable format. See the Wikipedia article on [Genetic Algorithms]. I'd turn GeneticAlgorithm into a separate page but I don't know how.

Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited February 16, 2008 10:10 EST by GrubbmGait (diff)