Trying to explore some alternate solutions to the AI::Life::World problem, I've started creating a much simpler version called Widge. This is a procedural script with only one AI agent type called a "widge." Widges run around and if they run over a blue light, they gain energy and if they run over a yellow light, they lose energy. They also lose a small amount of energy just moving. If they gain enough energy, they reproduce and possibly introduce a random mutation to their genes.
The intent is to create a small "Widge World" where someone can watch widges evolve until they're better able to find blue lights and avoid yellow lights. I'll possibly build in a tweaking mechanism later. Hopefully, this should allow me to focus efforts on the eyes and brains, the two most problematic areas of the AI. However, I am moving to an upstairs apartment, so I've got about a week of downtime before I can think about serious programming again.
Update: On the off chance that anyone's interested, I can send a really ugly tarball of the current project. It's not organized, but it has the original C code (with makefile), the procedural Perl version and the OO version (complete with memory leak). Shoot me an email at curtis_ovid_poe. That's a Yahoo! email.
In case you haven't seen these books, they seem to be directly related to what you're doing (decentralized systems?) although it's not Perl:
Turtles, Termites, and Traffic Jams: Explorations in Massively Parallel Microworlds (Complex Adaptive Systems) andAnd a couple of sites with info about StarLogo and artificial ants:
StarLogo as well as
This
article and that article.
markymoon