# A Cluster-Based Dual-Adaptive Topology Control Approach in Wireless Sensor Networks
## 3 The Improved Clustering Scheme
### Cluster Formation
#### 3.2.3 Selecting SCHs  
As mentioned in the CMIMO scheme [3], the purpose of having SCHs is to achieve VMIMO diversity gain during the inter-cluster communications phase by constructing cooperative multi-antenna nodes. However, we propose the improved criteria for SCH selection. Besides the factors considered in the Equation (7), a node's SCH eligibility metric needs to consider the proximity to the corresponding MCH, which is modeled as follows:  
\[SM_{j,i}=MM_{j}\cdot\frac{d_{\textit{ref}}}{d_{j,i}} \tag{8}\]  
In Equation (8), \(SM_{j,i}\) denotes node \(j\)'s SCH eligibility metric measured by the MCH \(i\); \(MM_{j}\) is node \(j\)'s MCH eligibility metric; \(d_{j,i}\) represents distance between \(j\) and \(i\). The purpose of using the ratio form \(d_{\textit{ref}}/d_{j,i}\) is to make the unit of \(SM_{j,i}\) and that of \(MM_{j}\) consistent. Our SCH selection process is described in Algorithm 3. After MCHs are selected, the next step is to associate a SCH with each MCH, if possible. Our SCH selection process includes the part run by each MCH node and that executed by each non-MCH node. A MCH node (e.g., \(u\)) computes SCH eligibility metric for each of its neighbors to facilitate the selection of neighbor with maximum metric value (see lines 1-8), where the purpose of label variable is to prevent the invited node from being invited again when the inviting MCH that is not accepted by the invited node invites other potential SCHs. When knowing the neighbor with the highest SCH eligibility metric value, node \(u\) sends the \"SCH invitation message\" to it (see line 9). The Equation (8) is used to compute SCH eligibility metric. This criterion generally favors nodes close to the MCH. At the same time, the RBL value and coverage capacity are also considered. Hence, it is helpful to improve inter-cluster network connectivity needed for coordinating the cooperative MIMO operation. Upon receiving the first invitation message from a MCH, the invited node (e.g., \(v\)) waits for a fixed duration of time \(\zeta\) before making its decision. If the invited node receives more than one invitation within the time \(\zeta\), it chooses the closest inviting MCH and sends the \"SCH acceptance message\" to it (see lines 17-25). ```
Run at any MCH node (e.g., \(u\))

Input: the hello messages of all neighbors

Output: SCH confirmation message

1. **for** each entry (\(ID_{v}\), \(d_{v,u}\)) in \(L_{u,nei}\)**do** initialize the label variable \(l_{v}\) as \"_uninvited_\"
2. \(SM_{max}=0\); \(ID_{sch}=maximum\) number
3. **for** each entry (\(ID_{v}\), \(d_{v,u}\)) in \(L_{u,nei}\)**do
4. **if** (\(d_{v,u}\leq R_{u,intm}\)) and (\(l_{v}=\)\"_uninvited_\") **then**
5. **Compute node \(v\)'s SCH eligibility metric \(SM_{v,u}\) according to the Formula (8) if** (\(SM_{max}<SM_{v,u}\)) or (\(SM_{max}==SM_{v,u}\) && \(ID_{v}<ID_{sch}\)) then [\(SM_{max}=SM_{v,u}\); \(ID_{sch}=ID_{v}\)]
7. **end if**
8. **end for**
9. **Send the \"SCH invitation message\" to the neighbor \(ID_{sch}\) if** eavesdrop the \"SCH acceptance message\" from the invited node (i.e., \(ID_{sch}\)) that does not accept its (i.e., \(u\)'s) invitation then**
11. **Change the value of the invited node's label variable as \"_invited_\"
12. **Go to step 2**
13. **end if**
14. **if** receive the \"SCH acceptance message\" from the invited node (i.e., \(ID_{sch}\)) that accepts its (i.e., \(u\)'s) invitation then**
15. **Broadcast the \"SCH confirmation message\" at its maximum transmission power**
16. **end if**

Run at any non-MCH node (e.g., \(v\))

Input: the hello messages of all neighbors

Output: SCH acceptance message

17. **if** receive the first \"SCH invitation message\" from any MCH (e.g., \(w\)) **then**
18. \(d_{min}=d_{v,u}\); \(ID_{mch}=ID_{w}\)
19. **Set the timer \(t_{\xi}\) as \(\zeta\) while the timer \(t_{\zeta}\) does not expire **do**
20. **if** receive the \"SCH invitation message\" from any MCH (e.g., \(u\)) **then**
21. **if** (\(d_{v,u}<d_{min}\)) **then** {\(d_{min}=d_{v,u}\); \(ID_{mch}=ID_{u}\)}
22. **end if**
23. **end while**
24.