Location Based Ranking, effects on routing
Using the simple formula for calculating the ranking of users, as follows:
Popularity of user
where is the time (or number of times) user
has visited the tower
,
is the popularity of tower
.
Create a list of towers, with an associated number of times the tower is reported in the dataset, call this the set ,
SELECT count(celltower_oid) as count, celltower_oid FROM cellspan GROUP by celltower_oid ORDER BY count DESC
then for each user, get a list of the cell towers, with an associated number of reading for that user, and call this set
SELECT count(celltower_oid) as count, celltower_oid FROM cellspan WHERE person_oid = {USER_ID} GROUP by celltower_oid ORDER BY count DESC
then, for each member of , multiply the number of time the tower is seen in
by the number of time the tower is seen in total from
.
This yields a number for each user, which can be used when initialising nodes in ContactSim (aka LocationSim). I added new properties into the the configuration files, which reflected the ranking of each node, and created new classes in LocationSim, which reflected a new protocol called LBR. When a node is instantiated, is looks up its ranking metric with an oracle class (which reads the data from the configuration file). During the operation of the simulator, when a node get’s an onConnect() event call, it checks it messages to see:
- if it has any message for the node it is connected to, it passes them on
- if the node it is connected to has a higher ranking, then it passes all messages on
The initial results show a good delivery ratio compared to PBR
Delivery COST of messages for LBR and PBR using 7 day periodicity, where messaging starts at the first timestep (PBR 7 day Period Start, LBR Start), or after 1 week.
Delivery Ratio of messages for LBR and PBR using 7 day periodicity, where messaging starts at the first timestep (PBR 7 day Period Start, LBR Start), or after 1 week.
This suggest that simply knowing the rank of the users, based on location, significantly improves routing. However, I need to check the algorithm is working before I can say the results are accurate:
- Does the node remove it from it’s buffer when it passes the message on? Yes it does
- Is the node correctly recording deliveries?
Currently working on: Graph of all connected users. Taking a long time……