The Bees Algorithm is inspired by the foraging behavior of honey bees. Honey bees collect nectar from vast areas around their hive (more than 10 kilometers). Bee Colonies have been observed to send bees to collect nectar from flower patches relative to the amount of food available at each patch. Bees communicate with each other at the hive via a waggle dance that informs other bees in the hive as to the direction, distance, and quality rating of food sources.
Honey bees collect nectar from flower patches as a food source for the hive. The hive sends out scout’s that locate patches of flowers, who then return to the hive and inform other bees about the fitness and location of a food source via a waggle dance. The scout returns to the flower patch with follower bees. A small number of scouts continue to search for new patches, while bees returning from flower patches continue to communicate the quality of the patch.
The information processing objective of the algorithm is to locate and explore good sites within a problem search space. Scouts are sent out to randomly sample the problem space and locate good sites. The good sites are exploited via the application of a local search, where a small number of good sites are explored more than the others. Good sites are continually exploited, although many scouts are sent out each iteration always in search of additional good sites.
The following algorithm provides a pseudocode listing of the Bees Algorithm for minimizing a cost function.
The Bees Algorithm was developed to be used with continuous and combinatorial function optimization problems. The Patchsize variable is used as the neighborhood size. For example, in a continuous function optimization problem, each dimension of a site would be sampled as x_i more or less than (rand()*Patchsize). The Patchsize variable is decreased each iteration, typically by a constant amount (such as 0,95). The number of elite sites (EliteSites_num) must be < the number of sites (Sites_num), and the number of elite bees (EliteBees_num) is traditionally < the number of other bees (OtherBees_num).