Create life, or something like it. Based on the Darwinian principle of survival of the fittest, genetic programming uses mutation and replication to produce algorithms for creating ever-improving computer programs. This article covers instructions on how to simulate a multi-celled organism.
Darwin never said, “Survival of the fittest,” T.H. Huxley, his friend and supporter did. Since then that phrase has distorted the concept of evolution. The ‘fittest’ will die if they are in the wrong place and the wrong time. The less fit will survive if they have they have the capacity to adapt to whatever killed the fittest, or if they are lucky enough to elsewhere at the time. I hope the designers of the simulator undestand this.
My first undergrad project in theoretical chem was using genetic algorithms. I created one to do minimization on Lennard-Jones clusters. Not original work, really, but I learned a lot. First bit project in F95.
Of course, now, I could do it much faster and better. That old program used the “0100101…” style chromosomes mainly because I was programming from nil. So, I followed examples from the books around. Heck, I could probably do it better in Ruby now.
Still, cool article about a cool technique.
If the “fittest” die because of environmental factors, but the “less fit” survive, then the “fittest” were actually the ones originally deemed “less fit”.
I love genetic algorithms, though they are no silver bullets. Their inherent parallelism greatly reduces your search space for “good” solutions, but it is also possible for them to completely miss the “best” solution if the path to that part of the search tree passes through a significantly inferior specimen.
A few years ago I developed a program for evolving killer robots for realtime battle using genetic programming. Sadly all the robots evolved to pacifists since that was the approach to survival under the conditions presented.
http://peggus.freelinuxhost.com/Genetic.html
http://realtimebattle.sourceforge.net/
@Peggus: You should have included an ‘ego’ rating that decreased if they didn’t fight. Therefore a balance between fighting and pacifistic could be created. The ‘ego’ would be used for the mutation giving it a higher significance to help cultivate this attribute in the next generation of robots.
Yeah, I was thinking about adding number of shots fired into the fittness equation but realtimebattle didn’t keep track of that statistic. It would have been easy to have each indiviual robot keep track of number of shots fired but I didn’t have time to implement it at that time. I might still do so in the future.
Did they have anything to fight over? No point in fighting over nothing. Perhaps give them limited source of food.
Imo the parallelism doesn’t reduce the fitness space, just helps making the search faster. Also, it is common practice to run the same program with different seeds for statistical evaluations (Koza, Goldberg).
Are you suggesting they had enough intelligence to know there’s no point in fighting? Anyway yes, there were cookies involved in the equation and what better reason to fight than cookies. My mistake was more along the lines of not breeding the agressive ones (due to lack of data on agressiveness) rather just the surviving ones, this weeded out agressive behavior as the agressive bots tended to bumb into things and die off.
Check out my webpage for more details on what happened.
http://peggus.freelinuxhost.com/Genetic.html
I really need to get a linux partition set up so I can continue this project….
Are you suggesting they had enough intelligence to know there’s no point in fighting?
Joshua : A strange game. The only winning move is not to play. How about a nice game of chess?
One interesting project that uses .Net for AI simulation and a technique called code hosting (where you upload a dll file describing your organism and its AI functions) is Terrarium: http://www.terrariumgame.net/terrarium/
The Source code is supposed to be released to the entire application, but I’ll believe it when I see it. Still, worth a look.
You have a strange definition of the fittest, if the fittest die and the less-fit don’t die!
Maybe it’s your understanding that must be changed?
Survival of the fittest is a good way to summarize evolution who is the fittest depends of course of the environement and can of course change in time as the environement changes..