I have made significant process on the Web Critters project over the past couple of weeks and am rapidly approaching a state in which I will be able to test my generic complex adaptive system (CAS) engine within the context of a flat grid.  All of John Holland’s level two ECHO interactions are in place and tested, however the main generation logic remains to be completed.  I also need to craft some sort of GUI to visualize the simulation, as well as inject some code to track the types of interactions that take place between the agents and environment for analysis purposes.

The latest pieces that I have completed are “conditional exchange” and the reproductive algorithms.

Conditional Exchange

Conditional exchange is the ability of agents to recognize qualities about their peers and the environment by providing a mechanism for initiating an interaction, or aborting one prematurely.  Exchange is modeled as another tag (in addition to Offense and Defense), which enhances the basic agent genome.

Level two CAS agents – click to enlarge

Prior to an interaction between two agents taking place (an attack, a resource transfer, reproduction, etc.), the exchange tag of each agent is compared with the offense tag of its potential dance partner.  For the sake of this comparison, both participating tags are assumed to terminate with an infinite number of wildcard resource; a match is said to occur if the resources in the two tags are equal.  (See example, below.)  If the exchange tag of each agent matches the offense tag of the other agent (i.e. a two-way match) then an interaction occurs.  If neither set of tags match then the interaction is aborted.  If there is one match, then an interaction will occur with a set probability (50% in the current simulation).

Example exchange interaction – click to enlarge

The conditional exchange mechanic allows the agents within the Web Critters project to have some degree of control over the types of agents that they react with.  For example, a well-evolved exchange tag could allows an agent that is treated as prey by another agent to potentially flee the harmful attack interaction before it occurs.  Similarly, the exchange tag could be used to express breeding preference between two agents, which could lead towards speciation within the simulation.  Likewise, symbiotic resource transfer interactions are facilitated by the conditional exchange tag.   Finally, mimicry becomes possible with the exchange tag as a meek agent could be capable of projecting the appearance of a fierce predator, or an undesirable resource.


Reproduction within the Web Critters Project, like any ECHO-based system (and genetic algorithms), is primarily accomplished through crossover interactions.

In a basic (single point) crossover interaction the participating agents each contribute a copy of all of the resources (tags) that they are comprised of, and two “child” agents are produced.  The genome of these child agents are determined by picking an arbitrary “crossover” point within the genome of the parent agents, and splitting the resources along that boundary line.  Thus, each child will contain a subset of each parent’s resources, and the two will be structured somewhat like mirror images of each other.

Single point crossover – click to enlarge

A more complex variant of the crossover interaction will also be present within the Web Critters simulation: multipoint crossover.   In multipoint crossover the tags of the two parents are iterated; for each tag in their genomes there is a percent chance that a crossover occurs, and each of these crossovers applies only to that tag.  Multipoint crossover more closely mirrors reality, and is an excellent tool for diversifying the agents within the simulation.

Prior to inserting the new children agents generated from crossover interactions into the simulation, there is the possibility that point mutation will take place.  Point mutation is an important method of inserting novel genetic material into a complex adaptive system; without it there is a risk that stagnation could take hold.  Point mutation introduces a miniscule chance that, for each tag in a child agent, a resource will be added, deleted, or modified at random.

Coming soon

When I next write about the Web Critters project I hope to report on the results of a trial run in a grid environment.  I suspect that I will need at least a couple of weeks to nail down a solid generational loop that can be paused, serialized, and started as required.

Leave a Reply



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