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

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   Evolving Information by XML Element Mutations

[ Lists Home | Date Index | Thread Index ]

Title: Message
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"/>
    <grape-wealth>25</grape-wealth>
    <metabolism>4</metabolism>  
    <vision>6</vision>
</picker>
 
Notes:
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">
    <grape>
        <quantity>4</quantity>
        <capacity>5</capacity>
    </grape>
</lot>
 
Notes:
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:
 
<vineyard>
    <lot ..>...</lot>
    <lot ..>...</lot>
    <picker ...>...</picker>
    <lot ..>...</lot>
    <picker ...>...</picker>
    <picker ...>...</picker>
    ...
</vineyard>
 
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:
 
<vineyard>
    <lot ..>...</lot>
    <lot ..>...</lot>
    <picker ...>...</picker>
    <lot ..>...</lot>
    <fjkele>30fkopcd0</fjkele>
    <picker ...>...</picker>
    <picker ...>...</picker>
    ...
</vineyard>
 
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