## 2 Method
### Evolution Algorithms
#### 2.2.1 Self-Adaptive Dynamic Differential Evolution  
The SADDE is based on the DDE scheme with the ability to automatically adjusting scaling factors without increasing the time complexity [28; 35]. The SADDE algorithm starting from the initial population consists of a randomly generated set of individual coordinates that represent each location of the transmitter antenna. The SADDE algorithm contains the following steps:  
Step 1: According to the problem, initialize the population of a set of D-dimensional vectors in the starting population, parameter space is \(\{X_{i}:i=1,\;2,\cdots,M_{p}\}\), where \(D\) is the number of parameters to be optimized, and \(M_{p}\) is the population size. Step 2: Evaluate the objective function (7) for each individual in the population. Step 3: The mutation operation is performed by an arithmetic combination of individuals. Each trial vector \(V_{i}\) is generated from the parent's generation parameter vector \(X_{i}\) according to the following equation:  
\[\left(V_{i}^{g+1}\right)_{j}=\left(X_{i}^{g}\right)_{j}+\alpha_{i}^{g}.[(X_{ best}^{g})_{j}-(X_{i}^{g})_{j}]+\beta_{i}^{g}.[(X_{m}^{g})_{j}-(X_{n}^{g})_{j}] \tag{8}\]  
\[m,n\in[0,M_{p}-1],\;m\
eq n,\]  
where \(\alpha_{i}^{g}\) and \(\beta_{i}^{g}\) are the scaling factors associated with the vector differences \((X_{best}^{g}-X_{i}^{g})\) and \((X_{m}^{g}-X_{n}^{g})\), respectively. The disturbance vector \(V\) of the mutation mechanism consists of the parameter vector \(X_{i}^{g}\), the best particle \(X_{best}^{g}\), and two randomly selected vectors, \(\alpha_{i}^{g}\) and \(\beta_{i}^{g}\), which are adjusted automatically. Control parameters in SADDE continue to evolve from generation to generation. The new vector is generated by using the evolution values of the control parameters. During the selection process, these new carriers have a better chance of surviving and passing improved control parameters to the next generation. Each generation's control parameters for each individual here are self-adjusting according to the following scheme:  
\[\alpha_{i}^{g+1}=\left\{ \begin{array}{cl}\alpha_{l}+rand_{1}.\alpha_{u},&if \;rand_{2}<0.1\\ \alpha_{i}^{g},&otherwise\end{array} \right., \tag{9}\]  
\[\beta_{i}^{g+1}=\left\{ \begin{array}{cl}\beta_{l}+rand_{3}.\beta_{u},&if\; rand_{4}<0.1\\ \beta_{i}^{g},&otherwise\end{array} \right., \tag{10}\]  
where \(\alpha_{l}\) and \(\beta_{l}\) are the lower limits of \(\alpha\) and \(\beta\), their values being set at 0.1. \(\alpha_{u}\) and \(\beta_{u}\) are the upper limits of \(\alpha\) and \(\beta\), and their values are set at 0.9 [28; 36]; \(rand_{1}\), \(rand_{2}\), \(rand_{3}\), and \(rand_{4}\) are random numbers with values uniformly distributed between 0 and 1. Step 4: Perform crossover operations to increase the diversity of parameter vectors. The cross vector \(u_{i}\) is replaced by the current vector \(X_{i}^{g}\) or trial vector \(V_{i}\) based on the probability of crossover \(Crs_{i}^{g}\). It can be expressed as follows:  
\[(u_{i}^{g+1})_{j}=\left\{ \begin{array}{cl}(V_{i}^{g+1})_{j},&\kappa(j)<Crs_{ i}^{g}\\ (X_{i}^{g})_{j},&\kappa(j)\geq Crs_{i}^{g}\end{array} \right., \tag{11}\]  
\[Crs_{i}^{g+1}=\left\{ \begin{array}{cl}rand_{5},&if\;rand_{6}<0.1\\ \par Crs_{i}^{g},&otherwise\end{array} \right., \tag{12}\]where \(\kappa(j)\) is the random number generated uniformly between 0 and 1. \(Crs_{i}^{g}\) is the crossover probability, \(Crs_{i}^{g}\in(0,1)\). \(Rand_{5}\) and \(rand_{6}\) are random numbers with the values uniformly distributed between 0 and 1. \(Crs_{i}^{g}\) is the crossover probability, \(Crs_{i}^{g}\in(0,1)\). The bigger the value of \(Crs_{i}^{g}\), the more rapidly the termination criteria can be reached. However, a smaller value of \(Crs_{i}^{g}\) increases the diversity of the parameter vectors. Step 5: The selection operation is used to generate offspring. Compare the parent vector \(X_{i}^{g}\) with the cross vector \(u_{i}^{g+1}\) and select the vector with the smaller objective function value as the next generation member.