[
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
|