Tuesday, March 31, 2009

Pre Alpha 4 Release Complete

The pre-alpha 4 release ran all night last night so I guess it's ready for prime time. I skipped over releasing the pre-alpha 3 release because it was just architectural changes and didn't include any functional changes over the pre-alpha 2 release.

This release implements the same goat / grass model, with one important improvement - Memes are now subject to point mutation when they are transmitted from Morph to Morph. The mutations are currently confined to the constant number leaf nodes within the Meme process. To illustrate what this means in terms of the model, the "turn" Meme which is initialized with the process [TRN [SUB [RND 360] 180]] - this gets translated to "ask morphs [ right ((random 360) - 180)]" - the numbers 360 and 180 are subject to mutation. The rate of mutation is controled by the mu slider - with .02 meaning the value of the mutation can be at most plus or minus .01 from the current value.

In last night's run, the values in the "turn" meme evolved from 360 and 180 to 44 and 23 after approximately 275,000 ticks. I will post the code on SourceForge later today.

Saturday, March 14, 2009

Pre-Alpha 2 Release is available

I've accomplished most of the bullet points I outlined below, in a simple way, and made the resulting model available on SourceForge. The new model simulates a simple herbivore / plant ecosystem interaction. The objects are simple containers with one attribute - energy. Morphs are capable of consuming objects, which eliminates the object and transfers the objects energy to the morph. Moving costs the morphs energy. When a morphs energy drops to zero it dies. When a morphs energy exceeds an upper threshold it reproduces using asexual fission. The transmission of memes is perfect - from peer to peer and from parent to child.

My next task is to add information loss to the transmission of memes. The challenge with this is ensuring that the resulting meme is always an executable program that will exit. I'm now thinking I may need to refactor some of the architecture to implement this robustness while implementing a general information loss model.

Friday, March 13, 2009

Source Code for Pre-Alpha Phase 1 Available

I have created a SourceForge project from which you can download the source code for the model. It runs inside NetLogo 4.0.4 and although the infrastructure is quite complicated, the model which runs is a simple exponential spread in a fixed population.

Wednesday, March 11, 2009

Morphs can share ideas

The things I've accomplished since my last post:
  • Finished and debugged routines for transmitting and receiving memes
  • I've implemented "morphs here" and "objects here" sensors
  • I've enhanced the mini-language to include primitives for meme transmission and morph detection
  • I simplified the existing default meme to only drive movement
  • I wrote a new meme to transmit all memes to all other morphs on the same patch
  • I changed the initialization code to put the default memes only into one morph
The resulting prototype models a simple exponential spread within a fixed population.

Next steps:
  • Set up a Sourceforge project to make the source code accessible
  • Add object manipulation to the morph capability and the mini-language
  • Write a third meme to do some simple object manipulation
  • Update the prototype to demonstrate object manipulation

Monday, March 9, 2009

Meme project for complex systems class

I'm creating this blog to track my progress on my project for the graduate level complex systems class I'm taking. Hopefully this will make writing the project report easier as I won't have to reconstruct the events later. I'm also hoping to use it to gather in-process feedback from my professor.

The project assignment is to write a simulation in NetLogo. I have chosen to simulate the spread and evolution of cultural beliefs using a meme-like model.

So far I've accomplished the following:
  • Implemented the simple infrastructure of the model including the the three turtle types I'll be using (Morphs - simulating people, Objects - simulating raw materials and artifacts, and Memes - simulating cultural processes / beliefs / rituals / etc.)
  • Implemented a mini-language interpreter. The mini-language will be used to represent the contents of memes and is structured to support genetic programming.
  • I have given Morphs the ability to turn and move forward.
  • I am currently working on giving morphs the ability to transmit and receive memes.
The next steps are:
  • Finish and debug the implementation of meme communication.
  • Implement simple "morphs here" sensors in Morphs to enable them to detect each other when they are on the same patch
  • Enhance the mini-language to include meme communication and morph sensor primitives.
  • Write a new meme to enable sensory and communication use.
  • Modify the prototype setup to run it all.
Outstanding research challenges are:
  • How should I handle the creation of new memes (random, inductive logic, deductive logic, etc.)?
  • What genetic operators to use to modify existing memes? Are crossover and point mutation the correct model for memes, or should I be looking for something that models information entropy (i.e. the "phone game" phenomena)?