## 3. Tabasco Algorithm--Two-Level Sorting and Update Rules Inspired by the Grey Wolf Optimizer
The updating process consists of a few steps. First, structural analysis is performed and the compliances values for \(N\) cells are computed. Next, the compliances are sorted in ascending order and divided into three subsets: \(N_{1}\) cells having the lowest values, \(N\)-\(N_{2}\) cells with the largest values, and the remaining cells having intermediate values of compliances. The cells from the first subset have-\(C\) value assigned, the ones from the second subset have a value of \(C\), whereas for cells from the intermediate interval, a function \(f(i)\) of local compliances is defined. Finally, the function mapping local compliances, which utilize results of the **global sorting**, take the form of Equation (7), where \(i\) denotes a cell index:  
\[F(i)= \begin{cases}-C\;\;if\;\;i<N_{1}\\ f(i)\;\;\;if\;\;N_{1}\leq i\leq N_{2}\\ C\;\;\;if\;\;i>N_{2}\end{cases} . \tag{7}\]Having finished with the analysis at the global level, the local rules of design variables updating can be established. Therefore, for each cell, the neighboring cells are taken into consideration. In the former papers, in dealing with the implementation of Cellular Automata rules, in the process of topology generation, information gathered within all cells forming neighborhood has been considered. The novel proposal, inspired by the grey wolf optimizer strategy, where the process of updating design variables refers to the positions of the three best fitted wolves, assumes that information from only three of the most influential cells is the basis for forming the update rule. Hence, on the local level, for each cell, the compliances are sorted as absolute values within the cell neighborhood. As the result of **local sorting**, the three values \(F_{1},F_{2},F_{3}\) are chosen, and these are the basis from which to build the CA rule for the updating the design variables. The rule then takes the following final form:  
\[d_{i}^{new}=d_{i}+\frac{F_{1}+F_{2}+F_{3}}{3}m. \tag{8}\]  
Updating design variables results in either adding material to or removing it from a cell \(i\). The quantity \(m\) in Equation (8) limits the possible change of the design variables' values. The function \(f(i)\), introduced in Equation (7), is adopted here in the form of Equation (9):  
\[f(i)=C\frac{\tanh\Bigl{[}\beta\Bigl{(}\frac{i-N_{1}}{N_{2}-N_{1}}-\frac{1}{2} \Bigr{)}\Bigr{]}}{\tanh\Bigl{(}\frac{1}{2}\beta\Bigr{)}}. \tag{9}\]  
The above form enables flexibility of the function, which is controlled by the quantity \(\beta\). One can observe that \(\beta\) tending to zero \(f(i)\) approaches linear function, while for large values of \(\beta f(i)\), these are close to the step function. As mentioned above, \(f(i)\) is defined for cells from the interval \([N_{1},N_{2}]\). Its width can be altered in the iteration process influencing the elimination of void cells if it is wide and forcing the elimination of cells of intermediate densities if it is narrow (for details, see [44]). As to the move limit \(m\), it plays in (8) the role of a multiplier. It becomes active if the updated design variable value is outside the admissible interval:  
\[\max(d_{min},d_{i}-m)\leq d_{i}^{new}\leq\min(1,d_{i}+m). \tag{10}\]  
The \(m\) value is kept constant in the iteration process. The value of 0.2 is a common choice in the literature, e.g., [40; 45]. The already-gathered experience from dealing with setting the move limit is that for its small values, the topology generation process slows down and the tendency of creating thin lines of generated topology can be observed. On the other hand, large values of the move limit change the structure topology and the compliance value, which may also cause the topology generation process to diverge.