OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help



   RE: [xml-dev] Evolving Information by XML Element Mutations

[ Lists Home | Date Index | Thread Index ]

Title: Message
Hi Folks,
Many thanks for the excellent replies!  I am in the process of digesting all your suggestions.
Here are some immediate responses:
Jeff Rafter asked about the goal of this thread.  Good question Jeff!  I have both a short-term goal and a long-term goal:
Short-term goal: understand and get practical experience with growing systems from the bottom-up.  In fact, I am attempting to transform my whole mental process away from approaching problems exclusively using a top-down approach, to a bottom-up approach.  That is, change my programming and problem-solving approach from top-down to bottom-up.
Long-term goal: apply the principles of bottom-up systems (i.e., Complex Systems) to large-scale information systems. 
Tom Passin suggested that I look at genetic algorithms.  Good suggestion Tom!  Although I am by no means an expert at genetic algorithms, I have some knowledge of the topic.  Unlike genetic algorithms, where a fitness function is determined a priori, I am seeking ways that the Pickers can improve their fitness on their own.  In fact, in my Vineyard System they already do just that - Pickers with low metabolisms and high vision endure, Pickers with high metabolisms and low vision die away.
After sending out my message yesterday, some other thoughts occurred to me:
Here are some mutations that would enhance a Picker's longevity:
1. Enhanced vision: each Picker is born with a limited vision, between 1 to 6.  If a mutation were to occur in which a Picker's vision is enhanced then that would give the Picker an advantage over other Pickers, since he is better able to see lots with large quantities of ripe grapes.
2. Enhanced movement: currently each Picker's movement is restricted to - left, right, up, down.  If a mutation were to occur in which a Picker could move diagonally then that would also give the Picker an advantage.
Perhaps someone with a biology background could answer my question.  Is it true that in Nature the genes already provide the "code" that would be used in a mutation?  That is, if we think of a gene as "code", then when a mutation occurs that untapped code gets activated.  Is that the way mutations work in Nature?
If that is the case, then the analogous process in the Vineyard System would be to put into my stylesheet a bunch of template rules, which ordinarily aren't used.  It's only when a mutation occurs do these template rules start to get used.  What are your thoughts?  What kind of mutation would cause a template rule to suddenly kick in?  /Roger
-----Original Message-----
From: Roger L. Costello [mailto:costello@mitre.org]
Sent: Saturday, May 22, 2004 6:56 PM
To: xml-dev@lists.xml.org
Subject: [xml-dev] Evolving Information by XML Element Mutations

Hi Folks,
I am interested in hearing your thoughts on evolving information by mutating XML elements.
First, some relevant (and interesting) background information from a book I am reading [1].
"Where does diversity come from?  In 1983, microbiologist Julian Adams discovered a clue when he brewed up a soup of cloned E. coli bacteria.  He purified the broth until he had a perfectly homogeneous pool of identical creatures.  He put this soup of clones into a specially constructed chemostat that provided a uniform environment for them - every E. coli bug had the same temperature and nutrient bath.  Then he let the soup of identical bugs replicate and ferment.  At the end of 400 generations, the E. coli bacteria had bred new strains of itself with slightly different genes.  Out of a starting point in a constant featureless environment, life spontaneously diversified."
"A surprised Adams dissected the genes of the variants (they weren't new species) to find out what happened.  One of the original bugs had undergone a mutation that caused it to excrete acetate, an organic chemical.  A second bug experienced a mutation that allowed it to make use of the acetate excreted from the first.  Suddenly a symbiotic codependence of acetate maker and acetate eater had emerged from the uniformity, and the pool diverged into an ecology."
Cool, aye?
Now let me relate this to XML.  I have created an XSLT stylesheet which processes Pickers on a Vineyard.  Each Picker makes a decision on where to move based purely upon local information - a Picker will move to the nearest lot containing the maximum grapes.  After a Picker moves to a lot it eats some of the grapes on the lot, and stores the remainder.  Each Picker operates independently, using local information.  My XSLT stylesheet simply provides an implementation to carry out these local decisions.  The state of this "Vineyard System" is captured in an XML document. 
I run my stylesheet over and over (creating hundreds of generations of the Vineyard System).  I have a separate stylesheet which pictorially displays the state of the Vineyard (i.e., pictorially displays the XML document).  Watching the behavior of the Pickers is fascinating!
I'd like to take the next step.  I would like to introduce small mutations in the Vineyard System.  Currently my Vineyard System is comprised of a bunch of "cloned" Pickers, i.e., the Vineyard System is a "perfectly homogeneous pool of identical creatures". 
Here is an example of a Picker:
<picker id="203">
    <location tract-ref="34" lot-ref="9"/>
1. metabolism = the number of units of grapes that the Picker must eat each step of the system, to maintain bodily health.
2. vision = the number of lots that the Picker can see.  Example, a vision of 6 means that the Picker can see grapes that are 6 lots distant, left, right, up, or down.
3. grape-wealth = the number of units of grapes that the Picker has stored, after meeting his metabolic requirements.
Here is an example of a lot:
<lot tract-num"34" lot-num="9">
1. capacity = the maximum amount of grapes that the lot can hold.
2, quantity = the number of units of ripe grapes currently on the lot.
The Vineyard is simply a bunch of these lots and Pickers:
    <lot ..>...</lot>
    <lot ..>...</lot>
    <picker ...>...</picker>
    <lot ..>...</lot>
    <picker ...>...</picker>
    <picker ...>...</picker>
With each step of the Vineyard System (one run of the stylesheet) this Vineyard.xml document changes.
Now that you've seen the way that I store the state of the Vineyard System (Vineyard.xml), and I've given you some intuition on how my stylesheet operates, do you have suggestions on how to introduce mutations in the Vineyard System?  I can imagine mutations occurring by means of the stylesheet periodically generating random, new elements with random data.  For example:
    <lot ..>...</lot>
    <lot ..>...</lot>
    <picker ...>...</picker>
    <lot ..>...</lot>
    <picker ...>...</picker>
    <picker ...>...</picker>
We see the Vineyard System has mutated to include a new element, <fjkele>, which has new data, 30fkopcd0.  What kind of mutation would be required so that Pickers can start using this new element and data?  Does the stylesheet need to undergo a mutation?  This seems very complicated (especially trying to mutate a stylesheet).  There must be a simpler way to introduce mutations.  What are your thoughts? 
Oddly enough, this book that I am reading is helping me to appreciate the importance of errors!  Here's another interesting paragraph from the book:
"Error keeps the glue of coevolutionary relationships from binding too tightly into runaway spiral deaths, and therefore error keeps a coevolutionary system afloat and moving forward.  Honor thy errors."
I think that this topic is incredibly fascinating.  Hopefully some of you will share my excitement.  /Roger
[1] Out of Control - The New Biology of Machines, Social Systems, and the Economic World by Kevin Kelly


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS