https://github.com/denatajp/peoplerank
How does the implementation of the PeopleRank algorithm work in forwarding messages in Delay Tolerant Networks. This algorithm utilizes the RoutingDecisionEngine interface to make debugging easier.
https://github.com/denatajp/peoplerank
decisionengine dtn java peoplerank
Last synced: about 2 months ago
JSON representation
How does the implementation of the PeopleRank algorithm work in forwarding messages in Delay Tolerant Networks. This algorithm utilizes the RoutingDecisionEngine interface to make debugging easier.
- Host: GitHub
- URL: https://github.com/denatajp/peoplerank
- Owner: denatajp
- Created: 2024-08-30T11:45:00.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-08-30T15:57:25.000Z (9 months ago)
- Last Synced: 2025-04-04T05:19:10.751Z (2 months ago)
- Topics: decisionengine, dtn, java, peoplerank
- Language: Java
- Homepage:
- Size: 15.6 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README

# PeopleRank Algorithm using Decision Engine in DTNs
PeopleRank is one of the many message forwarding algorithms on Delay Tolerance Networks. As we know in DTNs, network behavior is modeled after real-world human social behavior, so it's as if each node in a topology is an independent human being. Likewise in this algorithm, the PeopleRank principle itself is where each node has a “ranking” which becomes the measuring point of each node called “PeopleRank”. This ranking is influenced by 2 factors, namely Peer Rank and Friend Size. A friend's peer rank is directly proportional to the PeopleRank value, whereas the Friend Size is inversely proportional to the People Rank value, which means that the more friends this node has, the smaller its PeopleRank.
Like human social life, people who have a high social ranking (have many friends) tend to be the trusted person to spread the message to others, this also applies to the relay node that will be selected by the host. The algorithm is simple, when a connection is established between a host and a peer, they will friend each other, then exchange their PeerRank and Friend Size information, and then update the information of each host and peer. Then the host will compare with its peer (not necessarily 1 node), if the relay node has a higher PeopleRank then send a message to that node.
# Attribute
There are several attributes used in the implementation of the PeopleRank algorithm such as:
- **dampingFactor** is a constant in measuring the value of PeopleRank
- **threshold** is used to give a time limit to meet nodes until they can become friends
- **peopleRank** is the PeopleRank value in the node
- **startTime** is a folder with key of type DTNHost and value of type double that is used to store the start time of each host node and the same peer meeting
- **connectionHistory** is a Map with a key of type DTNHost and a value of type List Duration used to store the history of encounters between the host and its peers
- **friends** is a Map with key of type DTNHost and value of type Tuple containing Integer and Double. This is used to store information about each of the host's peers, and will be used to calculate and PeopleRank value.# Pseudocode
```
while true do
while i is in contact with j do
if j ∈ F(i) then
send(PeR(i), |F(i)|)
receive(PeR(j), |F(j)|)
update(PeR(i))
end if
while ∃ m ∈ buffer(i) do
if PeR(j) ≥ to PeR(i) OR j = destination(m) then
Forward(m, j)
end if
end while
end while
end while
```