Genetic Algorithms

Apr 15, 2009 17:55

So, this is kind of out of the blue, but genetic algorithms are kind of neat. It's basically a way to coax controlled randomness into coming up with solutions to definable problems. So, you start out with a problem, and you allow a computer to generate a large number of potential solutions whose variables or behavior are more or less randomly defined. A "fitness test", sometimes in the form of a simulated environment in which variables are expressed or behavior takes place, is conducted, and a portion of the total population of random solutions is determined to be "fit" enough to the next iteration. When setting up the succeeding iterations, potential solutions are sometimes allowed to "mutate" (vary to some extent from the previous version) or "crossbreed" (two or more "fit" solutions combine some of their traits into a new solution). With each succeeding generation, more and more potential solutions come closer to the "fitness" standard.

Since the initial solutions are generated more or less at random, by the time you have an acceptable solution, you may have multiple different ways of achieving the same goal, sometimes ways that are efficient but unexpected.

This Java applet is really fun to mess with. It sets up 2-dimensional world of "eaters" and "plants" where the eaters evolve to eat as many plants as they can in a single "year". Each generation gets smarter and smarter about it, just by bumbling around. It's fun to mess with the parameters, like where the plants go, how many, etc., as well as how much each generation is allowed to mutate and crossbreed.

http://math.hws.edu/xJava/GA/

Also, these are kind of cute...

http://www.youtube.com/watch?v=oquKOVfzGfk
http://www.youtube.com/watch?v=l-qOBi2tAnI&feature=related
http://www.youtube.com/watch?v=AUXc6mckGLE&feature=related

There are plenty of other related videos that I'll have to check out later :)
Previous post Next post
Up