## 2 Co-Operation of Biology-Related Algorithms (COBRA)  
Five biology-inspired optimization methods, to be more specific, Particle Swarm Optimization (PSO) [7], Wolf Pack Search (WPS) [26], the Firefly Algorithm (FFA) [23], the Cuckoo Search Algorithm (CSA) [22] and the Bat Algorithm (BA) [24] were used as basis for the meta-heuristic approach called Co-Operation of Biology-Related Algorithms or COBRA [21]. These algorithms are referred to as \"component algorithms\" of the COBRA approach. It should be noted that the number of component algorithms can be changed (increased or decreased), and it affects the workability of the COBRA meta-heuristic, which was proved in [27].  
All mentioned population-based algorithms have their advantages and disadvantages. So, the possibility of using all of them simultaneously while solving any given optimization problem (namely their advantages) was the reason for the development of a new potentially better cooperative approach. Also experimental results show that it is hard to determine which algorithm should be used for a given problem, thus using a cooperative meta-heuristic means that there is no longer the necessity to choose one of the mentioned biology-inspired algorithms [21].  
The optimization process of the COBRA approach starts with generating one population for each biology-inspired component algorithm, and therefore, with generating five (or six later when the Fish School Search (FSS) [25] algorithm was added to the collective) populations. After that all populations are executed in parallel or in other words are executed simultaneously, cooperating with each other.  
All listed component algorithms are population-based heuristics, and thus, for each of them the population size or number of individuals (potential solutions) should be chosen beforehand, and this number does not change during the optimization process. However, the COBRA approach is a self-tuning meta-heuristic. Thus, first the minimum and maximum numbers of individuals throughout all populations are defined, and then the initial sizes of populations. Then the population size for each component algorithm changes automatically during the optimization process.  
The number of individuals in the population for each component depends on the fitness values of these individuals, namely the population size can increase or decrease during the optimization process. If the overall population fitness value was not improved during a given number of iterations, then the size of each population increased, and vice versa, if the overall population fitness value was constantly improved during a given number of iterations, then the size of each population decreased. Moreover, a population size can increase by accepting individuals removed from other populations in case if its average fitness value is better than the average fitness value of all other populations. Thus, the \"winner algorithm\" can be determined as an algorithm whose population has the best average fitness value at every step.  
The original algorithm COBRA additionally has a migration operator, which allows \"communication\" between the populations in ensemble. To be more specific, \"communication\" was determined in the following way: populations exchange individuals in such a way that a part of the worst individuals of each population is replaced by the best individuals of other populations. Thus, the group performance of all algorithms can be improved.  
The performance of the COBRA meta-heuristic approach was evaluated on a set of various benchmark and real-world problems and the experiments showed that COBRA works successfully and is reliable on different optimization problems [21]. Moreover, the simulations showed that COBRA outperforms its component algorithms when the dimension grows or when complicated problems are solved, and therefore, it should be used instead of them [21].