Feb 172011

I haven’t posted an update on the Web Critters project since October 16th last year, in large part because I have done precious little development on the code base since then.  My last commit was January 25th, and the previous one was all the way back on November 2nd.  There are two main factors that combined to grind work to a halt:  Christmas season, and an office shuffle at work.  The holidays need no explanation, however the office move is a little more interesting.  Up until late last year I had a single office, and so felt comfortable dabbling with my side project on my lunch breaks; since I’ve moved in with an officemate I’ve had a more difficult time mentally justifying using my lunches on “for fun” code, and instead have felt passively guilted into working straight through the noon hour.  My officemate (and team lead) often works through lunch, and although he wouldn’t say a word if I didn’t follow suit, it feels awkward when I don’t.

Excuses aside, I intend to re-start development on Web Critters in the coming days. I’m too close to completing the generic Complex Adaptive System engine to stop now, and once that is finished it should not be terribly difficult to write the Twitter-based interface and see if my wacky idea actually works as I envision it should.

With that in mind, here are the major chunks of work that I would like to complete in the next month or two.  (Issue list)

Refactor unique identifiers

All species and resources in the system currently use a numeric value to represent themselves uniquely within the system.  Negative numbers are resources, and positive numbers are species.  This has worked fine while the CAS was relatively unsophisticated, however its limitations are starting to show.  The requirements for a new unique identifier are:  (a) Deterministic.  Since identifiers are doled out at random, when the exact same species arises independently in different locations there is currently no way of equating them.  A new identifier must be based on the genome of the species/resource.  (b) Light-weight.  One great thing about using a number for an identifier is that it consumes almost no memory.  Since there are thousands of species floating around at any one time, and millions over the course of a small run, the identifiers must continue to be light weight.  (c) Performant.  Species are compared all the time, and so a good identifier will be comparable to other identifiers in a rapid manner.

Refactor corpses (link)

When agents die they leave behind a corpse that is identical to their living form.  I would like to change this so that there is an algorithmic transformation from a living agent to a corpse.  This will allow me to distinguish scavengers from pure predators in my analysis of populations.   Since I have not encountered a documented CAS that includes a corpse transformation in my research, I will have to do some experimentation to determine what makes the most sense.  Outstanding questions include:  Should the transformation be deterministic? Should corpses decay? Should the genome of the corpse contain exactly the resources from the original agent?

Trade tag and mutual exchange (link)

Holland’s definition of a CAS includes a “Trade” tag (read more about tags here) that allows agents to participate in an action in which they conditionally exchange resources.  To me this feels like an attack interaction where both sides benefit, which doesn’t seem that far off a set of mutual attacks.  (i.e. Agent A can attack Agent B successfully, and Agent B can attack Agent A successfully)  I will have to dabble with this and decide if it feels necessary before fully implementing it.

Reproduction limitations (link)

At present, agents in the Web Critters system can reproduce once they have amassed enough resources to replicate their entire genome while still having enough to survive left over.  The actual type of resources is completely irrelevant to the agents.  In most other CAS systems, agents must amass enough resources to exactly match their genome.   If implemented, this change would almost certainly necessitate a change in how attacks function:  agents would have to steal targeted resources from their victims, and not just randomly ingest resources.

If you enjoyed this post, please consider leaving a comment or subscribing to the RSS feed to have future articles delivered to your feed reader.

Sorry, the comment form is closed at this time.

© 2004-2010 - Systemic Babble is created and maintained by Andrew Anderson. Suffusion theme by Sayontan Sinha