Wednesday, May 09, 2007

Implementing groups

In the next post down, I discuss the use of genetic programming to breed ants that forage for food as a colony. That post was inspired by reading David Sloan Wilson's, Evolution for Everyone. (Click here for all my posts about Evolution for Everyone, which I liked a lot.) The primary issue Wilson raises is group selection.

The question of group selection can be seen as subordinate to the question of whether groups exist as an entity. Certainly if groups exist as an entity, then the processes of evolution will inescapably apply to them. Wilson makes a good case that selection and adaptation do apply at the group level. What struck me about much of his writing was how his groups reflected properties of my dynamic entities. (See "Putting Complex Systems to Work".)

The genetic programming examples discussed below are a good illustration of how a dynamic entity can be implemented by lower level elements. Every entity, static or dynamic, is implemented by its components. Static entities are implemented by their components in fixed relationships and at an energy equilibrium; dynamic entities are implemented by their components in dynamic relationships — relationships that depend on an external source of energy to maintain. The GP ant colony is a nice example of a dynamic entity that is implemented by explicit rules of operation which are built into the ants. Because the ants operate according to the rules that are built into them, they implement an ant colony as an entity.

This raises the question: how can one identify the entity that the collection of ants creates? Clearly it is an intuitive entity. One can even subject it to natural selection (as explained below) against similar entities. But if one had to point to it and say, "that is the entity I'm talking about" how would one do it other than the ants that are part of it any time? In the case of the GP experiment, one might associate the entity with the nest and the ants that use it to deliver food. In general, how does one do it? I claim that dynamic entities have more mass (but only by a negligible amount because their components tend to be in motion) than the components taken separately. But that would be a very difficult way to pick an entity out of a background.

So how do we do it? Or better yet, how would we program a computer to do it? A fundamental issue with programming a computer has to do with the input the computer starts with. What is its scale? Assuming the computer has access to elementary particles, then what? How, in fact would it even have access to elementary particles since they are probabilistic waves? So what does it start with? But assuming it could start somewhere (which presumably means that it has some sort of sensing device, which means …) then how would you program it to pick out the entities?

I argue that there are entities. And I'm not attempting to refute that argument. This is more an epistemological question. Even if one starts by assuming that entities exist, how do you discover and identify them?

The answer has to be by recognizing the reduced entropy that characterizes them. Dynamic entities (like static entities) have reduced entropy with respect to their surroundings. If one can recognize that, one can recognize dynamic entities. Human beings, of course, are particularly good at recognizing patterns, i.e., areas of reduced entropy. One might even argue that our very ability to do that is a result of the fact that group entities are as important as they are. Perhaps it is fortunate for us that we are so good at noticing patterns. That seems to be a very powerful intellectual capability in general, even when the patterns are not reflective of group entities.

No comments: