## 4 Problem and Algorithm Description
### Algorithm Description
#### 4.2.2 PSA Process Description  
The process of PSA is divided into three stages: (1) deploying in the one-hop region of the sink node; (2) network layering and clustering; and (3) optimizing the position of the cluster-in nodes. (1) Deploying in the one-hop region of the sink node  
After the nodes are thrown in the target area uniformly and randomly, the sink node broadcasts \"beginning deployment\" information with the communication radius, \(R_{c}^{\min}\). The node receiving the information (i.e., \(s_{i}\)) confirms the sink node as its next hop node and relays its location information, \(p_{original}(s_{i})\):  
\[p_{original}(s_{i})=\Big{[}x_{original}(s_{i}),\,y_{original}(s_{i}),\,z_{original }(s_{i})\Big{]} \tag{14}\]  
These nodes are called the one-hop nodes of the sink node, or the one-hop node \(SH\). \(|SH|\) is the number of elements in the set of one-hop nodes. The sink node then optimizes the network coverage in the one-hop region of the sink node. The ratio of the deployment energy consumption for moving the node to the final position, \(p_{deployd}(s_{i})\), to the difference between CRR in \(p_{original}(s_{i})\) and \(p_{deployd}(s_{i})\) is regarded as the fitness function \(fitness_{1}\):  
\[\min\quad fitness_{1}=\left\{ \begin{array}{ll}\frac{\sum\limits_{s\in SH}d \big{(}p_{deployd}(s_{i}),p_{original}(s_{i})\big{)}}{\sum\limits_{s_{i}\in SH }\gamma(p_{original}(s_{i}))-\gamma\big{(}p_{deployd}(s_{i})\big{)}}&\text{ denominator is greater than 0}\\ \inf&\text{else}\end{array} \right. \tag{15}\]  
\[ \begin{array}{ll}s.t.&d\Big{(}\sin\text{k},\,p_{deployd}(s_{i})\Big{)}\leq R _{c}^{\min}\\ &z_{deployd}(s_{i})<z(\sin\text{k})-c_{border}&\forall s_{i}\in SH\end{array}  \tag{16}\]  
where \(c_{border}\) is a constant expressing the minimum distance between the deployment position of the node and the boundary of the target area. The number of the pigeons is set to \(N_{p}\), and the positions of the pigeons are initialized. The position of the \(j\)-th pigeon, \(X_{j}\), consists of the coordinates of \(\mid SH\mid\) random points, each of which represents the position of a node in the set \(SH\). These random nodes are in the hemisphere that regards the sink node as the center of the sphere. These nodes also regard the radius of the sphere to be 1.25 times that of the minimum communication radius. Thus, \(X_{j}\) is illustrated in Figure 2.  
Subsequently, the solution of \(fitness_{1}\), \(X_{g}\), is calculated according to the PSOA described in Section 4.2.1, and the position of node \(s_{i}\) is formulated as follows:  
\[p_{deployd}(s_{i})=\left[ \begin{array}{cc}X_{g}[3i-2]&X_{g}[3i-1]&X_{g}[3i] \end{array} \right] \tag{17}\]
2. Network Layering and Clustering This stage is further divided into four steps. 1. After the one-hop node \(s_{i}\) moves to the calculated position, all the other one-hop nodes set their layer number, \(level(s_{i})\), to 1; the corresponding layer width, \(width(level(s_{i}))\), to the initial communication radius, \(R_{c}^{\min}\); and the broadcast radius, \(R_{b}(s_{i})\), to \(R_{c}^{\min}\). Then, they broadcast their information, (ID, \(level(s_{i})\)). 2. The node \(s_{j}\) receiving the information compares the layer number with that of \(s_{i}\). If the layer number is greater than that of \(s_{i}\), then \(level(s_{j})\) is set to \(level(s_{i})+1\) and \(R_{b}(s_{j})\), and \(width(level(s_{j}))\) are set to \(R_{b}(s_{i})\). 3. The node \(s_{j}\) broadcasts the information \(level(s_{j})\), and the nodes having the same layer number as \(s_{j}\) reply the distance between the sink node and themselves to \(s_{j}\). Then, \(s_{j}\) compares the distance with its distance to the sink node, \(d(s_{j}.Sink)\), to determine if \(d(s_{j}.Sink)\) is the minimum value among the distances of the nodes relaying the distance to \(s_{j}\). Consequently, \(s_{j}\) becomes a cluster head node and broadcasts the information \(M_{c}\). By contrast, \(s_{j}\) enters the stage of waiting message.