Bees Life Algorithm for Job Scheduling in Cloud Computing Salim Bitam Computer science department Mohamed Khider University of Biskra Po. Box 145 Biskra, Algeria [email protected] Infrastructure-as-a-Service (IaaS) refers to where the application is carried out via useful functions and services provided in the cloud. Between SaaS and IaaS, there are cloud platform services known as Platform-as-a-Service (PaaS) deliver operating system, programming language and solution stack. It aims to improve the applications deployment cost and reduce its complexity. It can be seen that the cloud resource use can be simplified and efficiency operated by the scheduled services use in an optimal manner in the interest of the endusers. Abstract—Cloud computing is known as digital service delivery over the Internet by several applications which are carried out by computer systems in distributed datacenters. It supplies a high performance computing based on protocols which allow shared computation and storage over long distances. In this paper, we present a new Bee Swarm optimization algorithm called Bees Life Algorithm (BLA) applied to efficiently schedule computation jobs among processing resources onto the cloud datacenters. It is considered as NP-Complete problem and it aims at spreading the workloads among the processing resources in an optimal fashion to reduce the total execution time of jobs and then, to improve the effectiveness of the whole cloud computing services. BLA has been inspired by bees’ life in nature represented in their most important behaviors which are reproduction and food source searching. In order to evaluate the effectiveness and the performance of this proposal, a set of experimental tests has been conducted. After comparison with genetic algorithm (GA) as conventional algorithm in this area, the reached results showed that BLA outperforms GA in terms of execution time (makespan) with the least complexity. For example, Amazon Elastic Compute Cloud (EC2) is an IaaS cloud, and is the most well known cloud. Through the use of virtual machines EC2, clients create as many (virtual) machines they require and then host all their required services after an optimized scheduling within the machines. EC2 clients are charged per CPU hour per virtual machine. It is even possible to create a cluster within EC2 by requesting EC2 to create multiple instances of a base virtual machine and then installing the required cluster software into each machine [4]. Consequently, it is required to apply a special approach that guarantees the distribution of the workload across thousands datacenters to serve tens of thousands of end-user queries per second; it is the job scheduling approach. In other words, we consider the problem of load balancing that has the objective of finding an allocation of jobs to datacenters that yields an equal or approximately equal expected response time for all the jobs. In the cloud, the commodity servers are used to perform the job scheduling in order to provide new opportunities and economies of scale [5]. Keywords- cloud computing; job scheduling; bees life algorithm; genetic algorithm; I. INTRODUCTION The cloud computing is a recent field in the computational intelligence techniques which aims at surmounting the computational complexity and provides dynamically services using very large scalable and virtualized resources over the Internet. It is defined as a distributed system containing a collection of computing and communication resources located in distributed datacenters which are shared by several endusers. There are two kinds of the cloud; the former is the public cloud in which services may be sold to anyone on the Internet. Here, Amazon Elastic Compute Cloud (EC2) [1], Google App Engine [2] are large public cloud providers. The second type of the cloud is the private cloud. It is a proprietary network or a datacenter that supplies hosted services to a limited number of clients (end-users). Cloud computing allows users to run applications remotely including information technology services called Software-as-a-Service (SaaS) [3]. Besides, © ICCIT 2012 To take up this challenge, we propose in this paper an efficient algorithm called Bees Life Algorithm (BLA) inspired by the bees’ colony life. It aims at an optimal job scheduling by assigning end-user tasks to the relevant datacenters in an optimal way. The remainder of the paper is organized as follows: the next section gives the state of the art of the cloud job scheduling as well as the problem statement. Section 3 gives detailed description of the proposed algorithm. In order to evaluate our proposal, an implementation by C++ 186 processing time for parallelized tasks is the use of an appropriate load balancer to distribute and assign tasks to agents with less workload. programming language has been realized, followed by the experimental results, comparisons and discussions. They are included in section 4. Finally, we conclude the paper and we list some future researches. II. [11] described Ursa system which scales to a large number of storage nodes and objects and aims to minimize latency and bandwidth costs during system reconfiguration. This proposal deals with an optimization problem that selects a subset of objects from hot-spot servers and performs topology-aware migration to minimize reconfiguration costs. The evaluation study achieved cost-effective load balancing while scaling to large systems and is time-responsive in computing placement decisions. RELATED WORK A. Job scheduling in cloud computing: A State of the art In the last years, the job scheduling problem in the cloud computing has been studied in few research activities because of the novelty of this research discipline however; we can mention the following approaches. As related work, we mention the work proposed in [6] which developed a load balancing framework for high-performance clustered storage systems. It provides a general method for reconfiguring a system facing dynamic workload changes. It simultaneously balances load and minimizes the cost of reconfiguration. The effectiveness of this framework is demonstrated by balancing the workload on a NetApp Data ONTAP GX system, a commercial scale-out clustered NFS server implementation. As our inspiration idea is the bees’ life in nature, we can mention some works in this context. In [12] a population-based metaheuristic inspired by the natural foraging behavior of honey bees called Bees Algorithm. It starts with a number of scout bees being placed randomly in the search space. The best sites visited in point of view fitness are chosen as selected bees which will be foraged their close sites to carry out a neighborhood search. [7] investigated the design of a power-aware application placement controller (called pMapper) to ensure a workload placement on heterogeneous virtualized server clusters. It takes into account the cost-aware application placement problem as well as minimizing power subject to a fixed performance requirement. Authors established the superiority of their proposal under most settings over other power unaware algorithms as well as power aware algorithms both theoretically and experimentally. Another algorithm based on the reproduction behavior principle in the bee colony has been proposed in [13]. It is called marriage in honey bees optimization algorithm. It starts with initializing the queen’s genotype at random and then a heuristic is applied to improve the queen’s genotype, therefore preserving the assumption that a queen is usually a good bee. Next, a set of mating–flights is undertaken relatively to the queen’s energy and speed. The queen then moves between different states (solutions) in the space and mates with the encountered drones according to probability criterion. After laying, the queen is replaced with the fittest brood and so on. In [8], authors explored a novel approach (called Rhizoma) similar to P2P systems in which the cloud application to be managed should expresses its resource requirements to the runtime as a constrained optimization problem. Then, Rhizoma fuses multiple real-time sources of resource availability data, from which it decides to acquire or release resources. Rhizoma results showed its performance. Nevertheless, this approach can be enhanced to run across multiple clusters and commercial utility computing providers. B. Problem statement and notations Job Scheduling aims at assigning jobs to datacenters in the cloud so that the execution time (makespan) of the overall tasks of jobs is minimized. This problem can be formulated as follows. We denote by: Authors of [9] proposed to use statistical models to predict resource requirements for Cloud computing applications. Such a prediction proposal can help system design to reach scalability, job scheduling, resource allocation, and workload management. Also, they proposed an initial design of a workload generator in order to evaluate alternative configurations without the overhead of reproducing a real workload. They argued that an effective prediction model is a prerequisite for a good workload generator. Jobs = {J1, J2,..., Ji,…, Jn}, a set of ‘n’ jobs to be scheduled. Moreover, we consider for each job ‘i’: JobiTasks = {JTaski1, JTaski2,..., JTaskim}, as a set of ‘m’ task partitions of Jobi disseminated among ‘m’ cloud datacenters (DCs) in order to be executed. Consequently, each cloud datacenter can carries out a disjoint subset of the decomposed jobs set. For its assigned jobs, DCj ensures the execution of their tasks as follows: The purpose of [10] is to propose an approach for the storage and analysis of very-large images on the cloud. This service has been implemented using multiple distributed and collaborative agents. For this purpose, a region-oriented data structure is utilized, which allows storing and describing image regions as jobs to be carried out. As basic idea to decrease DCjTasks = {JTaskaj, JTaskbj,..., JTaskrj} The union of these overall disjoint subsets gives the whole set of jobs. For example, DCj carries out: DCjTasks = {JTask3j, JTask6j,..., JTask9j} which are tasks of jobs J3, J6 …, and J9 respectively. 187 following bees represent the drones and the remaining bees are the workers. Consequently, the sum of the different bee individuals (1, D and W) equal to the population size (N). ‘D’ and ‘W’ are considered as a two user-defined parameters. Each cycle of a bee population life consists of two bee behaviors: reproduction and food foraging respectively. In reproduction behavior, the queen starts mating in the space by mating-flight with the drones using crossover and mutation operators. Next, queen starts breeding ‘N’ broods in step 4. Then, the evaluation of the brood fitness is performed (steps 5). If the fittest brood is fitter than the queen, it will be considered as the new queen for the next population. Moreover, ‘D’ best bee individuals are chosen among the ‘D’ fittest following broods and the drones of the current population to form the drones of the next population. Therefore, the total execution time of all job tasks (‘r’ tasks) assigned to DCj would be: Makespan(DCjTasks) = Max (JTaskkj.StartTime + JTaskkj.ExeTime) Where JTaskkj.StartTime is the time when job task ‘k’ JTaskkj starts executing on DCi and JTaskkj.ExeTime is the execution time of JTaskkj at DCj. Thus, the job scheduling problem in the cloud computing could be defined as searching of a set: DCTasks = {DC1Tasks, DC2Tasks,…, DCmTasks} and: DCjTasks = {JTaskaj, JTaskbj, ..., JTaskrj} with 0 < r ≤ n which reduces: Makespan(DCjTasks) After that, ‘W’ best bee individuals are chosen among the ‘W’ fittest remaining broods and the workers of the current population in order to ensure the food foraging (steps 6 to 8). In step 9, the ‘W’ workers search food source in ‘W’ regions of flowers. We consider that each worker represents one region and there are other bees for each region recruited and employed to search the best food source among the different food sources in the region (step 10). The recruited bees represent neighbor solutions in the search space used to ensure neighborhood search. BLA uses more recruited bees for the ‘B’ best regions among ‘W’ regions. ‘B’ is user-defined parameter. For each region in step 11, only the bee with the highest fitness will be selected to form the next bee population. The evaluation of the new population fitness is executed in step 12. If the stopping criterion is not satisfied, a new bees’ life cycle is performed, and then we rerun the third step and so on. In order to evaluate the quality of the requested solution (DCTasks), a fitness function is defined as follows (used to calculate the above makespan): Fitness(DCTasks) = Σ (Fitness(JTaskij, DCj)) where (1≤ j ≤m) and Fitness(JTaskij, DCj) = JTaskij.TimeToExe where, JTaskij.TimeToExe is the execution time of task of job ‘i’ needs to run in DCj. III. BEES LIFE ALGORITHM In this section, our proposal is presented. First, the life of bees in nature is overviewed as an inspiration source of this algorithm. It will be followed by its detailed description. A. Bees in nature As a social and domestic insect, the bee is native to Europe and Africa. The bees feed on nectar as a source of energy in their lives and use pollen as a source of protein in the rearing larvae. The bee colony contains generally, a single breeding female called Queen, a few thousands of males known as the Drones, a several thousands of sterile females called Workers, and many young bee larvae called Broods. 1. Initialize population (N bees) at random 2. Evaluate fitness of population (fittest bee is the queen, D fittest following bees are drones, W fittest remaining bees are workers) 3. While stopping criteria are not satisfied (Forming new population) /* reproduction behavior */ 4. Generate N broods by crossover and mutation 5. Evaluate fitness of broods 6. If the fittest brood is fitter than the queen then replace the queen for the next generation 7. Choose D best bees among D fittest following broods and drones of current population (Forming next generation drones) 8. Choose W best bees among W fittest remaining broods and workers of current population (to ensure food foraging) /* food foraging behavior */ 9. Search of food source in W regions by W workers 10. Recruit bees for each region for neighborhood search (more bees (FBest) for the best B regions and (FOther) for remaining regions) 11. Select the fittest bee from each region The bees share a communication language of extreme precision, based on two kinds of dances: the round dance when food is very close. They are carried out when bees search food. The bees’ reproduction is guaranteed by the queen. It will mate with several males in full flight, until her spermatheca is full. The unfertilized egg will give rise to a drone, while, the fertilized egg gives rise to worker or queen depending on food quality [14]. B. Bees Life Algorithm description Bees Life Algorithm presented in figure 1 and figure 2, starts with bee population initialization step which contains N bees (individuals) chosen randomly in the search space. The population fitness is evaluated in the second step. A bee population contains ‘1’ queen, ‘D’ drones and ‘W’ workers in which the fittest bee represents the queen, the ‘D’ fittest 188 To evaluate each individual, the above fitness function is applied. For this step, each task is characterized by its execution time (JTaskij.TimeToExe). 12. Evaluate fitness of population (fittest bee is the queen, D fittest following bees are drones, W fittest remaining bees are workers) 13. End while We choose to apply a dynamic stopping criterion. The BLA iterations are carried out and stopped only when the fitness does not change during ‘NS’. It is the stagnation state. The number ‘NS’ is a user parameter. Note that this process is limited by an iteration maximum number ‘ItMax’. Figure 1. Bees Life Algorithm pseudo-code Encoding Population initialization D. Optimization operators of BLA Evaluation fitness Yes Stopping criterion To ensure the diversity in the generation of populations, two genetic operators are applied in the reproduction phase: crossover and mutation. Nevertheless, in the foraging phase, we define a greedy approach to ensure a neighborhood search in order to optimize the found individual among its neighbors. In the following sections, these operators are illustrated. Output No Reproduction 1) Crossover Selection (Drones) It is a binary operator in which the queen mates with one drone randomly chosen. This process is repeated until reaching ‘N’ individuals with crossover probability of ‘Pc’. In this paper, we applied two-point crossover as shown in figure 3. Parents are splitting at these two points chosen randomly to create children after exchanging the extremities with correction if children do not belongs to the search space. Crossover Mutation Food foraging Selection (Workers) Before crossover: Parents Foragers’ recruitment Pi={<JTaskai, JTaskbi, JTaskci, JTaskdi, JTaskei,...,JTaskri>} Evaluation fitness Pj={<JTaskAj,JTaskBj, JTaskCj,JTaskDj, JTaskEj,...,JTaskRj>} After crossover: Children Figure 2. Flowchart for the BLA Pi={<JTaskai, JTaskBi, JTaskCi, JTaskDi, JTaskei,...,JTaskri>} C. Individual representation, evaluation and stopping criterion The encoding system used in this work to represent the individuals is the list of strings as dynamic data structure. Each population contains ‘N’ individuals (solutions) where each one is represented by a set of datacenter. Each datacenter carried out a set of job tasks as follows: Pj={<JTaskAj,JTaskbj, JTaskcj, JTaskdj, JTaskEj,...,JTaskRj>} Figure 3. 2-point crossover operator 2) Mutation It is a unitary operator in which the child has the chance to be mutated according to the mutation probability of ‘Pm’. We propose the mutation operator in which a random selected task will be chosen and replaced by another random selected task in the same datacenter as shown in figure 4 and so on for the other datacenters. If the new individual do not belongs to the search space, a correction process is carried out. DCTasks = {DC1Tasks, DC2Tasks,…, DCmTasks} : set of datacenters. Each datacenter contains a set of affected job tasks as follows: Child before mutation: DCjTasks = {JTaskaj, JTaskbj, ..., JTaskrj} Ci={<JTaskai, JTaskbi, JTaskci, JTaskdi, JTaskei,...,JTaskri>} The BLA initialization aims at the generation of the first population in which ‘N’ individuals are randomly selected. For example, the following individuals are selected: Child after mutation: Ci={<JTaskai, JTaskXi, JTaskci, JTaskdi, JTaskei,...,JTaskri>} DCTasks={DC1Tasks,DC2Tasks,…,DCmTasks} Figure 4. Mutation operator ={<JTaska1,JTaskb1,...,JTaskr1>,<JTaska’2,JTaskb’2,...,JTaskr’2 >,…,<JTaska”m,JTaskb”m,...,JTaskr”m>} 189 3) Greedy local search approach IV. In the foraging part of BLA, we propose to use a greedy approach as local search process in order to reach the best individual in the neighborhood from the original individual. In this approach, one datacenter task is randomly selected to be permitted with another task in the nearest datacenter as shown in figure 5. EXPERIMENTAL STUDY A. Experimental settings In order to evaluate the performance and the effectiveness of BLA to schedule tasks between datacenters in the cloud, we propose a set of tests carried out virtual cloud that contains 20 datacenters. We assume that there are 5 jobs to be executed by the cloud datacenters after scheduling of their parts (Tasks). Original individual: Each job can be divided in tasks relevant to the existent datacenters. Each task is defined by its identifier and the execution time. To deal with BLA, the user parameters are chosen as follows: the population size equal to 10 individuals. The stagnation number of iterations ‘NS’ is fixed in 50 iterations and the iteration maximum number ‘ItMax’ is equal to 200. Drones number is equal to 4 while workers number is equal to 5. As practical values, crossover and mutation probabilities are chosen 0.95 and 0.01 respectively. DCiTasks={<JTaskai,JTaskbi,JTaskci, JTaskdi,...,JTaskri>} We assume that DCjTasks is the nearest datacenter to DCiTasks, where: DCjTasks={<JTaska’j,JTaskYj,JTaskc’j, JTaskd’j,...,JTaskr’j>} The, the neighbor individual will be: DCiTasks={<JTaskai,JTaskYi,JTaskci, JTaskdi,...,JTaskri>} In the foraging step, we propose to disseminate 30 foragers (FBest) to exploit 3 regions (B) represented by the 3 best workers among 5 and only 15 foragers (FOther) are sent to the 2 remainder regions since they are the less promising regions. Figure 5. Greedy approach for neighborhood search E. BLA complexity analysis To analyze the computational resources running time, the performed complexity of BLA is calculated as follows. First of all, double O(N) time units are used to choose and to evaluate N bees which represent the population individuals. It means that the initialization performs O(N) + O(N) ≈ O(N) time units. The following table 1 indicates the execution time (measured in milliseconds) of one task by a datacenter (in this work, we assume that all tasks possess the same number of instructions): The process can be executed in the best case NS times and in the worst case ItMax times. During the iteration, the generated number of offsprings is (N × pc) with pc crossover probability. Among them, ((N × pc) × pm) will be mutated where pm is the mutation probability. TABLE I. DCj Next, W workers among N ensure the food source foraging as a greedy local search. FBest foragers are sent to B best regions and FOthers foragers are sent to the remainder regions (W-B) regions. Therefore, FBest perform O(FBest × B) time units however, FOther execute O(FOthers × (W-B)) time units. The total time complexity of each iteration can be calculated as follows: 1 2 3 4 5 6 7 8 9 10 Exe.time 10 11 12 10 12 10 10 10 12 12 11 12 13 14 15 16 17 18 19 20 Exe.time 12 11 8 10 12 12 11 10 10 10 DCj O(N)+O((N×pc)×pm)+O(FBest×B)+O(FOthers×(W-B)) EXECUTION TIME OF ONE TASK INTO DATACENTER B. Experimental results After BLA and GA tests executions with the same parameter settings according to the cloud, the best solutions found (tasks repartition) in terms of makespan are listed in the table 2. ≈O(N+((N×pc)×pm)+(FBest×B)+(FOther×(W-B)) time units. We mention the BLA performs: in the best case: TABLE II. O(NS×(N+((N×pc)×pm)+(FBest×B)+(FOther×(W-B))) Algo. and in the worst case: TASKS REPARTITION USING BLA AND GA Task repartition between datacenters Job1Tasks={JTask1 1, JTask1 4, JTask1 6, JTask1 7, JTask1 8} Job2Tasks={JTask2 1, JTask2 6, JTask2 7, JTask2 8, JTask2 9} O(ItMax×(N+((N×pc)×pm)+(FBest×B)+(FOther×(W-B))) GA Job3Tasks={JTask3 1, JTask3 6, JTask3 7, JTask3 12, JTask3 13, JTask3 14} We conclude that BLA performs a linear complexity which is the least possible. 190 Algo. conventional algorithm in this context. The obtained results of BLA prove the efficiency and the performance of the proposed algorithm in terms of the execution time. Task repartition between datacenters Job4Tasks={JTask4 1, JTask4 6, JTask4 7, JTask4 12, JTask4 13, JTask4 18, JTask4 19} As perspective, the dynamic job scheduling in the cloud computing can be studied using BLA in which number of datacenters can be varied. In addition, another aspect can be treated such as the execution of jobs in real time. Job5Tasks={JTask5 1, JTask5 6, JTask5 7, JTask5 12, JTask5 13, JTask5 18, JTask5 20} Job1Tasks={JTask1 1, JTask1 4, JTask1 6, JTask1 7, JTask1 8} Job2Tasks={JTask2 1, JTask2 6, JTask2 7, JTask2 8, JTask2 9} REFERENCES Job3Tasks={JTask3 1, JTask3 6, JTask3 7, JTask3 8, JTask3 13, BLA JTask3 14} [1] Amazon Elastic Compute Cloud. http://aws.amazon.com/ec2/ (accessed on October 25, 2011) [2] Google App Engine. http://code.google.com/appengine/ (accessed on October 25, 2011). [3] B. Furht, and A. Escalante, “Handbook of cloud computing,” Cloud computing fondamentals chapter writen by B. Furht, Springer, 2010. [4] A. Goscinski, and M. Brock, “Toward dynamic and attribute based Job4Tasks={JTask4 1, JTask4 6, JTask4 7, JTask4 8, JTask4 13, JTask4 18, JTask4 19} Job5Tasks={JTask5 1, JTask5 6, JTask5 7, JTask5 8, JTask5 13, JTask5 18, JTask5 20} To calculate the fitness, the below mentioned fitness function is applied: publication, discovery and selection for cloud computing,” Future Generation Computer Systems (26), pp. 947-970, 2010. Fitness(DCTasks) = Σ (Fitness(JTaskij, DCj)) = Fitness(JTask1 1, DC1)+Fitness(JTask1 5, DC5)+…+ Fitness(JTask5 19, DC19)+ Fitness(JTask5 20, DC20) [5] and M. Leung, "Cooperative load balancing in distributed systems", presented at Concurrency and Computation: Practice and Experience, pp.1953-1976, 2008. where: [6] D. Kunkle, and J. Schindler, “A Load Balancing Framework for Clustered Storage,” LNCS, vol. 5374, pp. 57–72. Springer, 2008. [7] A. Verma, P., Ahuja, A., and Neogi, “pMapper: Power and Migration Fitness(JTaskij, DCj) = JTaskij.TimeToExe For GA, we have: Fitness(DCTasks) = (50) + (52) + (61) + (71) + (71) = 305ms Cost Aware Application Placement in Virtualized Systems,” LNCS, vol. 5346, pp. 243–264, Springer, 2008. For BLA, we have: Fitness(DCTasks) = (50) + (52) + (58) + (68) + (68) = 296ms [8] Q. Yin, A. Schüpbach, J., Cappos, A., Baumann, and T., Roscoe, “Rhizoma: A Runtime for Selfdeploying, Self-managing Overlays,” LNCS, vol. 5896, pp. 184–204, Springer, 2009. Table 2 shows that the best fitness is the fitness obtained by BLA (296ms) compared with the fitness given by GA (305ms). It represents the best execution time of the overall tasks of all jobs (J1…J5) performed by the different datacenters (DC1…DC20). These results confirm the reliability and efficiency of BLA to solve job scheduling problem in the cloud by an optimal workloads balancing. [9] A. Ganapathi, Y. Chen, A. Fox, R. Katz, D. Patterson, “Statistics-driven workload modeling for the cloud,” University of California, Berkeley, Tech. Rep, 2009. [10] R. Alonso-Calvo, J. Crespo, M. Garcia-Remesal, A. Anguita, and V. Maojo, “On distributing load in cloud computing: A real application for very-large image datasets,” Procedia Computer Science, Elsevier, 1 (2010), pp. 2669-2677, 2010. This superiority is due to the generalization of the proposed algorithm that is a global optimization using the crossover operator which guarantees the diversity of the solution. Also, it ensures the local optima escape. Moreover, BLA carries out a local search represents in the mutation operator and in the neighborhood search approach which helps to take advantage of the search history conducted by local search. V. D. Grosu, A.T. Chronopoulos, [11] G. W. You, S. W. Hwang, and N. Jain, “Scalable Load Balancing in Cluster Storage Systems,” LNCS Vol. 7049 Springer, pp. 101–122, 2011. [12] D.T. Pham, E. Kog, A. Ghanbarzadeh, S. Otri, S. Rahim, and M. Zaidi, “The Bees Algorithm – A Novel Tool for Complex Optimisation Problems,” 2nd international virtual conference on Intelligent PROduction Machines and Systems IPROMS, Oxford, Elsevier, 2006. CONCLUSION [13] H.A. Abbass, “A Single Queen Single Worker Honey-Bees Approach to In this paper, job scheduling problem in the cloud computing has been studied and solved with a novel population-based metaheuristic called Bees Life Algorithm which is inspired by nature life of bees. The makespan is the major objective aimed at such problem in this scalable computing area. In order to prove the reliability and the efficiency of this proposal, an implementation and a set of tests of BLA have been carried out and compared against GA as 3-SAT,” The Genetic and Evolutionary Computation Conference GECCO2001, San Francisco, USA, 2001. [14] S. Bitam, M. Batouche, E-G. Talbi, “A survey on bee colony algorithms,” 24th IEEE International Parallel and Distributed Processing Symposium, NIDISC Workshop, Atlanta, Georgia, USA, pp. 1-8, 2010. 191
© Copyright 2026 Paperzz