Feb 222012
 

After some test runs using longterm.c, I’m noticing a distinct lack of replicators.  By chance some programs should be able to move from one ape to another during conversation, but this didn’t appear to be happening.

As an experiment I commented out the inner loop of the braincode program within sim.c, then ran for 600 days worth of simulation time.  As if by magic, a replicating program emerges almost immediately, and within the time span comes to completely dominate the ideological landscape – effectively transforming it into a monoculture.  Here I’m using terms like “ideology” and “ideosphere” just to mean the space of all ideas within a culture, implemented as Turing complete systems.  There may be other more technical philosophical uses of these terms which are unrelated.

It seems that the inner loop is trapping apes within an egocentric cognitive frame, since it’s run far more frequently than the outer loop, which only runs during occasional conversations.  Ideally, to get interesting behavior an intermediate “edge of chaos” like result is desirable, such that apes neither remain trapped in their own world view, nor are completely dominated by a single highly infectious world view.  I’m not sure exactly what the best way to achieve this is at present, but it likely means more hacking on the braincode implementation.

Another thing which I’ve done recently is to remove some of the sensor and actuator braincode instructions.  My thinking here is to try to keep the instruction set as small as possible, which allows the programs to be more efficient and compact within a constrained memory space.  These functions still exist, but are parameterized within the SEN and ACT instructions.  Three SEN and ACT instructions are used to try to balance out the numbers of these instruction types relative to others.

Feb 092012
 

I’ve been using the task management software called taskwarrior for quite a while now.  It’s a sort of souped-up TODO list, and it has not escaped my notice that the accumulated lists of completed or expired tasks are like an externalized version of an episodic memory.

When listening to everyday conversations, watching TV soap operas or reading the news a large fraction of this seems to be derived from episodic memory.  That is it’s lists of things which were done (or not done) at certain times and places and in certain sequences.  Relatively little conversation seems to be focused upon semantic memory – not related to specific personal experiences – but another large constituent in the mix seems to be about intentions.  Here intentions are anticipated or planned egocentric events which may, or may not, occur in the future.

It occurred to me that the task management software is really a system for managing intentions, and that intentions are like the mirror image of episodic memories – they’re episodic memories about the future, or possible futures.  Once an intention has been satisfied to some extent then it turns into a memory of the past.

I’ve tried to implement something similar within Noble Ape, by expanding the episodic memory system to include memories whose timestamps are set in the future.  Episodic memories in Noble Ape are just a list of recent events which occurred, including things like the map location, event type and the names of any protagonists who participated.  Each memory has an affect value assigned to it, which is a sort of emotional weighting, and this diminishes towards zero over time.  New memories with stronger affect can overwrite older ones.  During chat, apes can also exchange memories in the form of anecdotes, such that it’s possible for them to have memories both about themselves and about the deeds of others.  The newly included intentions are just entries within the episodic memory, but with a time set in the future and where the event type is offset by the constant EVENT_INTENTION to indicate that it’s an intention for an event in the future rather than an event in the past.

Intentions are generated by a new braincode instruction called INT.  If this instruction is encountered during program execution then the episodic memory which has the current focus of attention (referenced by attention_episode_index) is used to generate the new intention.  This means that intentions ultimately come from actions which might originally have been unintentional.

Since intentions are implemented as a kind of episodic memory in the future then they can also be transmitted as anecdotes in the same way as memories of the past.  Apes can chat about their possible futures, and possible futures can spread accordingly.  If new intentions are generated from an existing intention (i.e. if attention_episode_index points to an intention) then the time horizon is extended further forward into the future and the ape who is having the intention is set to the self.  The latter aspect is a useful feature, since it means that the intentions of others spread via gossip can become your own intentions, and hence spread in a viral manner.

Intentions may linger around in the ideosphere, getting up to all manner of non-intuitive high jinx within braincode programs, but ultimately they’re of only limited contemplative value unless they’re acted upon.  The function social_intention_update turns vague intentions into more concrete goals or action biases.

To groom, or not to groom?

Currently only two intention types exist – grooming intentions and chatting intentions.  If an ape has an intention to groom, or not to groom, then the learned_preference value for grooming is either incremented or decremented, and this then alters the probability of grooming behavior occurring when another ape is met.  In the case of chatting a similar principle applies, except that the learned_preference value for chatting is used to determine the maximum number of iterations of the braincode program during conversation.  This results in a longer or shorter discussion during which potentially more or less information could be transmitted from one mind to the other.

Another feature worth being aware of is that the contemplation or generation of intentions can occur at any time – including during sleep.  They won’t be acted upon during sleep, of course, but in this way sleep can serve as something other than merely down time.

Feb 082012
 

Many thanks to Bob Mottram for breathing some life into this old blog. With Bob adding so much code to the Noble Ape Simulation in the past couple of years, I often wonder how to track some of these changes.

Back in the Original Manuals (circa 1997), I wrote about a command line version of the Simulation where aspects of the Simulation could be interrogated in real-time. In fact, where every aspect of the Simulation could be tracked.

Although the Simulation had some components, it was nothing like as complicated as the current development version of Noble Ape. It occurred to me today that I need to write a command line version of the Simulation that actually allows you to track various aspects of the Simulation in real time.

The public face of the underlying elements in the Simulation has always been the file format. I am hoping to use the file format as the data tracking core of the command line version with some additions to allow stepping through the Simulation and potentially the ability to add wait conditions for certain variables to reach particular values.

I probably should be programming rather than writing a blog entry but I wanted to put the idea out there.

Thanks again to Bob for all the work he is doing with Noble Ape. More on some of the work I am coin with Noble Ape shortly.