# Parallelization of the Honeybee Search Algorithm for Object Tracking
## 2 Materials And Methods
### The Honeybee Search Algorithm  
The following section provides more details of HSA used as the basis for this work. The algorithm was initially proposed by [PERSON] and [PERSON] [14; 15; 16] defined as a meta-heuristic that combines Evolutionary Algorithms and Swarm Intelligence with individuals that emulate the behavior of foraging honeybees. As displayed in Algorithm 1, there are three main phases: exploration, recruitment, and harvest. The exploration phase consists of sending search agents called explorers to random points of a specific multidimensional space; these points or possible solutions are called food sources. We define the richness or attractiveness of the food sources through a function called fitness function. The next phase, recruitment, is where the explorers return to the hive and try to convince other honeybees to follow them to exploit the food source they have found. In the last phase, harvest, a massive search covers the space where the surroundings of the best food sources receive considerable greater attention. An evolutionary algorithm similar to Evolution Strategies \((\mu+\lambda)\) is at the core of in the harvest and exploration phases; mutation and crossover are used as the leading evolutionary operators [29]. The exploration stage (Algorithm 2) is actually a modified Evolution Strategy (ES) of the type \(\mu+\lambda\). These evolutionary algorithms serve as a simulation of the natural process in which the honeybees perform asynchronous exploration of the space in search of the food source. The exploration stage starts creating a random population \(\mu_{e}\) of multidimensional points called explorers, which are then transformed into a new population \(\lambda_{e}\) using the mutation, crossover, and random steps. The best individuals are selected using a fitness value as criteria, obtained using a fitness function. The importance of mutation commonly distinguishes this kind of Evolutionary Algorithm as the main source of change between generations (instead of crossover). In this case, we follow the approach proposed by [PERSON] and [PERSON] [30], with some changes in operators used to evolve the population. \(\lambda_{e}\) sons are generated by three different methods: \(\alpha_{e}\) sons are generated by Polynomial Mutation [29], \(\beta_{e}\) sons are generated by crossover using Simulated Binary Crossover [29] and \(\gamma_{e}\) sons are generated randomly. It should be noted that \(\alpha_{e}+\beta_{e}+\gamma_{e}=\lambda_{e}\). Another important difference between the common ES and the one used in this algorithm is that a sharing operator [31] is used to penalize individuals that concentrate in a small space by reducing the individual's fitness value. The algorithm repeats this stage until a given number of iterations or generations. The recruiting phase is easily understood: we divide the total number \(\lambda\) of forager agents into groups. The proportional size \(p_{i}\) of those groups is relative to the fitness value \((fit_{i})\) of each of the individuals that were selected from the exploration phase, as seen in Equation (1). Not all explorersmay have assigned foragers to harvest their location; these might not have found a food source that is good enough. \[p_{i}=\frac{fit_{i}}{\sum_{j=1}^{\mu_{e}}fit_{j}} \tag{1}\]  
\[r_{i}=p_{i}\times\mu_{h} \tag{2}\]  
The harvest phase (Algorithm 3) is also a \((\mu+\lambda)\)-ES where the offspring is generated in the exact same way as in the exploration phase (\(\lambda_{h}=\alpha_{h}+\beta_{h}+\gamma_{h}\)). The differences are that, instead of beginning with random points, the starting points are the results from the exploration phase; and the number of generations and individuals \((\mu_{h},\lambda_{h})\) may change. This phase means the algorithm performs an ES search for every good food source found during exploration. We compute the number of foragers assigned to each explorer trough the factor \(r_{i}\), shown in Equation (2), where \(\mu_{h}\) is the total size of the foragers' population.