# An Adaptive Delay-Tolerant Routing Algorithm for Data Transmission in Opportunistic Social Networks
## 3 System Model Design
### Data Routing Based on Two-Hop Feedback Mechanism  
In opportunistic networks, most traditional routing algorithms only consider the selection of the next hop in the data transmission process. On the contrary, the proposed algorithm in this paper pays attention to not only the next hop but also to the second hop [36; 37], which obtains a continuity of data transmission. We called it \"two-hop feedback mechanism\" in this paper. In general, message carriers in routing algorithms of opportunistic networks find a suitable relay node just from the neighbor nodes, while the two-hop feedback mechanism proposes that message carriers seek those nodes with a higher transmission evaluation value than that of themselves as the next hop [43]. As illustrated in Figure 3, the implementation process of the two-hop feedback mechanism is based on two significant assumptions:  
**Assumption 1**. : _The node\({}_{4}\) is in two intersecting communication areas simultaneously and will not leave the two communication areas for a very short time. Mobile devices in opportunistic networks communicate with each other by wireless short-range signals, so each of them have different sizes of communication coverage. This also opens up the possibility of this premise and node\({}_{4}\) can acquires information from two communication area._  
**Assumption 2**. : _The node\({}_{4}\) has enough processing and storage capacity, which could be a laptop, a vehicle. It is an ambassador between two communications and is responsible for collecting and distributing data associated with the final control result of each node. In practice, the amount of data that needs to be transmitted is small, because message carrier node\({}_{1}\) only needs the value of the final control evaluation from each node._  
From Figure 3, \(\Delta t_{1}\) and \(\Delta t_{2}\) are two very close time stamps. The source _node\({}_{1}\)_ and its neighbor nodes _node\({}_{2}\)_, _node\({}_{3}\)_, _node\({}_{4}\)_, _node\({}_{5}\)_ are located in the same communication area at the time stamp \(\Delta t_{1}\), while _node\({}_{4}\)_, _node\({}_{6}\)_, _node\({}_{7}\)_, _node\({}_{8}\)_, _node\({}_{9}\)_, and _node\({}_{10}\)_ stay in another communication area at the time stamp \(\Delta t_{2}\). The green arrows represent gathering information related with the transmission evaluation value, while the red arrows are the process of routing and forwarding messages. According to the above assumptions, the process of two-hop feedback mechanism transmission can be implemented as follows:  
Step 1: Each node determines its own final control evaluation value _FC_ and analyzes the membership level of fuzzy inputs on data transmission. Step 2: The _node\({}_{4}\)_ collects the final transmission evaluation value _FC_ from its neighbor nodes _node\({}_{6}\)_, _node\({}_{8}\)_, _node\({}_{9}\)_, and _node\({}_{10}\)_, then forwards these data information to message carrier _node\({}_{1}\)_. Step 3: The message carrier or the source _node\({}_{1}\)_ collects the final transmission control result from its neighbor nodes _node\({}_{2}\)_, _node\({}_{3}\)_, _node\({}_{4}\)_, and _node\({}_{5}\)_ as well as the second-hop nodes _node\({}_{6}\)_, _node\({}_{7}\)_, _node\({}_{8}\)_, _node\({}_{9}\)_, and _node\({}_{10}\)_. Step 4: The _node\({}_{1}\)_ compares the collected final transmission result with its own value and optimizes the classification of nodes (active, potential and under-resourced relay nodes). Step 5: Because \(FC^{node_{1}}\)\(>FC^{node_{1}}\), \(FC^{node_{1}}\)\(>FC^{node_{1}}\), and \(FC^{nodes}\)\(>FC^{node_{1}}\), the source node _node\({}_{1}\)_ only transmits data to its neighbor _node\({}_{4}\)_, and then sends messages to _node\({}_{7}\)_ and _node\({}_{9}\)_, the messages can be forwarded to the destination eventually through the two-hop feedback mechanism. Theoretically, the node with a larger final transmission control value has the greater capacity to process and store data information.