## 2 Materials and Methods
### Improved Cuckoo Search Algorithm-Based ELM (ICS-ELM)  
#### 2.2.1 Improved Cuckoo Search (ICS) Algorithm  
The cuckoo search (CS) algorithm is approved as an efficient optimization method [22; 23]. The principle of CS algorithm is how a cuckoo can find an optimal nest to hatch the eggs by free search based on the obligate brood parasitism and Levy flights mechanism which is unique in nature. An important advantage of this algorithm is its simplicity. In fact, comparing with other population- or agent-based metaheuristic algorithms such as particle swarm optimization (PSO) and harmony search, there is essentially only a single parameter \(p_{\text{a}}\), which represents the probability to be found by the host, in CS (apart from the population size \(n\)). Therefore, it is very easy to implement.  
Its few parameters, simple operation, easy to realize, and good ability to search random paths are the main advantages of CS algorithm. Therefore, once the CS algorithm was proposed, it has been rapidly developed and applied to solve a variety of optimization problems. But at the same time, clearly, CS has some disadvantages such as slow convergence speed and lack of adaptability. We proposed an improved cuckoo search algorithm, named improved cuckoo search (ICS) algorithm [15], which introduces the cosine cyclic operator into the CS algorithm to realize the periodic change of \(p_{\text{a}}\) and an adaptive dynamic adjustment strategy for the search step size \(S\), which are described as follows.  
\[p_{a}(t)=p_{a,\max}\bigg{|}\cos\bigg{(}\frac{2\pi}{T}t\bigg{)}\bigg{|}+p_{a, \min} \tag{10}\]  
\[S=\frac{m}{bestX_{i-1}}\times\exp\bigg{(}-k\times\bigg{(}\frac{t}{t_{\max}} \bigg{)}^{p}\bigg{)}+S_{\min} \tag{11}\]  
where, in Equation (10), \(T\) is the cycle of the periodic operator; \(t\) is the evolution generation of the current iteration; \(p_{\text{a,max}}\) and \(p_{\text{a,min}}\) are the dynamic control parameters of \(p_{\text{a}}\) which are equal to 0.75 and 0.1 respectively. In Equation (11), \(m\in(0,1)\) is a regulatory factor; \(bestX_{i-1}\) is the optimal nest position of the last generation groups; is the limiting factor; \(t\) and \(t_{\max}\) are the current iteration number and the maximum iteration number; \(S_{\min}\) is the minimum search step; \(p\) is an integer from 1 to 30.  
Based on the above analysis and improvements, the ICS algorithm steps can be described as follows:  
Step 1: Set the objective function and initialization function; generate initial population of \(n\) host nests \(x_{i}\) (\(i=1,\,2,\,\ldots,\,n\)); set the size of population, the dimension of independent variables, the maximum iteration number, the maximum and minimum probability of being detected.  
Step 2: Calculate the current optimal nest position by putting \(x_{i}\) into the objective function.  
Step 3: Record the location of the nest, and use Equation (11) to calculate the current step size \(S\), then use Equation (12) to update the location of the nest.  
\[x_{i}^{t+1}=x_{i}^{t}+\alpha\oplus S,\,\,i=1,\,2,\ldots,\,n \tag{12}\]where, the product of \(\oplus\) is a kind of calculation means entrywise multiplications; \(\alpha\)>0 is a step size control factor.  
Step 4: Compare the current value of the objective function with the last value; Update the value if the function value is better than the previous one; otherwise, keep it unchanged.  
Step 5: After updating the nest location, choose a random number \(\varepsilon\in[0,1]\), which obeys a uniform distribution; if \(\varepsilon>p_{\mathrm{a}}\), randomly change the value of \(x_{i}^{t+1}\); otherwise leave as it is. Keep the optimal nest position at last.  
Step 6: Return to Step 2 if the iteration number has not reached the maximum iteration number; otherwise, continue to the next step.  
Step 7: Output the optimal nest location.  
You can find more details of the ICS algorithm in [PERSON] et al. [15].