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.
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.
- 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:
All tables are shown for a case with 4 nests of relative qualities