## 2 Harmony Search and Several Variants  
### Harmony Search Algorithm  
The harmony search algorithm is a new population-based metaheuristic optimization algorithm [1], which is inspired by the improvisation process of music. The improvisation process is modeled as an iterative optimization method and the musicians' musical instruments improvise to produce a better harmony [36]. The basic steps are described in detail in Algorithm 1. ```
//Initialize the problem and algorithm parameters// \(f(x)\): objective function HMS: harmony memory size HMCR: harmony memory considering rate PAR: pitch adjusting rate bw: bandwidth DIM: dimension of decision variable MAX_NFE: maximum number of function evaluations \(L_{i},U_{i}\): the lower and upper bounds of the \(i\)-th component for the decision vector //Initialize the harmony memory \((x^{1},x^{2},\cdots,x^{HMS})\)// \(x^{j}_{i}=L_{i}+rand(0,1)\cdot(U_{i}-L_{i})\) //Improvise a new harmony \(x^{new}=(x^{new}_{1},x^{new}_{2},\cdots,x^{new}_{DIM})\)// for each \(i\in[1,DIM]\) do if \((rand(0,1)<HMCR)\) then \(x^{new}_{i}=x^{a}_{i},where\ a\in\{1,2,...,HMS\}\) if\((rand(0,1)<PAR)\) then \(x^{new}_{i}=x^{new}_{i}+rand(-1,1)\times bw\) endif else \(x^{new}_{i}=L_{i}+rand\cdot(U_{i}-L_{i})\) endif endfor //Update the harmony memory// if \(f(x^{new})<f(x^{worst})=\max\limits_{j=1,2,...,HMS}f(x^{j})\), then \(x^{worst}=x^{new}\). //Check the stopping criterion// If the termination condition is met, stop and output the best individual. Otherwise, the process will repeat from Step 3. ```  
**Algorithm 1**General Framework of the Harmony Search (HS). ```
//Initialize the problem and algorithm parameters// \(f(x)\): objective function HMS: harmony memory size HMCR: harmony memory considering rate \(\mathit{PAR}\): pitch adjusting rate bw: bandwidth DIM: dimension of decision variable MAX_NFE: maximum number of function evaluations \(L_{i},U_{i}\): the lower and upper bounds of the \(i\)-th component for the decision vector //Initialize the harmony memory \((x^{1},x^{2},\cdots,x^{HMS})\)// \(x^{j}_{i}=L_{i}+rand(0,1)\cdot(U_{i}-L_{i})\) //Improvise a new harmony \(x^{new}=(x^{new}_{1},x^{new}_{2},\cdots,x^{new}_{DIM})\)// for each \(i\in[1,DIM]\) do if \((rand(0,1)<HMCR)\) then \(x^{new}_{i}=x^{a}_{i},where\ a\in\{1,2,...,HMS\}\) if\((rand(0,1)<PAR)\) then \(x^{new}_{i}=x^{new}_{i}+rand(-1,1)\times bw\) endif else \(x^{new}_{i}=L_{i}+rand\cdot(U_{i}-L_{i})\) endif endfor //Update the harmony memory// if \(f(x^{new})<f(x^{worst})=\max\limits_{j=1,2,...,HMS}f(x^{j})\), then \(x^{worst}=x^{new}\). //Check the stopping criterion// If the termination condition is met, stop



### The Improved Harmony Search Algorithm (IHS)

In the canonical harmony search algorithm, the probability of \(PAR\) and \(bw\) are constant. [PERSON] et al. [3] proposed an improved harmony search algorithm, called IHS, which mainly introduced the dynamic change of \(PAR\) and \(bw\) using the following equations. \[PAR(NFE)=PAR_{min}+\frac{PAR_{max}-PAR_{min}}{MAX_{NFE}}\times NFE \tag{1}\]

\[bw(NFE)=bw_{max}exp\left(\frac{ln\frac{bw_{min}}{bw_{max}}}{MAX_{NFE}}\times NFE\right) \tag{2}\]

where \(PAR_{max}\) is the maximum adjusting rate; \(PAR_{min}\) is the minimum adjusting rate; \(bw_{max}\) is the maximum bandwidth; \(bw_{min}\) is the minimum bandwidth. \(MAX_{NFE}\) is the maximum number of function evaluation and \(NFE\) is the current number of function evaluation. ### A Self-Adaptive Global-Best Harmony Search (SGHS)

The SGHS [4] employs a new improvisation scheme and an adaptive parameter tuning method. To modify pitch adjustment rule, \(x_{i}^{new}\) is assigned with the corresponding decision variable \(x_{i}^{best}\) from the best harmony vector. In addition, the concept of a learning period is introduced. Parameters HMCR and PAR are dynamically adapted to a suitable range by recording their historical values corresponding to the generated successful harmonies entering the nest harmony memory. Furthermore, \(bw\) is dynamically updated using the following equation. \[bw(NFE)=\left\{