1. Introduction
The cuckoo search algorithm has been used to optimize solutions in cloud computing, data mining, software testing, IoT, and pattern recognition. Because there is only one parameter, $Pa$, this algorithm is very simple to implement.
In this tutorial, we’ll learn about cuckoo search algorithms. But first, let’s take a quick look at meta-heuristics.
2. Metaheuristics
Metaheuristics are similar to heuristics and they seek promising solutions to problems. However, metaheuristics are generic and they can deal with a variety of problems.
In the context of metaheuristics, the characteristics of “non-measurable success” and “reasonable execution” remain the same as discussed for heuristics. But metaheuristics replace the problem-based design principle with the problem-independent design principle. Generally, metaheuristic algorithms are designed for global optimization.
3. Cuckoo Search Algorithm
Yang and Deb created the cuckoo search algorithm in 2009. It was inspired by the cuckoo birds. Cuckoo birds lay their eggs in the nests of the other host birds. The first fundamental motivation for developing a new optimization algorithm is cuckoo egg laying and breeding. If the host bird recognizes the eggs as not being their own then it will either throw the eggs away from its nest or simply empty the nest and build a new one.
Each egg in a nest represents a solution. Cuckoo egg represents a new and good option. The answer obtained is a new option based on the existing one with some characteristics modified. In its most basic form, each nest has one cuckoo egg, and each nest with multiple eggs represents a set of options. Cuckoo search has idealized this breeding behavior. Cuckoo search algorithm can be applied to a wide range of optimization problems. This optimization algorithm improves efficiency, accuracy and convergence rate.
To begin, each cuckoo can only lay one egg at a time. Then deposit it in a randomly selected nest. Secondly, the best nests with high-quality eggs will be passed down to future generations. Thirdly, the number of available host nests is fixed:
4. Steps of the Cuckoo Search Algorithm
Now, let’s discover the steps of the cuckoo search algorithm.
4.1. Initialization
Cuckoo birds prefer to lay their eggs in the nests of other birds.
4.2. Levy Flight
It is a random flight or walk. The steps are defined in terms of step lengths that have a certain probability distribution with random directions. This type of flight is observed in different animals and insects. The following movement is determined by the current position.
4.3. Fitness Calculation
Calculation of fitness is achieved by using the fitness function to find the best solution. Nest is chosen randomly. The fitness of the cuckoo egg (new solution) is then compared to that of the host eggs (solutions) in the nest. If the value of the cuckoo egg’s fitness function is less than or equal to the value of the randomly chosen nest’s fitness function, the randomly chosen nest is replaced by the new solution.
4.4. Termination
The fitness function compares the solutions in the current iteration and only the best solution is passed further. If the number of iterations is less than the maximum, the best nest is retained. All cuckoo birds are ready for their next actions after completing the initialization, levy flight, and fitness calculation processes. The cuckoo search algorithm will be terminated once the maximum number of iterations has been reached. These steps are applicable to any optimization problem. In such cases, each cuckoo egg and cuckoo nest play an important role.
5. Coding for the Cuckoo Search Algorithm
After understanding the concept and steps of the cuckoo search algorithm, let’s look at the pseudocode of the cuckoo search algorithm. The general pseudocode for the cuckoo search algorithm is given as follows:
algorithm CuckooSearch():
// INPUT
// n = initial population size
// Pa = fraction of worse nests to be abandoned and replaced
// Max iterations = the maximum number of iterations
// f = the objective function to optimize ()
// OUTPUT
// The best solution found
Generate the initial population of n host nests Xi (i = 1, 2, ..., n)
while t < Max iterations:
Get a cuckoo randomly by Levy flights
Evaluate its quality fitness Fi
j <- choose a nest among n randomly
if Fi > Fj:
Replace j by the new solution
if A fraction (Pa) of worse nests are abandoned and new ones are built:
Keep the best solutions
Rank the solutions and find the current best
Postprocess results and visualization
We have multiple implementations of the cuckoo search algorithm in different programming languages, such as Python and Matlab.
6. Use Cases of the Cuckoo Search Algorithm
The cost and vulnerability optimization in the cloud using the cuckoo search algorithm with Levy flights: When minimizing the cost and vulnerabilities, some risks and threats are introduced. As a result, the set of techniques is used to reduce the number of vulnerabilities and security threats on cloud-based information systems. To reduce the risk of proxy attacks, the distance between the vulnerable node and a potential victim node is increased.
Cuckoo search algorithm for antenna array design: A conical antenna array is useful in satellite communications, submarine communications, and point-to-point communications. Cuckoo search algorithm can be used to reduce the antenna array parameters or elements such as relative current, phase of elements, and interspacing elements. The main goal is to suppress the side lobes and null control in specific directions of the radiation pattern.
Feature selection using the cuckoo search algorithm: Data elements are known as features, variables or attributes. Feature selection is a data pre-processing method used in classification. It is used to remove unnecessary and duplicated attributes from the datasets provided. Accuracy is increased, and training time is drastically reduced. The main goal is to minimize the number of characteristics while improving the classification performance. The binary vector is used to solve the problem of which features to select or not in a specific problem. In this case 0 indicates not to select and 1 indicates to select the relevant feature.
7. Conclusion
In this tutorial, we learned about a metaheuristic algorithm called the cuckoo search algorithm. First and foremost, we refreshed our knowledge about metaheuristics. Then, we looked into the implementation steps of the cuckoo search algorithm. Finally, we discussed the use cases of cuckoo search algorithm.