Tuesday, April 08, 2008

The Pinocchio Function, Part 3: Standing On The Shoulders Of Giants

The story I'm telling here is true. The dates are approximate and the events are summarized, but I'm not making this shit up. This is part three of the recap of the story so far. You can find part 1 here, and part 2 here.

Tom Barbalet of Biota.org once said in a podcast, "The Artificial Life industry doesn't exactly have founding fathers so much as dead beat dads.", mostly due I think out of his frustration with getting the early pioneers of the industry on his podcast.

But that isn't to say they didn't leave a legacy.

The first in a long series of breakthroughs came for me when I met an evolutionary biologist who was also a computer hacker. Adam is a genius of a rare sort, both incredibly insightful and well versed, while also possessing a genuine passion and ability to make rubber meet road and write code. He spent one night, hoarse and unable to speak from a very bad cold, literally whispering passionately in my living room until the wee hours of night about how biology worked like a possessed Mozart composing his dying symphony, and I dutifully made down notes in my head about the scientific processes of evolution, and their applications with genomes and ribosomes and chromosomes and how nature basically accomplished it's miracle.

You see he knew what he was doing: He was Prometheus stealing the secrets of life from mother nature and giving them to the masses in a form they could understand. That knowledge genie had been out of the bottle for a long time... I just never properly understood how it really worked.

Adam sure did though. He had made his own version of some earlier work that was explicitly headed down that path by trying to find emergent properties in evolutionary systems in things he called a "Nanopond", similar to "Avida" or "Tierra".

I studied the code for these a bit, and often found them to be again full of assumptions, and brittleness in the design which made them very hard to change. But when I ran them, something was very obvious: These guys had figured out how to make code behave more like life. Of course just undergoing evolutionary processes towards a static fitness goal still isn't going to produce something that springs forth and declared "I'm REAL!" of it's own violation, because eventually you reach the "best" solution for that fitness function. What I was really impressed with was the way these programs brought a very specific order from a stream of chaos in what clearly was a very novel and effective way.

These programs were designed to solve problems by evolving solutions for them. All you had to do what define for it what it was supposed to accomplish, and it will use an evolutionary process to arrive at the solution.

Someone had beat me to the punch on the Program Understanding Program, and I have to say I was never more excited about an idea for code than when I learned someone else had figured out what had eluded me for so long. Finally my idea could actually get legs and move forward!

And move forward it did. I took my new found knowledge, and I set about applying it to my own passion.

I studied Tierra and found that while there were things that I really liked about it like the evolvable instruction set, it really had a more singular focus of trying to find one specific solution, or one set of code that would always solve the given problem.

I studied Avida-ED but saw that it was just a beginning at what I had envisioned, and really wasn't meant to support more emergent behavior than what could live beyond a simple "petri dish" model.

So I started hacking away in C++, like all those before me had, chasing that elusive idea of creating a living organism by supplying the Pinocchio Function to something so complex that it actually could produce an emergent behavior as complex as life itself.

Coming up in part 4: Two Steps Forward, Two Parts Chaos

Labels: , , , , , , ,

0 Comments:

Post a Comment

Links to this post:

Create a Link

<< Home