## 2 System Specification
### Rules
#### 2.2.2 Oscillations Rule for \(\mathit{TR1}\)  
The tolerance factor \(\xi_{ND}\) provides a good static approach to avoid oscillations. For dynamic WSANs, where the number of available neighbors can change at any moment and for whatever reason, other approaches should be taken into consideration. In this case, we have defined an oscillation rule that avoids the triggering of task \(\mathit{TR1}\) in certain conditions that can cause an oscillation. Table 1 provides a summary of the analysis performed in the definition of this rule. On the left of Table 1 we can see the value of the previous iteration for \(\Delta cr\). In a linguistic way the possibilities for the change represented by \(\Delta cr\) are negative big (NB); negative small (NS); no change (ZV); positive small (PS); and positive big (PB). These five possibilities are then checked with the previous and actual values of \(e_{ND}\). Then, the table can be read as follows: _If the actual error on the node degree \((e_{ND}(k))\) is negative and the actual node degree \((ND(k))\) is greater than the adjusted desired node degree, then if there has been a \begin{table}
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|} \hline  & & \multicolumn{6}{c|}{\(\mathbf{zvn(\xi)}\)} \\ \cline{3-10}  & & \multicolumn{2}{c|}{\(\mathbf{\varepsilon_{ND}(k)=NV}\)} & \multicolumn{2}{c|}{\(\mathbf{\varepsilon_{ND}(k)=ZV}\)} & \multicolumn{2}{c|}{\(\mathbf{\varepsilon_{ND}(k)=PV}\)} \\ \cline{3-10}  & & \multicolumn{2}{c|}{\(\mathbf{ND(k)>ND_{R}}\)} & \multicolumn{2}{c|}{\(\mathbf{ND(k)\approx ND_{R}}\)} & \multicolumn{2}{c|}{\(\mathbf{ND(k)\approx ND_{R}}\)} \\ \cline{3-10}  & & \multicolumn{2}{c|}{\(\mathbf{NV}\)} & \multicolumn{2}{c|}{\(\mathbf{ZV}\)} & \multicolumn{2}{c|}{\(\mathbf{PV}\)} & \multicolumn{2}{c|}{\(\mathbf{NV}\)} & \multicolumn{2}{c|}{\(\mathbf{ZV}\)} & \multicolumn{2}{c|}{\(\mathbf{PV}\)} & \multicolumn{2}{c|}{\(\mathbf{ZV}\)} & \multicolumn{2}{c|}{\(\mathbf{PV}\)} \\ \hline  & \multicolumn{2}{c|}{\(\mathbf{NB}\)} & \multicolumn{2}{c|}{\(\mathbf{NC}\)} & \multicolumn{2}{c|}{\(\mathbf{NC}\)} & \multicolumn{2}{c|}{\(\mathbf{NC}\)} & \multicolumn{2}{c|}{\(\mathbf{ZC}\)} & \multicolumn{2}{c|}{\(\mathbf{ZC}\)} & \multicolumn{2}{c|}{\(\mathbf{PC}\)} & \multicolumn{2}{c|}{\(\mathbf{PC}\)} \\ \cline{2-10}  & \multicolumn{2}{c|}{\(\mathbf{NS}\)} & \multicolumn{2}{c|}{\(\mathbf{NC}\)} & \multicolumn{2}{c|}{\(\mathbf{NC}\)} & \multicolumn{2}{c|}{\(\mathbf{ZC}\)} & \multicolumn{2}{c|}{\(\mathbf{ZC}\)} & \multicolumn{2}{c|}{\(\mathbf{ZC}\)} & \multicolumn{2}{c|}{\(\mathbf{PC}\)} & \multicolumn{2}{c|}{\(\mathbf{PC}\)} \\ \cline{2-10}  & \multicolumn{2}{c|}{\(\mathbf{ZV}\)} & \multicolumn{2}{c|}{\(\mathbf{ZC}\)} & \multicolumn{2}{c|}{\(\mathbf{NC}\)} & \multicolumn{2}{c|}{\(\mathbf{NC}\)} & \multicolumn{2}{c|}{\(\mathbf{ZC}\)} & \multicolumn{2}{c|}{\(\mathbf{ZC}\)} & \multicolumn{2}{c|}{\(\mathbf{PC}\)} & \multicolumn{2}{c|}{\(\mathbf{PC}\)} & \multicolumn{2}{c|}{\(\mathbf{ZC}\)} \\ \cline{2-10}  & \multicolumn{2}{c|}{\(\mathbf{PS}\)} & \multicolumn{2}{c|}{\(\mathbf{NC}\)} & \multicolumn{2}{c|}{\(\mathbf{NC}\)} & \multicolumn{2}{c|}{\(\mathbf{ZC}\)} & \multicolumn{2}{c|}{\(\mathbf{ZC}\)} & \multicolumn{2}{c|}{\(\mathbf{ZC}\)} & \multicolumn{2}{c|}{\(\mathbf{PC}\)} & \multicolumn{2}{c|}{\(\mathbf{PC}\)} \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Rule analysis for the oscillations rule. NB, negative big; NS, negative small; ZV, zero value; PS, positive small; PB, positive big; NV, negative value; PV, positive value; NC, negative change; ZC, zero change; PC, positive change. previous small positive change on the communication range \((\Delta cr(k-1))\) and the previous error on the node degree \((e_{ND}(k-1))\) was positive, then no change must be done in the communication range._  
As previously described, a negative error on the node degree should cause a negative change on the communication range; a positive error should cause a positive change; and no error should not cause any change at all.