# Cooperative Bacterial Foraging Optimization

Authors: Hanning Chen; Yunlong Zhu; Kunyuan Hu
Journal: Discrete Dynamics in Nature and Society
 (2009)

---

## Abstract

Bacterial Foraging Optimization (BFO) is a novel optimization algorithm based on the social foraging behavior ofE. coli bacteria. This paper presents a variation on the original BFO algorithm, namely, the Cooperative Bacterial Foraging Optimization (CBFO), which significantly improve the original BFO in solving complex optimization problems. This significant improvement is achieved by applying two cooperative approaches to the original BFO, namely, the serial heterogeneous cooperation on the implicit space decomposition level and the serial heterogeneous cooperation on the hybrid space decomposition level. The experiments compare the performance of two CBFO variants with the original BFO, the standard PSO and a real-coded GA on four widely used benchmark functions. The new method shows a marked improvement in performance over the original BFO and appears to be comparable with the PSO and GA.


---

## Body

## 1. Introduction

In recent years, bacterial foraging behaviors (i.e., bacterial chemotaxis) as a rich source of potential engineering applications and  computational model have attracted more and more attentions. A few models have been developed to mimic bacterial foraging behaviors and been applied for solving practical problems [1–3]. Among them, Bacterial Foraging Optimization (BFO) is a population-based numerical optimization algorithm. Until date, BFO has been applied successfully to some engineering problems, such as optimal control [4], harmonic estimation [5], transmission loss reduction [6] and machine learning [7]. However, experimentation with complex optimization problems reveal that the original BFO algorithm possesses a poor convergence behavior compared to other nature-inspired algorithms and its performance also heavily decreases with the growth of the search space dimensionality.It should be noted that even the most successful nature-inspired optimization techniques, such as Genetic Algorithm (GA) [8, 9] and Particle Swarm Optimization (PSO) [10, 11], are also sensitive to the increase of the problem complexity and dimensionality, due to their stochastic nature [12, 13]. Cooperative search is one of the solutions to this problem that have been extensively studied in the past decade. The basic approach involves having more than one search module running and exchanging information among each other in order to explore the search space more efficiently and reach better solutions [14]. In order to improve the BFO’s performance on complex optimization problems, this paper applies cooperative search technique to the BFO model and then proposed the Cooperative Bacterial Foraging Optimization (CBFO) algorithm. In order to evaluate the performance of the CBFO, extensive studies based on a set of 4 widely used benchmark functions have been carried out. For comparison purposes, we also implemented the original BFO, the standard PSO, and a simple real-coded GA on these functions, respectively. The simulation results are encouraging. The CBFO algorithm shows remarked performance improvement over the original BFO.The rest of the paper is organized as follows. In Section2, we will give the briefly reviews of the bacterial chemotaxis and the original BFO algorithm. A discussion of the artificial bacterial behaviors in BFO model is also presented in this section. Section 3 summarizes the state of the art on the cooperative search methods. Then our Cooperative Bacterial Optimization algorithm will be introduced and its implementation details will be given in Section 4. Section 5 tests the algorithms on the benchmarks, and gives out the results. Finally, Section 6 outlines the conclusions.


## 2. The Classical BFO Algorithm

The motile bacteria such asE. coli and salmonella propel themselves by rotating their flagella. To move forward, the flagella counterclockwise rotate and the organism “swims” (or “runs”). While a clockwise rotation of the flagellum causes the bacterium randomly “tumble” itself in a new direction and then swims again [15]. An alternation between “swim” and “tumble” enables the bacterium search for nutrients in random directions. Swimming is more frequent as the bacterium approaches a nutrient gradient. Tumbling, hence direction changes, is more frequent as the bacterium moves away from some food to search for more. Basically, bacterial chemotaxis is a complex combination of swimming and tumbling that keeps bacteria in places of higher concentration of nutrients. Bacterial chemotaxis can also be considered as the optimization process of the exploitation of known resources, and costly exploration for new, potentially more valuable resources.


### 2.1. Bacterial Foraging Optimization

The original Bacterial Foraging Optimization system  consists of three principal mechanisms, namely, chemotaxis, reproduction, and elimination-dispersal. We briefly describe each of these processes as follows.


#### 2.1.1. Chemotaxis

In the original BFO, a unit walk with random direction represents a “tumble” and a unit walk with the same direction in the last step indicates a “run.” Supposeθi(j,k,l) represents the bacterium at jth chemotactic, kth reproductive, and lth elimination-dispersal step. C(i) is the chemotactic step size during each run or tumble (i.e., run-length unit). Then in each computational chemotactic step, the movement of the ith bacterium can be represented as(2.1)θi(j+1,k,l)=θi(j,k,l)+C(i)Δ(i)ΔT(i)Δ(i),
where Δ(i) is the direction vector of the jth chemotactic step. When the bacterial movement is run, Δ(i) is the same with the last chemotactic step; otherwise, Δ(i) is a random vector whose elements lie in [-1, 1].With the activity of run or tumble taken at each step of the chemotaxis process, a step fitness, denoted asJ(i,j,k,l), will be evaluated.


#### 2.1.2. Reproduction

The health status of each bacterium is calculated as the sum of the step fitness during its life, that is,∑j=1NcJ(i,j,k,l), where Nc is the maximum step in a chemotaxis process. All bacteria are sorted in reverse order according to health status. In the reproduction step, only the first half of population survives and a surviving bacterium splits into two identical ones, which are then placed in the same locations. Thus, the population of bacteria keeps constant.


#### 2.1.3. Elimination and Dispersal

The chemotaxis provides a basis for local search, and the reproduction process speeds up the convergence which has been simulated by the classical BFO. While to a large extent, only chemotaxis and reproduction are not enough for global optima searching. Since bacteria may get stuck around the initial positions or local optima, it is possible for the diversity of BFO to change either gradually or suddenly to eliminate the accidents of being trapped into the local optima. In BFO, the dispersion event happens after a certain number of reproduction processes. Then some bacteria are chosen, according to a preset probabilityPed, to be killed and moved to another position within the environment.


### 2.2. Step-By-Step Algorithm

In what follows we briefly outline the original BFO algorithm step by step.Step 1.
Initialize parametersn,S,Nc,Ns,Nre,Ned,Ped,C(i)(i=1,2,…,S),θi, where
n: dimension of the search space,S: the number of bacteria in the colony,Nc: chemotactic steps,Ns: swim steps,Nre: reproductive steps,Ned: elimination and dispersal steps,Ped: probability of elimination,C(i): the run-length unit (i.e., the size of the step taken in each run     or tumble).Step 2.
Elimination-dispersal loop:l=l+1.Step 3.
Reproduction loop:k=k+1.Step 4.
Chemotaxis loop:j=j+1.
Substep 4.1.
Fori = 1 = 1, 2, …, S, take a chemotactic step for bacterium i as follows.Substep 4.2.
Compute fitness function,J(i,j,k,l).Substep 4.3.
LetJlast=J(i,j,k,l) to save this value since we may find better value via a run.Substep 4.4.
Tumble. Generate a random vectorΔ(i)∈Rn with each element Δm(i),m=1,2,…,n, a random number on [-1, 1].Substep 4.5.
Move. Let(2.2)θi(j+1,k,l)=θi(j,k,l)+C(i)Δ(i)ΔT(i)Δ(i).
This results in a step of size C(i) in the direction of the tumble for bacterium i.Substep 4.6.
ComputeJ(i,j+1,k,l) with θi(j+1,k,l).Substep 4.7.
Swimming.(i)
Letm=0 (counter for swim length).(ii)
Whilem<Ns (if has not climbed down too long), the following hold.
∙
Letm=m+1.
∙
IfJ(i,j+1,k,l)<Jlast, let Jlast=J(i,j+1,k,l),  then another step of size C(i) in this same direction will be taken as (2.2) and use the new generated∙
θi(j+1,k,l) to compute the new J(i,j+1,k,l).∙
Else letm=Ns.Substep 4.8.
Go to next bacterium(i+1). if i≠S, go to Substep 4.2 to process the next bacterium.Step 5.
Ifj<Nc, go to Step 3. In this case, continue chemotaxis since the life of the bacteria is not over.Step 6.
Reproduction.Substep 6.1.
For the givenk and l, and for each i=1,2,…,S, let
(2.3)Jhealthi=∑j=1Nc+1J(i,j,k,l)
be the health of the bacteria. Sort bacteria in order of ascending values (Jhealth).Substep 6.2.
TheSr bacteria with the highest Jhealth values die and the other Sr bacteria with the best values split and the copies that are made are placed at the same location as their parent.Step 7.
Ifk<Nre, go to Step 2. In this case the number of specified reproduction steps is not reached and start the next generation in the chemotactic loop.Step 8.
Elimination-dispersal: fori=1,2,…,S, with probability ped, eliminate and disperse each bacterium, which results in keeping the number of bacteria in the population constant. To do this, if a bacterium is eliminated, simply disperse one to a random location on the optimization domain. If l<Ned, then go to Step 2; otherwise end.


### 2.3. Bacterial Behavior in BFO

In order to get an insight into the behavior of the virtual bacteria in BFO model, we illustrate the bacterial trajectories in two distinct environments (the 2D unimodal Sphere function and the 2D multimodal Rastrigrin function) by tuning the run-length unit parameterC, which can essentially influence the bacterial behaviors.The first case is the minimization of the 2D Sphere function (formulated in Section5), which is a widely used unimodal benchmark with a single optimum (0, 0) and the minimum is 0. Figure 1 illustrates the trajectories of six bacteria foraging for the minimum in the landscape defined by the Sphere function (which is contour plotted). The six bacteria simultaneously start at (-4,-4),(0,-4),(4,-4),(4,4),(0,4), and (-4,4). In Figure 1(a), the simulation takes 50 chemotactic steps with C=0.1. While in Figure 1(b), the simulation takes 200 chemotactic steps with C=0.01. The Reproduction and Elimination-dispersal events are not considered here. From Figure 1, it is clear to see that all the bacteria can travel up the gradient to pursue the minimum. We can also observe from Figure 1 that the larger the parameter C, the smaller the number of steps to enter the domain including the optimum, although the path seems to be miss direct sometimes. On the other hand, the bacteria with the smaller C enhance a fine-grained local search to find more precise solutions.Bacterial Foraging trajectories on the 2D Sphere function.
(a)(b)The other simulation case is on the 2D Rastrigrin function, which is a complex multimodal problem with a large number of local optima. It is a widely used benchmark function with the global optimum(0,0) and the minimum is 0. Figure 2 shows the contour lines of this function together with the foraging path of six bacteria that simultaneously start at (-2.5,-2.5),(0,-2.5),(2.5,-2.5),(2.5,2.5),(0,2.5), and (-2.5,2.5). In Figure 2(a), the simulation takes 200 chemotactic steps with C=0.1. While in Figure 2(b), the simulation takes 200 chemotactic steps with the different parameter C=0.01. From the chemotactic motions in Figure 2, we can observe that the bacteria with larger C=0.1 can explore the search space and stay for a while in several regions with local optima. they can also escape from these local optima to enter the domain with the global optimum, but were not able to stop there. On the other hand, the bacteria with the smaller C were attracted into the domain with local optima, which closed to these organisms, and exploited these local minimum for their whole life cycles. That is, if a bacterium with small C traps in a local minimum, it is not able to escape from it.Bacterial Foraging trajectories on the 2D Rastrigrin function.
(a)(b)Obviously, the bacteria with large run length unit have the exploring ability while the bacteria with relatively small run length unit have the exploiting skill. Hence, the parameterC can be used to control the exploration of the whole search space and the exploitation of the promising areas.


## 2.1. Bacterial Foraging Optimization

The original Bacterial Foraging Optimization system  consists of three principal mechanisms, namely, chemotaxis, reproduction, and elimination-dispersal. We briefly describe each of these processes as follows.


### 2.1.1. Chemotaxis

In the original BFO, a unit walk with random direction represents a “tumble” and a unit walk with the same direction in the last step indicates a “run.” Supposeθi(j,k,l) represents the bacterium at jth chemotactic, kth reproductive, and lth elimination-dispersal step. C(i) is the chemotactic step size during each run or tumble (i.e., run-length unit). Then in each computational chemotactic step, the movement of the ith bacterium can be represented as(2.1)θi(j+1,k,l)=θi(j,k,l)+C(i)Δ(i)ΔT(i)Δ(i),
where Δ(i) is the direction vector of the jth chemotactic step. When the bacterial movement is run, Δ(i) is the same with the last chemotactic step; otherwise, Δ(i) is a random vector whose elements lie in [-1, 1].With the activity of run or tumble taken at each step of the chemotaxis process, a step fitness, denoted asJ(i,j,k,l), will be evaluated.


### 2.1.2. Reproduction

The health status of each bacterium is calculated as the sum of the step fitness during its life, that is,∑j=1NcJ(i,j,k,l), where Nc is the maximum step in a chemotaxis process. All bacteria are sorted in reverse order according to health status. In the reproduction step, only the first half of population survives and a surviving bacterium splits into two identical ones, which are then placed in the same locations. Thus, the population of bacteria keeps constant.


### 2.1.3. Elimination and Dispersal

The chemotaxis provides a basis for local search, and the reproduction process speeds up the convergence which has been simulated by the classical BFO. While to a large extent, only chemotaxis and reproduction are not enough for global optima searching. Since bacteria may get stuck around the initial positions or local optima, it is possible for the diversity of BFO to change either gradually or suddenly to eliminate the accidents of being trapped into the local optima. In BFO, the dispersion event happens after a certain number of reproduction processes. Then some bacteria are chosen, according to a preset probabilityPed, to be killed and moved to another position within the environment.


## 2.1.1. Chemotaxis

In the original BFO, a unit walk with random direction represents a “tumble” and a unit walk with the same direction in the last step indicates a “run.” Supposeθi(j,k,l) represents the bacterium at jth chemotactic, kth reproductive, and lth elimination-dispersal step. C(i) is the chemotactic step size during each run or tumble (i.e., run-length unit). Then in each computational chemotactic step, the movement of the ith bacterium can be represented as(2.1)θi(j+1,k,l)=θi(j,k,l)+C(i)Δ(i)ΔT(i)Δ(i),
where Δ(i) is the direction vector of the jth chemotactic step. When the bacterial movement is run, Δ(i) is the same with the last chemotactic step; otherwise, Δ(i) is a random vector whose elements lie in [-1, 1].With the activity of run or tumble taken at each step of the chemotaxis process, a step fitness, denoted asJ(i,j,k,l), will be evaluated.


## 2.1.2. Reproduction

The health status of each bacterium is calculated as the sum of the step fitness during its life, that is,∑j=1NcJ(i,j,k,l), where Nc is the maximum step in a chemotaxis process. All bacteria are sorted in reverse order according to health status. In the reproduction step, only the first half of population survives and a surviving bacterium splits into two identical ones, which are then placed in the same locations. Thus, the population of bacteria keeps constant.


## 2.1.3. Elimination and Dispersal

The chemotaxis provides a basis for local search, and the reproduction process speeds up the convergence which has been simulated by the classical BFO. While to a large extent, only chemotaxis and reproduction are not enough for global optima searching. Since bacteria may get stuck around the initial positions or local optima, it is possible for the diversity of BFO to change either gradually or suddenly to eliminate the accidents of being trapped into the local optima. In BFO, the dispersion event happens after a certain number of reproduction processes. Then some bacteria are chosen, according to a preset probabilityPed, to be killed and moved to another position within the environment.


## 2.2. Step-By-Step Algorithm

In what follows we briefly outline the original BFO algorithm step by step.Step 1.
Initialize parametersn,S,Nc,Ns,Nre,Ned,Ped,C(i)(i=1,2,…,S),θi, where
n: dimension of the search space,S: the number of bacteria in the colony,Nc: chemotactic steps,Ns: swim steps,Nre: reproductive steps,Ned: elimination and dispersal steps,Ped: probability of elimination,C(i): the run-length unit (i.e., the size of the step taken in each run     or tumble).Step 2.
Elimination-dispersal loop:l=l+1.Step 3.
Reproduction loop:k=k+1.Step 4.
Chemotaxis loop:j=j+1.
Substep 4.1.
Fori = 1 = 1, 2, …, S, take a chemotactic step for bacterium i as follows.Substep 4.2.
Compute fitness function,J(i,j,k,l).Substep 4.3.
LetJlast=J(i,j,k,l) to save this value since we may find better value via a run.Substep 4.4.
Tumble. Generate a random vectorΔ(i)∈Rn with each element Δm(i),m=1,2,…,n, a random number on [-1, 1].Substep 4.5.
Move. Let(2.2)θi(j+1,k,l)=θi(j,k,l)+C(i)Δ(i)ΔT(i)Δ(i).
This results in a step of size C(i) in the direction of the tumble for bacterium i.Substep 4.6.
ComputeJ(i,j+1,k,l) with θi(j+1,k,l).Substep 4.7.
Swimming.(i)
Letm=0 (counter for swim length).(ii)
Whilem<Ns (if has not climbed down too long), the following hold.
∙
Letm=m+1.
∙
IfJ(i,j+1,k,l)<Jlast, let Jlast=J(i,j+1,k,l),  then another step of size C(i) in this same direction will be taken as (2.2) and use the new generated∙
θi(j+1,k,l) to compute the new J(i,j+1,k,l).∙
Else letm=Ns.Substep 4.8.
Go to next bacterium(i+1). if i≠S, go to Substep 4.2 to process the next bacterium.Step 5.
Ifj<Nc, go to Step 3. In this case, continue chemotaxis since the life of the bacteria is not over.Step 6.
Reproduction.Substep 6.1.
For the givenk and l, and for each i=1,2,…,S, let
(2.3)Jhealthi=∑j=1Nc+1J(i,j,k,l)
be the health of the bacteria. Sort bacteria in order of ascending values (Jhealth).Substep 6.2.
TheSr bacteria with the highest Jhealth values die and the other Sr bacteria with the best values split and the copies that are made are placed at the same location as their parent.Step 7.
Ifk<Nre, go to Step 2. In this case the number of specified reproduction steps is not reached and start the next generation in the chemotactic loop.Step 8.
Elimination-dispersal: fori=1,2,…,S, with probability ped, eliminate and disperse each bacterium, which results in keeping the number of bacteria in the population constant. To do this, if a bacterium is eliminated, simply disperse one to a random location on the optimization domain. If l<Ned, then go to Step 2; otherwise end.


## 2.3. Bacterial Behavior in BFO

In order to get an insight into the behavior of the virtual bacteria in BFO model, we illustrate the bacterial trajectories in two distinct environments (the 2D unimodal Sphere function and the 2D multimodal Rastrigrin function) by tuning the run-length unit parameterC, which can essentially influence the bacterial behaviors.The first case is the minimization of the 2D Sphere function (formulated in Section5), which is a widely used unimodal benchmark with a single optimum (0, 0) and the minimum is 0. Figure 1 illustrates the trajectories of six bacteria foraging for the minimum in the landscape defined by the Sphere function (which is contour plotted). The six bacteria simultaneously start at (-4,-4),(0,-4),(4,-4),(4,4),(0,4), and (-4,4). In Figure 1(a), the simulation takes 50 chemotactic steps with C=0.1. While in Figure 1(b), the simulation takes 200 chemotactic steps with C=0.01. The Reproduction and Elimination-dispersal events are not considered here. From Figure 1, it is clear to see that all the bacteria can travel up the gradient to pursue the minimum. We can also observe from Figure 1 that the larger the parameter C, the smaller the number of steps to enter the domain including the optimum, although the path seems to be miss direct sometimes. On the other hand, the bacteria with the smaller C enhance a fine-grained local search to find more precise solutions.Bacterial Foraging trajectories on the 2D Sphere function.
(a)(b)The other simulation case is on the 2D Rastrigrin function, which is a complex multimodal problem with a large number of local optima. It is a widely used benchmark function with the global optimum(0,0) and the minimum is 0. Figure 2 shows the contour lines of this function together with the foraging path of six bacteria that simultaneously start at (-2.5,-2.5),(0,-2.5),(2.5,-2.5),(2.5,2.5),(0,2.5), and (-2.5,2.5). In Figure 2(a), the simulation takes 200 chemotactic steps with C=0.1. While in Figure 2(b), the simulation takes 200 chemotactic steps with the different parameter C=0.01. From the chemotactic motions in Figure 2, we can observe that the bacteria with larger C=0.1 can explore the search space and stay for a while in several regions with local optima. they can also escape from these local optima to enter the domain with the global optimum, but were not able to stop there. On the other hand, the bacteria with the smaller C were attracted into the domain with local optima, which closed to these organisms, and exploited these local minimum for their whole life cycles. That is, if a bacterium with small C traps in a local minimum, it is not able to escape from it.Bacterial Foraging trajectories on the 2D Rastrigrin function.
(a)(b)Obviously, the bacteria with large run length unit have the exploring ability while the bacteria with relatively small run length unit have the exploiting skill. Hence, the parameterC can be used to control the exploration of the whole search space and the exploitation of the promising areas.


## 3. Taxonomy of the Cooperative Search Algorithms

In this section, we review the classification of cooperative search algorithms, which can also be used to guide the readers in classifying the kind of algorithms we are dealing with in this work.  El-Abd and Kamel proposed two different taxonomies for classifying cooperative search algorithms [14]: one is based on the types of algorithms used in it, and the other is based on the level of space decomposition achieved by the cooperative system (shown as in Figure 3).Taxonomy of the Cooperative Search Algorithms. (a) Taxonomy based on the types of used algorithms; (b) Taxonomy based on the level of space decomposition.
(a)(b)The first taxonomy gives rise to four different categories.(i)
Serial homogenous cooperation: this is concerned with having different instances of the same algorithms searching in a sequential manner. Each algorithm provides a partial solution to the problem. These partial solutions are used to provide a complete solution that is evaluated and used in subsequent runs.(ii)
Parallel homogenous cooperation: this category involves having different instances of the same algorithm running in parallel and searching for a solution with the information passed between these algorithms.(iii)
Serial heterogeneous cooperation: this class involves having different algorithms running in a pipeline fashion. The output of each algorithm supplied as an input to the next algorithm.(iv)
Parallel heterogeneous cooperation: the same as the second class but with different running algorithms.The second taxonomy gives rise to three different categories.(i)
Implicit space decomposition: this category involves the decomposition of the search space between different algorithms, which refers to having different algorithms (or different instances of the same algorithm) looking for a solution and sharing useful information between them.(ii)
Explicit space decomposition: in this class, each algorithm searches for a subsolution in a different subspace of the problem. That is, each algorithm provides a partial solution and these partial solutions are combined into the complete solution. This approach was originally introduced using genetic algorithms [16] and also applied to the original PSO algorithm [17].(iii)
Hybrid approach: this class refers to the idea of having a cooperative system that employs both methods of space decomposition.Furthermore, these types of cooperation are related to each other. For example, the explicit space decomposition class is similar to the homogeneous serial class in the first taxonomy.


## 4. Cooperative Bacterial Foraging Optimization

This work proposes two variants of Cooperative Bacterial Foraging Algorithm, namely, CBFO-S and CBFO-H. According to the taxonomies on cooperation search algorithms in Section3, they can be classified into the serial heterogeneous cooperation on the implicit  space decomposition level and the serial heterogeneous cooperation on the hybrid space decomposition level, respectively.


### 4.1. The CBFO-S Algorithm

As indicate in Section2, the bacterium with a large run-length unit parameter has the exploring ability, while the bacterium with a relatively small run-length unit parameter has the exploiting skill. This inspired us to divide the foraging procedure of artificial bacteria colony into multiple phases each occupies a portion of generations and characterized by the different value of run-length unit parameter C.In CBFO-S, different BFO algorithms (with different run-length unit parameters) execute in sequential phases. The output of each BFO (the best positions found by each bacterium in each phase) supplies as an input to the algorithm in the next phase. In the initial phase, the bacteria colony searches the whole solution space with a largeC, which permits the bacteria to locate promising regions and avoid trapped in local optima. Each bacterium records all its visited positions in this phase and the position with the highest fitness value is considered as the promising solution candidate. When entrance into the next phase, the bacteria colony is reinitialized with relatively small C from these promising solution candidates and starts exploiting the promising regions (the neighborhoods of these candidates) until the needed criteria for switch to the next phase is reached. Then a bacteria colony is reinitialized again with even smaller C to fine-tune the best-so-far solutions found in the foregoing phase. Hence, the CBFO-S algorithm can be classified into the serial heterogeneous cooperation on the implicit space decomposition level.The pseudocode of CBFO-S is described in Algorithm1,  where Np indicates the number  of evolutionary phases, Nc represents the number of chemotactic steps in a bacterium’s life time, S is the bacteria colony size and Ns is the maximum number of steps in the process of Run, and α>1 is a user-defined constant that is used to decrease the run-length unit C. We also embed the reproduction, elimination, and dispersal processes into each chemotactic step. This can speed up the algorithm convergence rate significantly.Algorithm 1:Pseudocode for CBFO-S.
INITIALIZE:the position and the associated run-length unit Cinitial of the bacteria colony;For(each phase k=1:Np)For(each chemotactic step t=1:Nc)For(each bacterium i=1:S)Calculate the fitness Ji(t,k) of ith bacterium;TUMBLE:Generate a random vector Δ, where each element belongs to [-1,1].Move the bacterium i in the direction of Δ∕ΔTΔ by a unitwalk of size C(k). Then calculate the new fitnessJi(t+1,k) of bacterium i;Set  flag = 0;RUN: While(flag<Ns)If(Ji(t+1,k)<Ji(t,k))Take another unit walk in the same direction;Calculate the new fitness as Ji(t+1,k);flag = flag + 1;End ifEnd whileEnd forREPRODUCTION:The S/2 bacteria with the worst fitness die and theother S/2 bacteria with the best fitness split;ELIMINATION and DISPERSAL: With probability ped,  eliminate  anddisperse each bacterium;End forREINITIALIZE:bacteria positions from the potential candidate positionsfound by each bacterium in the phase k.EVOLUTION: Evolution is added to run-length unit by:C(k+1)=C(k)/α;//α is user-defined constant.End for


### 4.2. The CBFO-H Algorithm

The CBFO-H Algorithm consists of two search stages working in a serial fashion. The first stage, which applied the original BFO model with a large run-length unit parameterCL, runs for a number of iterations to locate promising regions including the global optimum. Then the algorithm passes the best found solutions to the next stage. The second stage reinitializes the bacteria colony in these best-so-far positions with a smaller run-length unit parameter CS, and applies the explicit space decomposition cooperative approach to the BFO. This approach relies on splitting the search space (n-dimensional vector) into n/2 subspaces (which is a 2-dimensional vector), where each subspace is optimized by a separate bacteria colony. The overall solution is the vector combining the best bacterium of each colony. This algorithm works by sequentially passing over the colonies. To evolve all the bacteria in colony j, the other n/2-1 components in the overall solution are kept constant (with their values set to the global best bacteria from the other n/2-1 colonies). Then the jth colony evolves and replaces the jth component of the overall solution by its best bacterium.The pseudocode of CBFO-H is described in Algorithm2, where Ncs1 and Ncs2 represent the number of chemotactic steps in stages 1 and 2, respectively, and α>1 is a user-defined constant that is used to decrease the run-length unit C.Algorithm 2:Pseudocode for CBFO-H.
Stage 1:the original BFO algorithmINITIALIZE:the position and the associated run-length unit CL of the bacteria colony;For(each chemotactic step t=1:Ncs1)For(each bacterium i=1:S)TUMBLE;RUN;REPRODUCTION;ELIMINATION and DISPERSAL;End forEnd forPASS the best found solutions of each bacterium to stage 2;Stage 2:the multi-colony cooperative BFO algorithm using explicit space decompositionREINITIALIZE:bacteria positions from the best found solutions and the associaterun-length unit CS.SPLITthe whole population into n/2 separate colonies of 2D vectors;For(each chemotactic step t=1:Ncs2)For(each colony j=1:n/2)For(each bacterium i=1:S)TUMBLE;RUN;REPRODUCTION;ELIMINATION and DISPERSAL;End forUPDATEthe best bacterium replace the jth component of the overall solution;End forEVOLUTION: Evolution is added to run-length unit by:If(tmodβ=0) //β is user-defined constant.C(t+1)=C(t)/α;//α is user-defined constant.End ifEnd for


## 4.1. The CBFO-S Algorithm

As indicate in Section2, the bacterium with a large run-length unit parameter has the exploring ability, while the bacterium with a relatively small run-length unit parameter has the exploiting skill. This inspired us to divide the foraging procedure of artificial bacteria colony into multiple phases each occupies a portion of generations and characterized by the different value of run-length unit parameter C.In CBFO-S, different BFO algorithms (with different run-length unit parameters) execute in sequential phases. The output of each BFO (the best positions found by each bacterium in each phase) supplies as an input to the algorithm in the next phase. In the initial phase, the bacteria colony searches the whole solution space with a largeC, which permits the bacteria to locate promising regions and avoid trapped in local optima. Each bacterium records all its visited positions in this phase and the position with the highest fitness value is considered as the promising solution candidate. When entrance into the next phase, the bacteria colony is reinitialized with relatively small C from these promising solution candidates and starts exploiting the promising regions (the neighborhoods of these candidates) until the needed criteria for switch to the next phase is reached. Then a bacteria colony is reinitialized again with even smaller C to fine-tune the best-so-far solutions found in the foregoing phase. Hence, the CBFO-S algorithm can be classified into the serial heterogeneous cooperation on the implicit space decomposition level.The pseudocode of CBFO-S is described in Algorithm1,  where Np indicates the number  of evolutionary phases, Nc represents the number of chemotactic steps in a bacterium’s life time, S is the bacteria colony size and Ns is the maximum number of steps in the process of Run, and α>1 is a user-defined constant that is used to decrease the run-length unit C. We also embed the reproduction, elimination, and dispersal processes into each chemotactic step. This can speed up the algorithm convergence rate significantly.Algorithm 1:Pseudocode for CBFO-S.
INITIALIZE:the position and the associated run-length unit Cinitial of the bacteria colony;For(each phase k=1:Np)For(each chemotactic step t=1:Nc)For(each bacterium i=1:S)Calculate the fitness Ji(t,k) of ith bacterium;TUMBLE:Generate a random vector Δ, where each element belongs to [-1,1].Move the bacterium i in the direction of Δ∕ΔTΔ by a unitwalk of size C(k). Then calculate the new fitnessJi(t+1,k) of bacterium i;Set  flag = 0;RUN: While(flag<Ns)If(Ji(t+1,k)<Ji(t,k))Take another unit walk in the same direction;Calculate the new fitness as Ji(t+1,k);flag = flag + 1;End ifEnd whileEnd forREPRODUCTION:The S/2 bacteria with the worst fitness die and theother S/2 bacteria with the best fitness split;ELIMINATION and DISPERSAL: With probability ped,  eliminate  anddisperse each bacterium;End forREINITIALIZE:bacteria positions from the potential candidate positionsfound by each bacterium in the phase k.EVOLUTION: Evolution is added to run-length unit by:C(k+1)=C(k)/α;//α is user-defined constant.End for


## 4.2. The CBFO-H Algorithm

The CBFO-H Algorithm consists of two search stages working in a serial fashion. The first stage, which applied the original BFO model with a large run-length unit parameterCL, runs for a number of iterations to locate promising regions including the global optimum. Then the algorithm passes the best found solutions to the next stage. The second stage reinitializes the bacteria colony in these best-so-far positions with a smaller run-length unit parameter CS, and applies the explicit space decomposition cooperative approach to the BFO. This approach relies on splitting the search space (n-dimensional vector) into n/2 subspaces (which is a 2-dimensional vector), where each subspace is optimized by a separate bacteria colony. The overall solution is the vector combining the best bacterium of each colony. This algorithm works by sequentially passing over the colonies. To evolve all the bacteria in colony j, the other n/2-1 components in the overall solution are kept constant (with their values set to the global best bacteria from the other n/2-1 colonies). Then the jth colony evolves and replaces the jth component of the overall solution by its best bacterium.The pseudocode of CBFO-H is described in Algorithm2, where Ncs1 and Ncs2 represent the number of chemotactic steps in stages 1 and 2, respectively, and α>1 is a user-defined constant that is used to decrease the run-length unit C.Algorithm 2:Pseudocode for CBFO-H.
Stage 1:the original BFO algorithmINITIALIZE:the position and the associated run-length unit CL of the bacteria colony;For(each chemotactic step t=1:Ncs1)For(each bacterium i=1:S)TUMBLE;RUN;REPRODUCTION;ELIMINATION and DISPERSAL;End forEnd forPASS the best found solutions of each bacterium to stage 2;Stage 2:the multi-colony cooperative BFO algorithm using explicit space decompositionREINITIALIZE:bacteria positions from the best found solutions and the associaterun-length unit CS.SPLITthe whole population into n/2 separate colonies of 2D vectors;For(each chemotactic step t=1:Ncs2)For(each colony j=1:n/2)For(each bacterium i=1:S)TUMBLE;RUN;REPRODUCTION;ELIMINATION and DISPERSAL;End forUPDATEthe best bacterium replace the jth component of the overall solution;End forEVOLUTION: Evolution is added to run-length unit by:If(tmodβ=0) //β is user-defined constant.C(t+1)=C(t)/α;//α is user-defined constant.End ifEnd for


## 5. Experiments

### 5.1. Benchmark Functions

The set of benchmark functions contains four functions that are commonly used in evolutionary computation literature [18] to show solution quality and convergence rate. The formulas and the properties of these functions are listed as follows.(1)
Sphere function(5.1)f1(x)=∑i=1nxi2.(2)
Rosenbrock function(5.2)f2(x)=∑i=1n100×(xi+1-xi2)2+(1-xi)2.(3)
Rastrigrin function(5.3)f3(x)=∑i=1nxi2-10cos(2πxi)+10.(4)
Griewank function(5.4)f4(x)=14000∑i=1nxi2-∏i=1ncos(xii)+1.
The first problem is the sphere function, which is a widely used unimodal benchmark and is easy to solve. The second problem is the Rosenbrock function. It can be treated as a multimodal problem. It has a narrow valley from the perceived local optima to the global optimum. The third problem, namely, the Rastrigrin function, is a complex multimodal problem with a large number of local optima. Algorithms may easily fall into a local optimum when attempting to solve it. The last problem is the multimodal Griewank function. Griewank has linkage among variables that makes it difficult to reach the global optimum. The interesting phenomenon of the Griewank is that it is more difficult for lower dimensions than higher dimensions. All functions are tested on 10 dimensions. The search ranges R, the global optimum X* and the corresponding fitness f(X*) value of each function are listed in Table 1.Table 1
Parameters of the test functions.
FunctionRX*f(X*)Sphere[-5.12,5.12]D[0, 0⋯0]0Rosenbrock[-2.048,2.048]D[1, 1⋯1]0Rastrigrin[-5.12,5.12]D[0, 0⋯0]0Griewank[-600,600]D[0, 0⋯0]0


### 5.2. Parameter Settings for the Involved Algorithms

Experiment was conducted to compare five algorithms, namely, the original BFO, the simple real-coded GA, the PSO with inertia weight, and the proposed CBFO-S and CBFO-H on the four benchmark functions with 10 dimensions. The parameters setting for BFO, CBFO-S, and CBFO-H are summarized in Table2.Table 2
Parameters of the BFO algorithms.
TypeBFOCBFO-SCBFO-HS505050Ns444Nc100100—Nre5——Ned2——Np—10—C10-3×R——Ped0.10.10.1Cinitial—10-2×R—α—1010CL——10-2×RCS——10-4×RNcs1——200Ncs2——800β——100The PSO algorithm we used is the standard one and the parameters were given by the default setting of the work in [18]: the acceleration factors c1 and c2 were both 2.0; a decaying inertia weight ω starting at 0.9 and ending at 0.4 was used. The population size was set at 50 for the PSO algorithm.The GA algorithm we executed is a real-coded Genetic Algorithm with intermediate crossover and Gaussian mutation. The population of the GA is 50 and all the control parameters, for example, mutation rate, crossover rate, and so forth, were set to be the same of [19].


### 5.3. Simulation Results for Benchmark Functions

This experiment runs 30 times respectively for two proposed CBFO variants, the original BFO, the real-coded GA, and the Particle Swarm Optimization on each benchmark function. The total numbers of chemotactic steps (or iterations) were set to be 1000. Table3 lists the experimental results (including the best, worst, mean, and standard deviation of the function values found in 30 runs) for each algorithm on functions f1~f4. If the average optimum value or error is less than 10-10, it is shown as 0 in the table. Figure 4 shows the search progresses of the average values found by all algorithms over 30 runs for functions f1~f4.Table 3
Comparison among CBFO-H, BFO, PSO, and GA on 10-D problems.
10DBFOCBFO-SCBFO-HPSOGAf1Best6.05970003.1142e-004Worst30.49560000.0345Mean19.63310000.0118Std5.40900000.0094f2Best8.90810.164500.01967.8064Worst62.24450.59032.5879e-0074.07359.8140Mean12.09910.34921.4813e-0070.72948.6634Std9.50470.09664.6694e-0081.49640.5557f3Best9.95051.101102.98493.3034Worst53.72859.06940.097525.86897.0136Mean36.35134.88440.011110.84504.9512Std10.58181.64190.02574.59561.1516f4Best35.569400.138527.13320.1679Worst132.10650.13280.440179.74060.6318Mean99.77750.06470.270262.97370.3439Std24.84970.03080.084612.25810.1538Convergence results of all algorithms.
(a)
Sphere(b)
Rosenbrock(c)
Rastrigrin(d)
GriewankFrom the results, we observe that the proposed two CBFO algorithms achieved significantly better performance on all benchmark functions than the original BFO algorithm. CBFO-S surpasses all other algorithms on function 1, which is the unimodal function that adopted to assess the convergence rates of optimization algorithms. The CBFO-H performs better on all multimodal functions when the other algorithms miss the global optimum basin. That is, CBFO-H successfully avoids falling into local optima and continues to find better results even after the PSO, GA, and BFO seem to have stagnated. The CBFO-S achieved almost the same performance as the CBFO-H on multimodal functionsf2~f4. The Griewank function is a good example.As we can see in Figure4, in CBFO model, under the influence of the serial heterogeneous cooperative approach, the bacteria colony starts exploring the search space at the initial phase. That is, the bacterial colony do not waste much time before finding the promising regions that contains the local optima because of the large run-length unit C, which encourages long-range exploration. In the succeeding phases, by decreasing C, the bacteria slow down near the optima to pursue the more and more precise solutions. The search performance of the algorithms tested here is ordered as CBFO-S=CBFO-H>PSO=GA>BFO.


### 5.4. Bacterial Behaviors in CBFO Model

In order to further analyze the cooperative foraging behaviors of the proposed CBFO model, we run two simulations based on CBFO-S algorithm. In both simulations, we excluded the reproduction, elimination, and dispersion events to illustrate the bacterial behaviors clearly. In both cases, it shows the positions of the bacterial colony on certain chemotactic steps, where each white circle represents a bacterium. The evolution process proceeds 400 chemotactic steps, and we chooseS=50,Ns=4,Nc=100,Np=4,Cinitial=0.1, and α=10.In the first simulation, the population evolution of the CBFO-S was simulated on 2D Sphere function, which is illustrated in Figure5. Initially, in Figure 5(a), we see that the bacteria colony is distributed randomly over the nutrient map defined by the 2D Sphere function. In Figure 5(b), we can observe that, at the end of the first phase, all the bacterial colony members have found the basin that contains the global optimum of Sphere function and move around it. In the second and third phases (Figures 5(c) and 5(d)), the bacterial colony reinitialized in this basin and then exploit the global optimum. In the final phase (Figure 5(e)), we can observe that all the bacteria have converged to the global optimum of Sphere function. In Figure 5(f), we have also drawn the associated evolution of the run-length unit C of this bacterial colony along its search in the fitness landscape. This provides an intuitive explanation of what is happening during the search of the proposed cooperative bacterial foraging algorithm.Population evolution of CBFO on 2D Sphere function in 400 chemotactic steps.
(a)
t=0(b)
t=100(c)
t=200(d)
t=300(e)
t=400(f)
EvolutionofCWe found a similar pattern in the second simulation shown as in Figure6, where the bacteria colony pursue the valleys and avoid the peaks of the multimodal 2D Rastrigrin function. In the first phase (Figures 6(a) and 6(b)), starting from their random initial positions, the bacterial colony explore many regions of the nutrient map defined by Rastrigrin function. In the second and third phases (Figures 6(c) and 6(d)), the bacterial colony find many local optima of Rastrigrin function, including the global optimum. Then, in the final phase (Figure 6(e)), we can observe that all the bacteria have converged to several local optima and the global optimum of Rastrigrin function. The associated evolution of the run-length unit C is shown as in Figure 6(f).Population evolution of CBFO on 2D Rastrigrin function in 400 chemotactic steps.
(a)
t=0(b)
t=100(c)
t=200(d)
t=300(e)
t=400(f)
EvolutionofC


## 5.1. Benchmark Functions

The set of benchmark functions contains four functions that are commonly used in evolutionary computation literature [18] to show solution quality and convergence rate. The formulas and the properties of these functions are listed as follows.(1)
Sphere function(5.1)f1(x)=∑i=1nxi2.(2)
Rosenbrock function(5.2)f2(x)=∑i=1n100×(xi+1-xi2)2+(1-xi)2.(3)
Rastrigrin function(5.3)f3(x)=∑i=1nxi2-10cos(2πxi)+10.(4)
Griewank function(5.4)f4(x)=14000∑i=1nxi2-∏i=1ncos(xii)+1.
The first problem is the sphere function, which is a widely used unimodal benchmark and is easy to solve. The second problem is the Rosenbrock function. It can be treated as a multimodal problem. It has a narrow valley from the perceived local optima to the global optimum. The third problem, namely, the Rastrigrin function, is a complex multimodal problem with a large number of local optima. Algorithms may easily fall into a local optimum when attempting to solve it. The last problem is the multimodal Griewank function. Griewank has linkage among variables that makes it difficult to reach the global optimum. The interesting phenomenon of the Griewank is that it is more difficult for lower dimensions than higher dimensions. All functions are tested on 10 dimensions. The search ranges R, the global optimum X* and the corresponding fitness f(X*) value of each function are listed in Table 1.Table 1
Parameters of the test functions.
FunctionRX*f(X*)Sphere[-5.12,5.12]D[0, 0⋯0]0Rosenbrock[-2.048,2.048]D[1, 1⋯1]0Rastrigrin[-5.12,5.12]D[0, 0⋯0]0Griewank[-600,600]D[0, 0⋯0]0


## 5.2. Parameter Settings for the Involved Algorithms

Experiment was conducted to compare five algorithms, namely, the original BFO, the simple real-coded GA, the PSO with inertia weight, and the proposed CBFO-S and CBFO-H on the four benchmark functions with 10 dimensions. The parameters setting for BFO, CBFO-S, and CBFO-H are summarized in Table2.Table 2
Parameters of the BFO algorithms.
TypeBFOCBFO-SCBFO-HS505050Ns444Nc100100—Nre5——Ned2——Np—10—C10-3×R——Ped0.10.10.1Cinitial—10-2×R—α—1010CL——10-2×RCS——10-4×RNcs1——200Ncs2——800β——100The PSO algorithm we used is the standard one and the parameters were given by the default setting of the work in [18]: the acceleration factors c1 and c2 were both 2.0; a decaying inertia weight ω starting at 0.9 and ending at 0.4 was used. The population size was set at 50 for the PSO algorithm.The GA algorithm we executed is a real-coded Genetic Algorithm with intermediate crossover and Gaussian mutation. The population of the GA is 50 and all the control parameters, for example, mutation rate, crossover rate, and so forth, were set to be the same of [19].


## 5.3. Simulation Results for Benchmark Functions

This experiment runs 30 times respectively for two proposed CBFO variants, the original BFO, the real-coded GA, and the Particle Swarm Optimization on each benchmark function. The total numbers of chemotactic steps (or iterations) were set to be 1000. Table3 lists the experimental results (including the best, worst, mean, and standard deviation of the function values found in 30 runs) for each algorithm on functions f1~f4. If the average optimum value or error is less than 10-10, it is shown as 0 in the table. Figure 4 shows the search progresses of the average values found by all algorithms over 30 runs for functions f1~f4.Table 3
Comparison among CBFO-H, BFO, PSO, and GA on 10-D problems.
10DBFOCBFO-SCBFO-HPSOGAf1Best6.05970003.1142e-004Worst30.49560000.0345Mean19.63310000.0118Std5.40900000.0094f2Best8.90810.164500.01967.8064Worst62.24450.59032.5879e-0074.07359.8140Mean12.09910.34921.4813e-0070.72948.6634Std9.50470.09664.6694e-0081.49640.5557f3Best9.95051.101102.98493.3034Worst53.72859.06940.097525.86897.0136Mean36.35134.88440.011110.84504.9512Std10.58181.64190.02574.59561.1516f4Best35.569400.138527.13320.1679Worst132.10650.13280.440179.74060.6318Mean99.77750.06470.270262.97370.3439Std24.84970.03080.084612.25810.1538Convergence results of all algorithms.
(a)
Sphere(b)
Rosenbrock(c)
Rastrigrin(d)
GriewankFrom the results, we observe that the proposed two CBFO algorithms achieved significantly better performance on all benchmark functions than the original BFO algorithm. CBFO-S surpasses all other algorithms on function 1, which is the unimodal function that adopted to assess the convergence rates of optimization algorithms. The CBFO-H performs better on all multimodal functions when the other algorithms miss the global optimum basin. That is, CBFO-H successfully avoids falling into local optima and continues to find better results even after the PSO, GA, and BFO seem to have stagnated. The CBFO-S achieved almost the same performance as the CBFO-H on multimodal functionsf2~f4. The Griewank function is a good example.As we can see in Figure4, in CBFO model, under the influence of the serial heterogeneous cooperative approach, the bacteria colony starts exploring the search space at the initial phase. That is, the bacterial colony do not waste much time before finding the promising regions that contains the local optima because of the large run-length unit C, which encourages long-range exploration. In the succeeding phases, by decreasing C, the bacteria slow down near the optima to pursue the more and more precise solutions. The search performance of the algorithms tested here is ordered as CBFO-S=CBFO-H>PSO=GA>BFO.


## 5.4. Bacterial Behaviors in CBFO Model

In order to further analyze the cooperative foraging behaviors of the proposed CBFO model, we run two simulations based on CBFO-S algorithm. In both simulations, we excluded the reproduction, elimination, and dispersion events to illustrate the bacterial behaviors clearly. In both cases, it shows the positions of the bacterial colony on certain chemotactic steps, where each white circle represents a bacterium. The evolution process proceeds 400 chemotactic steps, and we chooseS=50,Ns=4,Nc=100,Np=4,Cinitial=0.1, and α=10.In the first simulation, the population evolution of the CBFO-S was simulated on 2D Sphere function, which is illustrated in Figure5. Initially, in Figure 5(a), we see that the bacteria colony is distributed randomly over the nutrient map defined by the 2D Sphere function. In Figure 5(b), we can observe that, at the end of the first phase, all the bacterial colony members have found the basin that contains the global optimum of Sphere function and move around it. In the second and third phases (Figures 5(c) and 5(d)), the bacterial colony reinitialized in this basin and then exploit the global optimum. In the final phase (Figure 5(e)), we can observe that all the bacteria have converged to the global optimum of Sphere function. In Figure 5(f), we have also drawn the associated evolution of the run-length unit C of this bacterial colony along its search in the fitness landscape. This provides an intuitive explanation of what is happening during the search of the proposed cooperative bacterial foraging algorithm.Population evolution of CBFO on 2D Sphere function in 400 chemotactic steps.
(a)
t=0(b)
t=100(c)
t=200(d)
t=300(e)
t=400(f)
EvolutionofCWe found a similar pattern in the second simulation shown as in Figure6, where the bacteria colony pursue the valleys and avoid the peaks of the multimodal 2D Rastrigrin function. In the first phase (Figures 6(a) and 6(b)), starting from their random initial positions, the bacterial colony explore many regions of the nutrient map defined by Rastrigrin function. In the second and third phases (Figures 6(c) and 6(d)), the bacterial colony find many local optima of Rastrigrin function, including the global optimum. Then, in the final phase (Figure 6(e)), we can observe that all the bacteria have converged to several local optima and the global optimum of Rastrigrin function. The associated evolution of the run-length unit C is shown as in Figure 6(f).Population evolution of CBFO on 2D Rastrigrin function in 400 chemotactic steps.
(a)
t=0(b)
t=100(c)
t=200(d)
t=300(e)
t=400(f)
EvolutionofC


## 6. Conclusions

This paper applied the cooperative approaches to the Bacterial Foraging Optimization (BFO) and proposed the Cooperative Bacterial Foraging Optimization (CBFO) model with two variants, namely CBFO-S and CBFO-H, which can be classified into the serial heterogeneous cooperation on the implicit space decomposition level and the serial heterogeneous cooperation on the hybrid space decomposition level, respectively. These cooperative approaches used here resulted in a significant improvement in the performance of the original Bacterial Foraging Optimization algorithm in terms of convergence speed, accuracy, and robustness.Four widely used benchmark functions have been used to test the CBFO algorithms in comparison with the original BFO, the stand PSO, and the real-coded GA. The simulation results are encouraging. The CBFO-S and CBFO-H are definitely better than the original BFO for all the test functions and appear to be comparable with the PSO and GA.There are ways to improve our proposed algorithms. The further research efforts should focus on the tuning of the user-defined parameters for CBFO algorithms based on extensive evaluation on many benchmark functions and real-world problems. Moreover, the self-adaptive mechanisms for the parameters of CBFO may be worthy to undertake to obtain some additional improvements (e.g., which can remove the need of specifying a particular parameter setting of CBFO for a particular problem).



---

*Source: 815247-2009-11-05.xml*