## 3 Optimization Method
### Bat Algorithm  
BA is a heuristic algorithm proposed by [PERSON] in 2010 and is inspired by the echolocation behavior of micro-bats [19]. BA simulates bats' preying process via echolocation in the natural world. According to the distance between the prey and bats, they adjust the ultrasonic wavelength and the frequency of the firing pulse, capturing their prey eventually. The earlier studies have shown that BA can solve constrained and unconstrained optimization problems with superior efficiency and robustness [20; 21]. Although BA was proposed recently, there are many variants of BA that have been successfully applied to different fields and problems, such as the traveling salesman problem [22; 23], vehicle routing problem [24; 25], 0-1 knapsack problem [26; 27], and unmanned aerial vehicle path planning problem [28]. Hence, the BA is applied in this work. The iterative update of BA consists of the position of bats, velocity, frequency update operation, mutation update operation, the bat loudness and emission frequency update. In one of our previous works [29], a modified BA was proposed which can be expressed as  
\[f_{i,t+1}=\left\{\begin{array}{ll}f_{i,t}+(f_{\text{rand}}-f_{i,t})/\theta,f_ {\text{rand}}>f_{i,t}&f_{i,t}\in[0,1],\ \ f_{\text{rand}}\in[0,1]\\ f_{i,t},\,f_{\text{rand}}\leq f_{i,t}&\theta>1\end{array}\right. \tag{9}\]  
\[v_{i,t+1}=v_{i,t}+(x_{i,t}-x_{*,t})\times f_{i,t} \tag{10}\]  
\[x_{i,t+1}=x_{i,t}+v_{i,t+1} \tag{11}\]  
Assuming \(x_{i,t}=[x_{i,t,1},\,x_{i,t,2},\,\cdots,\,x_{i,t,w}]\) has w dimensions, the corresponding velocity \(v_{i,t}=[v_{i,t,1},\,v_{i,t,2},\,\cdots,v_{i,t,w}]\). \(x_{i,t,j}\) and \(v_{i,t,j}\) are both positive integers and \(x_{i,t,j}\in[1,w]\), \(v_{i,t,j}\in[1,w]\), \(j=1,\ 2,\ \cdots,w\). From (9) to (11), it can be seen that the bat's position is updated by the velocity and frequency so that a better position can be found iteratively. In order to improve the searching capacity of bats, a variation operation is introduced which can be expressed mathematically as follows:  
\[x_{i,t+1}=\text{Vary}(x_{i,t}) \tag{12}\]  
The specified procedure of (12) is that of inserting one position, \(x_{i,t}\), into another position. Then, other positions will make the corresponding movement. By doing so, the diversity of bats is increased, which is helpful for increasing the possibility of finding a global optimal solution. To trigger the variation operation and facilitate the position updating process, the pulse loudness, \(A_{i,t+1}\), and emission frequency, \(R_{i,t+1}\), are designed in BA, which work as two pointers. The mathematical expressions are expressed in the following:\[A_{i,t+1}=\alpha A_{i,t},\ A_{i,0}\in[0,1],\ 0<\alpha<1 \tag{13}\]  
\[R_{i,t+1}=R_{i,0}\times[1-\exp(-\gamma t)],\ R_{i,0}\in[0,1],\ \gamma>0 \tag{14}\]  
where \(R_{i,0}\) is the initial emission frequency of bat \(i\). The main responsibilities of \(A_{i,t+1}\) and \(R_{i,t+1}\) are to balance the global searching ability and the local searching ability of BA. The flow chart of BA is shown in Figure 1.  
As can be seen in Figure 1, there are mainly 8 steps in the BA, which are specified in the following:  
Step 1: Initialization of the first population of bats (the population size is Q), including the position, velocity, frequency, loudness, and pulse emission rate of bat \(i\);  
Step 2: Calculate the fitness of each bat and obtain the global optimal bat position;  
Step 3: Update the velocity, frequency, and position of each bat;  
Step 4: If rand() \(>R_{i}\), the variation operation will be adopted to update bat \(i\);  
Step 5: If the new position of bat \(i\) is better than the old one and rand() \(>R_{i}\), then the new position becomes the new current position of bat \(i\), and the loudness and pulse emission rate of bat \(i\) are updated by updated operations of loudness and pulse emission rate;  
Step 6: Update the global optimal position of bats;  
Step 7: If the termination criterion is not reached, then go to Step 3;  
Step 8: Output the best solution of the OWFCCLP.