# A Novel Complex-Valued Encoding Grey Wolf Optimization Algorithm
## 2 Grey Wolf Optimization (GWO)  
The GWO algorithm simulates the hunting and social leadership of grey wolves in nature [16]. The algorithm is simple, robust, and has been used in various complex problems. In the GWO algorithm, the colony of grey wolves is divided into four groups: alpha (\(\alpha\)), beta (\(\beta\)), delta (\(\delta\)), and omega (\(\omega\)). In every iteration, the first three best candidate solutions are named \(\alpha\), \(\beta\), and \(\delta\). The rest of the grey wolves are considered as \(\omega\), and are guided by \(\alpha\), \(\beta\), and \(\delta\) to find the better solutions. The mathematical model of the \(\omega\) wolves' encircling process is as follows [16]:  
\[\overset{\rightarrow}{D}=\left|\overset{\rightarrow}{C}\cdot\overset{ \rightarrow}{X}_{p}\left(t\right)-\overset{\rightarrow}{X}\left(t\right)\right| \tag{1}\]  
\[\overset{\rightarrow}{X}\left(t+1\right)=\overset{\rightarrow}{X}_{p}\left(t \right)-\overset{\rightarrow}{A}\cdot\overset{\rightarrow}{D} \tag{2}\]  
where \(t\) indicates the current iteration, \(\overset{\rightarrow}{C}=2\cdot\overset{\rightarrow}{r}_{2}\), \(\overset{\rightarrow}{A}=2\overset{\rightarrow}{a}\cdot\overset{ \rightarrow}{r}_{1}-\overset{\rightarrow}{a}\), \(\overset{\rightarrow}{X}_{p}\) is the position vector of the prey, \(\overset{\rightarrow}{X}\) indicates the position vector of a grey wolf, \(\overset{\rightarrow}{a}\) is gradually decreased from 2 to 0, and \(r_{1}\), \(r_{2}\) are random numbers over range [0, 1]. It should be noted here that, during optimization, the \(\omega\) wolves update their positions around \(\alpha\), \(\beta\), and \(\delta\). Therefore, \(\omega\) wolves are able to reposition with respect to \(\alpha\), \(\beta\), and \(\delta\). The mathematical model of \(\omega\) wolves readjusting the positions is as follows [16]:  
\[\overset{\rightarrow}{D}_{\alpha}=\left|\overset{\rightarrow}{C}_{1}\cdot \overset{\rightarrow}{X}_{\alpha}-\overset{\rightarrow}{X}\right|,\ \overset{\rightarrow}{D}_{\beta}=\left|\overset{\rightarrow}{C}_{2}\cdot \overset{\rightarrow}{X}_{\beta}-\overset{\rightarrow}{X}\right|,\ \overset{ \rightarrow}{D}_{\beta}=\left|\overset{\rightarrow}{C}_{3}\cdot \overset{\rightarrow}{X}_{\delta}-\overset{\rightarrow}{X}\right| \tag{3}\]  
\[\overset{\rightarrow}{X}_{1}=\overset{\rightarrow}{X}_{\alpha}-\overset{ \rightarrow}{A}_{1}\cdot(\overset{\rightarrow}{D}_{\alpha}),\ \overset{ \rightarrow}{X}_{2}=\overset{\rightarrow}{X}_{\beta}-\overset{ \rightarrow}{A}_{2}\cdot(\overset{\rightarrow}{D}_{\beta}),\ \overset{ \rightarrow}{X}_{3}=\overset{\rightarrow}{X}_{\delta}-\overset{ \rightarrow}{A}_{3}\cdot(\overset{\rightarrow}{D}_{\delta}) \tag{4}\]  
\[\overset{\rightarrow}{X}(t+1)=\frac{\overset{\rightarrow}{X}_{1}+\overset{ \rightarrow}{X}_{2}+\overset{\rightarrow}{X}_{3}}{3} \tag{5}\]  
where \(\overset{\rightarrow}{X}_{\alpha}\) is the position of the alpha, \(\overset{\rightarrow}{X}_{\beta}\) is the position of the beta, \(\overset{\rightarrow}{X}_{\delta}\) is the position of the delta, \(\overset{\rightarrow}{C}_{1}\), \(\overset{\rightarrow}{C}_{2}\), \(\overset{\rightarrow}{C}_{3}\) and \(\overset{\rightarrow}{A}_{1}\), \(\overset{\rightarrow}{A}_{2}\), \(\overset{\rightarrow}{A}_{3}\) are all random vectors, \(\overset{\rightarrow}{X}\) is the position of the current solution, and \(t\) indicates the number of iterations. As mentioned before, \(\omega\) wolves update their positions based on positions of \(\alpha\), \(\beta\), and \(\delta\). There are two vectors: \(\overset{\rightarrow}{A}\) and \(\overset{\rightarrow}{C}\) that are random and adaptive vectors which help the algorithm to escape from local optima. When \(|A>1|\), half of the iterations are devoted to exploration. The range of \(C\) is \(2\leqslant C\leqslant\ 0\). The vector \(C\) also improves exploration when \(C>1\). In contrast, the other half of the iterations are dedicated to exploitation when \(|A|<1\), and the exploitation is also emphasized when \(C<1\).