## 5 Adaptive Dual-Mode Routing-Based Mobile Data Gathering Algorithm
### Multi-Hop Mode Based on Energy Endurance  
The energy endurance is designed to reasonably choose the optimal next hop based on the aspect of energy balance. In order to visually represent the spatial relationship of nodes, we establish the forward neighbor set for each node before calculating energy endurance as follows:  
\[FN(i)=\Big{\{}j\Big{|}d_{j,a_{j}}\leq d_{i,a_{i}},d_{i,j}<R,\Big{\{}a_{i},a_{j} \Big{\}}\subseteq AS, \tag{11}\]  
where \(FN(i)\) is the forward neighbor set of node \(v_{i}\). Forward neighbors of node \(v_{i}\) include some of its neighbors with shorter upload distances. These neighbors act as available next hops to ensure that data from the source node are closer to the MCGV in the process of relaying. This set records all available next hops of node \(v_{i}\).  
In order to balance energy when choosing the next hop, the energy storage level is a necessary consideration. Assuming that node \(v_{i}\) takes node \(v_{j}\) as the next hop, the energy storage level of node \(v_{j}\) can be calculated as follows:  
\[es_{ij}=\frac{E_{j}+E_{j}^{c}}{l_{i}+l_{j}},j\in FN(i), \tag{12}\]  
where \(E_{j}^{c}\) is the energy replenishment for node \(v_{j}\) in the current round. \(l_{i}\) and \(l_{j}\) are the traffic loads of node \(v_{i}\) and node \(v_{j}\), respectively, according to the traffic load mode in Section 3. \(es_{ij}\) denotes the available energy for the unit load of node \(v_{j}\). This indicator is used to quantize the energy state corresponding to the current load.  
In addition, it is also a key factor to balance the energy consumption of forward neighbors when nodes choose the next hop. We quantize this factor using Equation (13) in order to reasonably control energy consumption fluctuations.  
\[\delta_{ij}=\frac{\sum\limits_{k\in FN(i)}l_{k}{{}^{\prime}}\left|e_{k,a_{k}}-me _{ij}\right|}{\sum\limits_{k\in FN(i)}l_{k}{{}^{\prime}}me_{ij}}, \tag{13}\]  
where \(\delta_{ij}\) denotes the energy consumption balance of node \(v_{i}\)'s forward neighbors when node \(v_{j}\) is its next hop. \(l_{k}{{}^{\prime}}\) is the updated load, which is the sum of \(l_{k}\) and \(l_{i}\) only if \(k=j\). \(e_{k,a_{k}}\) is the corresponding energy consumption when node \(v_{k}\) uploads the traffic corresponding to the unit load to its nearest anchor point. \(me_{ij}\) is the average relay energy consumption of the forward neighbors of node \(v_{i}\) when node \(v_{j}\) is its next hop, which can be calculated as follows:  
\[me_{ij}=\frac{\sum\limits_{k\in FN(i)}l_{k}{{}^{\prime}}e_{k,a_{k}}}{\sum \limits_{k\in FN(i)}l_{k}{{}^{\prime}}},j\in FN(i). \tag{14}\]  
According to the average relay energy consumption, the node aims to balance load distribution in its forward area when choosing the next hop. The low-load node with a short upload distance has high precedence with respect to relaying traffic in order to balance energy.  
The endurance ability of each node is closely related to its energy storage level and corresponding energy consumption equilibrium. Based on these two factors, we calculate the relative energy endurance \(EE_{ij}\) of node \(v_{j}\) when it is the next hop of node \(v_{i}\) as follows:  
\[EE_{ij}=\log{(1+\frac{es_{ij}}{e_{j,a_{j}}})}^{\delta_{ij}},j\in FN(i). \tag{15}\]  
This indicator integrates the energy state, energy replenishment, load distribution, and relay consumption to quantize the relative energy endurance compared with other nodes. Combined withthe energy consumption balance of the forward area, the source node chooses the next hop, which features a high energy storage level with proximity to the anchor point. The energy balance can be enhanced in the process of data upload.