Background
We modeled a subset of the swarm as individual bees. Each bee had an interal state (dancing, scouting, etc) as described below
- Each bee is placed randomly on a square region, and does not move while it is with the swarm.
- Each bee has a discrete state which depends on her history. All but a few bees start as non-scouts.
- The few initial scouts are assigned to random nest-sites and return to the swarm at intervals and at random locations.
- A bee can become a scout in two ways:
- A bee becomes a scout randomly, with fixed low probability at each time step, and is assigned to a random nest-site.
- A bee is within range of a dancing scout and with fixed probability becomes a scout. The new scout is assigned to the nest-site being danced for, with no error.
- Once a bee becomes a scout for a given nest-site, she goes through a sequence of events before returning to the non-scout state. Generally, she will dance, rest, re-investigage the site, then dance for a shorter time, rest, and so on until the 'dance time' becomes zero. At that point, she reverts to a non-scout. A bee never changes the nest-site she dances for while she is a scout. Once she becomes a non-scout again, she may be recruited to any nest without bias. Details follow:
- As soon as the bee becomes a scout, she leaves the swarm (to 'examine' the nest-site). She evaluates the quality of the site without error, and her 'dance duration' is set to a value proportional to the site quality. She then returns to the swarm after about 40 minutes.
- Upon return the bee goes to a random position on the swarm and
'dances' for the site. The bee's 'dance time' is decremented and
checked to see if the time is zero.
- If it is zero, the scout reverts to the non-scout state.
- If it is non-zero, the bee dances for the alloted time, then rests for a fixed time.
- In the rest state the bee is completely inactive. When the rest time is done, the bee re-investigates the same nest-site then returns to state (2) described just above.
Programs
The current version is Version14. This code is from Run 1 (R1) as described below. The simulator is a mixed, continuous and discrete-event, simulator. The time resolution in all of the results below was 6 seconds. There is an initial busrt of scouts
Each bee has an internal state as listed:
- Is the bee alive (true/false)
- Is the bee a scout (true/false)
- Is the scout out of the swarm (true/false)
- Is the scout resting (true/false)
- The time of the next event for this bee (e.g. returns to swarm)
- The next event type
- Bee's x-coordinate postion in the 2D swarm (0 to 0.3 meters)
- Bee's y-coordinate postion in the 2D swarm (0 to 0.3 meters)
- Probability of becoming a scout (per minute) spontaneously (no prefered nest)
- Probability of becoming a scout (per minute) when viewing a recruiting dance
- Distance to nearest dancing scout (if any)
- Dance duration (if any) remaining for this scout
- Dance duration decrment per return to swarm. Fixed at 0.5 minute.
- Dance effective range. Fixed at 0.02 meters.
- Rest duration before revisiting a nest site. Fixed at 30 min.
- Destination nest, if any.
- Nest evaluation time. Each bee's value is picked from a distribution given by a gaussian with a mean of 40 min, standard deviation of 5, but with a lower bound of 20 min.
Progam logic at each time step:
- For each bee:
- Test to see if the bee becomes a spontaneous scout
- Test to see if the bee becomes a recurited scout
- Check for an event has timed out for the bee. If so:
- Return to swarm:
- Position the bee randomly
- If the remaining dance duration is zero trigger an end event.
- If the remaing dance duration is greater than zero then dance and decrement remaining dance time. Trigger a rest event.
- Rest:
- Wait for the rest time, then trigger a re-scout event.
- Re-scout a nest:
- Wait for the nest evaluation time, then trigger a return-to-swarm event
- End being a scout:
- Return the scout to the pool of uncommitted bees.
- Return to swarm:
Results
All tables are shown for a case with 4 nests of relative qualities 1.0, 0.75, 0.75, 0.75
.
Each set of parameters was run for 100 complete trials, so for
instance, R15 below represents the average of 100 simulations. The
summary sumulation results for each parameter set are listed below the
tables.
A win is defined as a quorum of 50 bees at the highest quality nest computed with this code:
- The
#wins
column below represents the total number of times the highest quality nest wins. - The
ratio
column represents the number of bees at the highest quality nest divided by the number at the rest of the nests. - The
time
column is the first time that there are a quorum of bees at the highest quality nest. - The
#fails
column is the number of times that no nest reached quorum.
Parameters which were varied were:
- QualExponent: Deterimines power law dependency of dance time on nest quality. Values tested were 1 and 2.
- Sponrate: Production probability of new scouts with random nest choice through out the simulation time. Units are bees/minute/swarm
- Recruitrate: Production probability of new scouts who are within range of a dance, and thus imitate the nest choice of the dancer. Units are bees/minute.
- Initial: Number of initial scouts.
=== Full simulation data is at the linked site. ===
There are a huge number of bees available in a swarm, but around 100 to 200 participating bees seem to give the best nest selection results. There must be some feedback scheme to regulate the number of participating bees. A real decision by a bee to become a participant should depend on local knowledge. A bee could keep track of the total number of dances she observes (without regard to quality or site) and decide to participate if she does not see enough dances. This has not been implemented.