# Opportunistic Network Algorithms for Internet Traffic Offloading in Music Festival Scenarios
## 3 A Festival Mobility Model
### Simulating Festival Mobility Behavior  
Before attempting to propose our own festival mobility, we analyzed existing solutions. One potential solution was PedSim ([[https://github.com/chgloor/pedsim](https://github.com/chgloor/pedsim)]([https://github.com/chgloor/pedsim](https://github.com/chgloor/pedsim)), accessed on 10 May 2021) in conjunction with the ONE simulator ([[https://akeranen.github.io/the-one/](https://akeranen.github.io/the-one/)]([https://akeranen.github.io/the-one/](https://akeranen.github.io/the-one/)), accessed on 10 May 2021), used in [16] to simulate pedestrian mobility in an open square and a subway station. However, when comparing the existing solutions with the real-life traces that we analyzed (such as the Sonar Festival dataset), we found that the accuracy of PedSim was not sufficiently high. We wanted to have a better approximation of real movement at a festival, which is why we opted for creating our own mobility model, which we present here. After conducting a thorough analysis of a real dataset recorded at the Sonar festival in Spain, we have concluded that it is best to create our own novel generator of contacts due to a couple of reasons:  
* Even after applying outlier removal to the Sonar dataset and grouping the nodes by location, we found it challenging to generate a close-to-reality trace due to the lack of location information; without any data regarding the vicinity of a node or its social ties, no strategy other than randomly generating contacts can be assumed to be better;
* The validation of an opportunistic network algorithm relies heavily on how realistic the movement models used in the simulation are [17]; therefore, it is of paramount importance to identify realistic mobility models in order to tailor an algorithm for the desired scenario and to later fine-tune it for better performance. One can test an opportunistic algorithm in two ways, namely by using real mobility traces or a synthetic model. Both strategies come with their limitations:  
* CRAWDAD ([[https://crawdad.org/](https://crawdad.org/)]([https://crawdad.org/](https://crawdad.org/)), accessed on 10 May 2021) is an archive of wireless trace data publicly available to the research community; unfortunately, these traces are related to particular scenarios and can hardly be generalized for different use cases; moreover, there is only one festival trace available, but the data recorded did not suit our needs;
* Many mobility models are based on the random movement of individuals such as the Random Walk model (where nodes move by randomly choosing a direction and speed) or the Random Waypoint model (where pauses are introduced between changes in direction or speed); however, there are also two mobility models, CMM [17] and HCMM [18], which are founded on social network theory and, therefore, closer to reality. The Community-based Mobility Model [17] (HCMM) is based on the observation that opportunistic networks consisting of mobile devices display mobility patterns based on human decisions and social behavior. Furthermore, it is crucial to understand that individuals move in groups and between groups. It is comprised of three steps: modeling social relationships, identifying communities, and groups in the networks based on step 1, and using an algorithm for the dynamics of the nodes based on social relationship strength. The representation of social relationships is done with the use of a weighted graph that models the strength of the interactions between nodes. CMM uses a symmetric matrix called the interaction matrix, which contains information about the social degree of interaction between nodes, and is used to generate a connectivity matrix necessary for the second step. At step 2, a community detection algorithm is executed, which results in a network composed of different groups of nodes. After this process, each of the identified communities is randomly associated with a specific grid location. The third step establishes how the nodes move across the simulation space.