# Beam Training for Millimeter-Wave Communication Based on Tabu Table Enhanced Rosenbrock Algorithm
## 5 Tabu-Search-Based Enhanced Rosenbrock Algorithm
### Tabu Search
\begin{split}& U_{1}^{(i)}=[index(v_{t-1},\;h_{t}),\;index(v_{r}, \;h_{r})],\;U_{2}^{(i)}=[index(v_{t+1},\;h_{t}),\;index(v_{r},\;h_{r})]\\ & U_{3}^{(i)}=[index(v_{t},\;h_{t-1}),\;index(v_{r},\;h_{r})],\; U_{4}^{(i)}=[index(v_{t},\;h_{t+1}),\;index(v_{r},\;h_{r})]\\ & U_{5}^{(i)}=[index(v_{t},\;h_{t}),\;index(v_{r-1},\;h_{r})],\; U_{6}^{(i)}=[index(v_{t},\;h_{t}),\;index(v_{r+1},\;h_{r})]\\ & U_{7}^{(i)}=[index(v_{t},\;h_{t}),\;index(v_{r},\;h_{r-1})],\; U_{8}^{(i)}=[index(v_{t},\;h_{t}),\;index(v_{r},\;h_{r+1})]\end{split} \] (14)
2. Tabu table The tabu table \(T(x)\) is a container for storing tabu solutions, so it is not feasible to search for this solution placed in the tabu table until the solution is removed. During the tabu search process, the first step is to select the best solution among the neighborhood \(v_{R}\big{(}x^{(i)}\big{)}\) as the starting point for the next iteration, then, in the second step, the algorithm determines whether the new solution is in \(T(x)\). The solutions in the tabu table are updated each time when the tabu search iterate once, the solutions in the tabu table are updated in a FIFO style, the nearest solution is placed at the blank top of the \(T(x)\), and the earliest solution is released from the \(T(x)\). Let us denote \(l_{erg}\) and \(\big{|}T(x)\big{|}\) as the average number of iterations before the same solution vector reappears, and the length of the tabu table. The size of \(l_{erg}\) and \(\big{|}T(x)\big{|}\) will affect the performance of the algorithm. If the size is too large, the complexity will be increased. If it is too small, the success rate will be reduced. \(l_{erg}\) and \(\big{|}T(x)\big{|}\) will be set to constants through simulation experiments. Let us define the tabu period \(S\), a non-negative integer parameter, as follows: (1) The new solution vector has not been previously searched. In this case, the value of variable \(S\) is not updated. (2) The new solution vector has been searched previously. We update the value of variable by comparing with \(S\). Also, the value of \(S\) is updated as follows: \[S=\left\{ \begin{array}{ll}S+1,&S\leq l_{erg}\\ S-1,&S>l_{erg}\end{array} \right.\] (15) When the tabu period \(S\) of the tabu object is non-zero, the corresponding tabu object is prohibited [14]. 3. Aspiration criterion The aspiration criterion needs to define to be defined based on an aspiration function \(A(x)\). In this paper, the object value of the best solution has been obtained before the current iteration is selected as the aspiration function. When aspiration criterion is meet: \(sn\Big{(}x^{(i)}\big{)}>A(x)\), even if \(x^{(i)}\) is in the \(T(x)\), we still select it as the starting point for the next iteration. 4. Stopping criterion We define _iter_ as a parameter to indicate how long (in terms of the number of iterations) the global optimal solution has not been updated. Based on the parameter _iter_, the algorithm iteration will be stopped when the number of iterations reaches the pre-defined maximum number of iterations max_iter_, i.e., _iter_\(\geq\) max_iter_[25].