Friday, 12 December 2008

Polyworld versus Framsticks

Yesterday, I added a basic communication system to Polyworld and left it running overnight. This morning I found that it had run out of memory and had a segmentation fault in TSimulation::Interact() . This happened in a code block that was responsible for creating additional critters if the number of critters is less than the maximum number of critters. I suspect that Polyworld is not removing older critters.

Ideally it would be great to get Polyworld to be able to stay within specified resource range.

I have been thinking about whether I made the right choice to invest in Polyworld over Framsticks. I had a look around for some information and I found the following: a review of Polyworld and Yaeger's class information. I wish I had a chance to do that subject!
  • Computational Genetics, Physiology, Metabolism, Neural Systems, Learning, Vision, and Behavior or POLYWORLD a review by Naphtali Budarham

    These are the words that Larry Yaeger wrote in his web site on the PolyWorld experiment, and they give a good general introduction to his article. In the following pages, I will summarize the things I said in class, give some details on Yaeger’s experiment, and say some of my thoughts on it.

  • I486/I586 Artificial Life as an approach to Artificial Intelligence Spring Semester 2009

    Artificial Life is a broad discipline encompassing the origins, modeling, and synthesis of natural and artificial living entities and systems. Artificial Intelligence, as a discipline, tries to model and understand intelligent systems and behavior, typically at the human level. This class will introduce core concepts and technologies employed in Artificial Life systems that can be used to approach the evolution of Artificial Intelligence in computers. Key themes include:

    - bottom-up design and synthesis principles,
    - definitions and measurements of life and intelligence,
    - genetic algorithms,
    - neural networks,
    - the evolution of learning,
    - the emergence of intelligence,
    - computational ecologies, and
    - information theory-based measures of complexity.

    Our path through these materials will lay the theoretical groundwork for an approach to Artificial Intelligence based on the tenets and practices of Artificial Life—an approach which utilizes evolution to start small and work our way up a spectrum of intelligence, from the simplest organisms to the most complex, rather than attempting to model human-level intelligence from the outset.

    Lectures and readings will be based on seminal papers and introductory texts in these fields, drawing from the Artificial Life conference proceedings, and technical papers by Donald Hebb (from which we obtain Hebbian learning), Rumelhart and McClelland (editors of and authors in the original Parallel Distributed Processing books that launched the modern neural network field), Ralph Linsker ("Infomax" theoretical approach to neural network learning), Hinton and Nowland (the "Baldwin effect"), William James ("the greatest American psychologist"), W. Grey Walter, Tom Ray, Karl Sims, Danny Hillis, and others. We will also read and discuss Braitenberg's seductive and influential Vehicles book.
Back to Polyworld or Framsticks. I had a look at Framsticks again and while it had a number of great features, there are a few things missing that are in Polyworld.

First, some useful Framsticks features:
  • It's a 3D world with 3D creatures
  • Framsticks models creatures bodies, has sensors to relay to the brain limb, orientation, touch and angles
  • Framsticks has a network server model
  • Framsticks has a larger community
Some features that Polyworld provides:
  • Each critter has their own view screen to the world
  • There's already an ecosystem present in the simulation
While the Framsticks features are nice, the Polyworld features are critical to my work.


  1. Hi, you should try critterding. I think. The critters in that do have an FOV/retina like in Polyworld and there is a basic food economy with timed inserts. I have some patches against svn that use a secondary fitness function to score genomes for inclusion in a pool that's used to repopulate the world in the case of extinction. But if you're running population sizes that reach equilibrium you don't need them

    Bye ^-^


  2. Hi brilanon,

    Thanks for recommending Critterding. It's good to know that there are other people who find similar features useful such as the retina in Polyworld. I've had a look at Critterding's website and I'll have a play with the program soon.

  3. Framsticks has a "Vector Eye" sensor that outputs a set of edges "seen" by the sensor. This is not the real view of the world, but can be used for simple convex objects.

  4. Hi Anonymous,

    Thanks for letting me know about the "Vector Eye" feature in Framsticks. I had no idea that Framsticks had that feature. I'm looking forward to trying that feature out.

  5. Hi Binh,

    The VEye sensor is not very well documented, but there is a report available on navigation around a 3D object where VEye was used.

    Regarding Framsticks as a 3D simulator, there are many experiments developed where only 2D are used, or even experiments where creatures are points (i.e., no body).

  6. Hi Anonymous,

    I eventually chose Polyworld after I wrote this post. I chose Polyworld because:

    1) it was open source
    2) each entity had a virtual eye
    3) and it had Hebbian neural networks

    Having access to the source code was important to me in order to understand what was going on in the background, to implement the changes I needed, and to have precise control.

    However, Framsticks has a powerful graphics and physics engine, powerful editors, and overall good documentation.

    I've had to integrate a graphics and physics engine into Polyworld and I've had to update the virtual eye code.

    I've invested a fair bit of time into Polyworld and my rule of thumb is that learning a new piece of software usually takes about three months.

    I recommend Framsticks if you're happy with what it already has. Otherwise, I recommend Polyworld if you are prepared to do a fair bit of development work.

    I've also noticed that most experiments use very abstract simulation models for highly specific experiments which I don't find satisfying.

    I want a simulation that has a group of humanoid robots learning to walk, cooperate, and communicate.