## Simulating honey bee swarm decision making.

Tom Seeley and Bruce Land

Introduction

The process by which honey bee swarms decide upon a nest site is an example of concensus decision making without a leader. The survival of the swarm depends on finding a suitable nest site and making sure that all members of the swarm arrive at the same nest site.

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:
1. A bee becomes a scout randomly, with fixed low probability at each time step, and is assigned to a random nest-site.
2. 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:
1. 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.
2. 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.
3. 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:
• 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.

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.

==========================================================
VARY number of bees
QualExponent=2; sponrate=3/60; initial=6;
recruiterate=0.1(200bees);

 run nBees #wins ratio time #fails R15 95 86 10.97 20.58 14 R9 100 89 8.4 19.2 11 R16 110 96 5.01 16.28 4 R14 125 98 3.21 14.3 2 R12 150 93 1.85 10.9 1 R3 200 88 1.21 8.83 0 R13 300 72 1.28 5.05 0 R10 400 79 1.09 4.81 0 R11 800 80 1.16 4.22 0

Click on the highlighted run names to see a summary of all 100 runs. The 100 runs are presented as an animation which you can single-frame or slow down in your media player.

There seems to be a 'sweet spot' with good accuracy and few failures between about 150 and 200 bees. With few bees, the number of wins is limited by the low probability of getting 50 bees at any nest. The critical number is around 100 bees because for any nest, about 1/2 the bees are at the nest, and the other half are resting. With many bees, the number of wins is diluted by the lack of effective competition between sites, so that each site becomes effectively independent. The number of failures decreases monotonically as the number of bees increases because some nest will surely win.

==========================================================
VARY number of bees
QualExponent=1; sponrate=3/60; initial=6;
recruiterate=0.1(200bees);

 run nBees #wins ratio time #fails R17 100 32 5.67 23.44 66 R19 150 72 1.85 15.21 14 R2 200 66 1.16 9.72 0 R18 400 47 0.93 4.57 0

==========================================================
VARY spontaneous rate
QualExponent=1; 200 bees; initial=6;
recruiterate=0.1(200bees);

 run spont #wins ratio time #fails R1 1/60 50 1.31 8.03 0 R2 3/60 66 1.16 9.72 0 R23 7/60 72 1.01 11.43 0

==========================================================
VARY spontaneous rate
QualExponent=2; 200 bees; initial=6;
recruiterate=0.1(200bees);

 run spont #wins ratio time #fails R4 1/60 83 1.52 7.65 0 R3 3/60 88 1.21 8.83 0 R5 5/60 93 1.13 7.97 0 R22 7/60 97 1.07 7.78 0

==========================================================
VARY number of initial scouts
QualExponent=2; 200 bees; spont=3/60;
recruiterate=0.1(200bees);

 run initial #wins ratio time #fails R20 3 86 1.47 7.22 0 R3 6 88 1.21 8.83 0 R21 10 90 1.22 7.58 0

==========================================================

Details:

Quality max changed to 300 seconds.
nBees to 200
initial scouts return at 30 min intervals
Actual SpontP is then number below times 1/200
Stop sim after 30 hours or 100 bees at any nest.

Q1 = qualities 1, .75, .75, .75
Q2 = qualities 1, .8, .6, .4
Q3 - qualities 1, .37, .37, .37

Run SpontP DanceP Qual scout0 nBee qualexp
==========================================================
R1 1/60 0.1 Q1 6 200 1
Data Set:S0.016667D0.1N6
Number of wins: 50 14 15 21 sum:100
Avg Win Ratios: 1.31 1.07 1.21 1.24
Avg Win Times: 8.03 7.53 7.23 7.14
==========================================================
R2 3/60 0.1 Q1 6 200 1
Data Set:S0.05D0.1N6
Number of wins: 66 7 14 13 sum:100
Avg Win Ratios: 1.16 1.10 1.15 0.93
Avg Win Times: 9.72 8.68 6.27 8.16
==========================================================
R3 3/60 0.1 Q1 6 200 2
Data Set:S0.05D0.1N6
Number of wins: 88 4 3 5 sum:100
Avg Win Ratios: 1.21 0.96 1.35 1.00
Avg Win Times: 8.83 7.85 7.04 8.60
==========================================================
R4 1/60 0.1 Q1 6 200 2
ata Set:S0.016667D0.1N6
Number of wins: 83 6 5 6 sum:100
Avg Win Ratios: 1.52 1.52 1.23 1.79
Avg Win Times: 7.65 9.92 7.67 9.05
==========================================================
R5 5/60 0.1 Q1 6 200 2
Data Set:S0.083333D0.1N6
Number of wins: 93 0 4 3 sum:100
Avg Win Ratios: 1.13 NaN 0.96 1.12
Avg Win Times: 7.97 NaN 6.98 6.67
==========================================================
R6 1.5/60 0.2 Q1 6 100 2
Data Set:S0.025D0.2N6
Number of wins: 90 0 0 1 sum:91
Avg Win Ratios: 9.09 NaN NaN 16.67
Avg Win Times: 18.60 NaN NaN 7.11
==========================================================
R7 6/60 0.05 Q1 6 400 2
Data Set:S0.1D0.05N6
Number of wins: 83 5 4 8 sum:100
Avg Win Ratios: 0.98 0.97 0.73 0.66
Avg Win Times: 4.38 4.62 5.09 5.11
==========================================================
R8 12/60 0.025 Q1 6 800 2
Data Set:S0.2D0.025N6
Number of wins: 87 3 4 6 sum:100
Avg Win Ratios: 0.77 0.63 0.57 0.55
Avg Win Times: 3.38 4.19 3.94 3.93
==========================================================
R9 3/60 0.2 Q1 6 100 2 termination to 60 at nest
Data Set:S0.05D0.2N6
Number of wins: 89 0 0 0 sum:89
Avg Win Ratios: 8.40 NaN NaN NaN
Avg Win Times: 19.16 NaN NaN NaN
==========================================================
R10 3/60 0.05 Q1 6 400 2
Data Set:S0.05D0.05N6
Number of wins: 79 6 10 5 sum:100
Avg Win Ratios: 1.09 0.79 0.65 0.90
Avg Win Times: 4.81 6.16 6.16 5.43
==========================================================
R11 3/60 0.025 Q1 6 800 2
Data Set:S0.05D0.025N6
Number of wins: 80 5 8 7 sum:100
Avg Win Ratios: 1.16 0.85 0.76 0.78
Avg Win Times: 4.22 5.35 5.29 4.93
==========================================================
R12 3/60 0.133 Q1 6 150 2
Data Set:S0.05D0.133N6
Number of wins: 93 0 4 2 sum:99
Avg Win Ratios: 1.85 NaN 1.83 1.79
Avg Win Times: 10.90 NaN 7.88 7.38
==========================================================
R13 3/60 0.133 Q1 6 300 2
Data Set:S0.05D0.0667N6
Number of wins: 72 10 7 11 sum:100
Avg Win Ratios: 1.28 0.74 0.81 0.71
Avg Win Times: 5.05 6.80 6.50 6.90
==========================================================
R14 3/60 0.16 Q1 6 125 2
Data Set:S0.05D0.16N6
Number of wins: 98 0 0 0 sum:98
Avg Win Ratios: 3.21 NaN NaN
NAN
Avg Win Times: 14.29 NaN NaN NaN
==========================================================
R15 3/60 0.21 Q1 6 95 2
Data Set:S0.05D0.21N6
Number of wins: 86 0 0 0 sum:86
Avg Win Ratios:10.97 NaN NaN NaN
Avg Win Times: 20.58 NaN NaN NaN
==========================================================
R16 3/60 0.1818 Q1 6 110 2
Data Set:S0.05D0.1818N6
Number of wins: 96 0 0 0 sum:96
Avg Win Ratios: 5.01 NaN NaN NaN
Avg Win Times: 16.28 NaN NaN NaN
==========================================================
R17 3/60 0.2 Q1 6 100 1
Data Set:S0.05D0.2N6
Number of wins: 32 0 0 1 sum:33
Avg Win Ratios: 5.67 NaN NaN 3.33
Avg Win Times: 23.44 NaN NaN 9.11
==========================================================
R18 3/60 0.05 Q1 6 400 1
Data Set:S0.05D0.05N6
Number of wins: 47 14 17 22 sum:100
Avg Win Ratios: 0.93 0.72 0.77 0.96
Avg Win Times: 4.57 5.17 5.02 4.66
==========================================================
R19 3/60 0.133 Q1 6 150 1
Data Set:S0.05D0.133N6
Number of wins: 72 5 4 5 sum:86
Avg Win Ratios: 1.85 1.57 1.56 1.52
Avg Win Times: 15.21 7.67 12.72 7.85
==========================================================
R20 3/60 0.1 Q1 3 200 2
Data Set:S0.05D0.1N3
Number of wins: 86 4 5 5 sum:100
Avg Win Ratios: 1.47 1.05 1.24 1.17
Avg Win Times: 7.22 7.39 7.55 8.33
==========================================================
R21 3/60 0.1 Q1 10 200 2
Data Set:S0.05D0.1N10
Number of wins: 90 4 3 3 sum:100
Avg Win Ratios: 1.22 1.17 0.88 1.13
Avg Win Times: 7.58 6.71 7.82 7.20
==========================================================
R22 7/60 0.1 Q1 6 200 2
Data Set:S0.11667D0.1N6
Number of wins: 97 0 1 2 sum:100
Avg Win Ratios: 1.07 NaN 1.19 0.86
Avg Win Times: 7.78 NaN 6.06 7.08
==========================================================
R23 7/60 0.1 Q1 6 200 1
Data Set:S0.11667D0.1N6
Number of wins: 72 13 9 6 sum:100
Avg Win Ratios: 1.01 0.96 0.99 0.92
Avg Win Times: 11.43 6.55 6.62 6.88

========================================================================
For a swarm of 200 bees, located uniformly on a grid of 0.3x0.3 meters,
and with a dance viewing range of 0.02 meters, there are about
200 x (0.04x0.04)/(0.3x0.3) = 3.6 bees within dance range. For a dance to generate
more than one replacement scout from these bees, there must be a 1/3.6 or greater
chance of a bee becoming a scout.
-----------------------------------
With qualexp=1:
Now a high quality nest (quality=1) generates a dance sequence
5 + 4.5 + 4 + ... + .5 = 27.5 min
while a low quality nest (quality=0.37) generates
4.4 min of dancing.

For the high qulaity site to generate a growing population of scouts
we need (probability/min) = p to be p*27.5 = 1/3.6 or p=0.01

For the low qulaity site to generate a growing population of scouts
we need (probability/min) = p to be p*4.4 = 1/3.6 or p=0.06
-----------------------------------
With qualexp=2:
Now a high quality nest (quality=1) generates a dance sequence
5 + 4.5 + 4 + ... + .5 = 27.5 min
while a low quality nest (quality=0.4) generates
1.1 total mins of dancing.

For the high qulaity site to generate a growing population of scouts
we need (probability/min) = p to be p*27.5 = 1/3.6 or p=0.01.

For the low qulaity site (qual=0.4) to generate a growing population of scouts
we need (probability/min) = p to be p*1.1 = 1/3.6 or p=0.25.

Stop sim after 30 hours or 100 bees at any nest.
100 runs/parameter set

Next steps

Number of participating bees:

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.