The environment is a common space where the “swarm” evolves through interactions among it’s members. The environment allows to share the ”’same reality”’ for all of them, that is, when a member modifies the ”reality” in some way, the others see the same facts.
This sentence may seem obvious baring in mind certain examples from nature such as bees or ant colonies, but it definitely makes more sense in computer simulations where nature can’t help us and so we must ensure that our artificial environments provide the same unity: an ant, for instance, takes a ”larva” from the ground and it’s no longer available for a another ant with the same intention.
The environment must provide the foundations for communication among swarm members, for instance, the termites use some pheromones that attach to the environment while at the same time an evaporation process slowly removes them. The concentration of these pheromones guides other termites to stack the material for the pillars that continue to grow, while gradually the pillar’s ends approach each other, forming a closed “arc”.
When a sudden change happens in the environment, it doesn’t usually spread instantly throughout the whole swarm, but a signal or event is created that passes locally from one member to another one, forming a wave of information that moves at a certain speed across the swarm, informing members of what happened.
For example flocks of starlings; whenever they see a predator that is coming to attack, they instantly move apart from the predator’s trajectory. By doing this, the flock has moved closer to it’s neighbor, that at the same time is trying to maintain a constant distance from other members thus moving itself in a similar direction. This cycle repeats over and over, causing the whole swarm escape from the predator.
With this simple process, the starlings create a wave that spreads across the swarm, warning the others members that they must move to an specific direction. If the wave’s speed is higher than that of the predator, then it would be rare that a single starling be caught by surprise.
One of the easier methods in Computer Science to get an unified reality is to use a shared memory in the same host, where several processes accessing the same data through an exclusive lock access which guarantees these concurrent processes may not corrupt the information, and prevents them from accessing the same data at the same time.
In case of running the simulation in several remote hosts, another typical solution is to use a data base server that allows modifications to be executed in transactional mode one by one, giving to the whole swarm the same “reality” and the ability to communicate with each to other.
Therefore, without the right environment, the activity of the swarm can not develop, or maybe will not progress as we suppose, for instance, if the evaporation of the pheromones is faster than expected, or two processes in a computer simulation get different values due to small delays in read and write operations. This issues make it impossible for the swam to show us its intelligence, an intelligence based on simple rules which will be discussed in the next Post.