Les positions des noeuds
Pour rappel, la position des noeuds est "inutile" pour l'exécution de simulations sur des réseaux filaires.
Par contre, elles sont utiles en cas de visualisation du réseau (utilisation des outils ou génération d'images au sein du simulateur).
Pour les réseaux sans fil, les positions vont influencer sur le voisinnage des noeuds (en fonction du modèle de communication choisi).
Pour spécifier des informations sur les positions, la balise est <position>.
Pour spécifier un modèle, il faut utiliser la balise <model> et pour un composant <component>.
La zone de simulation
Les noeuds sont positionnés dans une zone appelée zone de simulation. Cette zone peut être calculée par défaut suivant les modèles ou spécifiée manuellement à l'aide de la balise <area> dont les attributs sont les dimensions. Il faut noter que cette zone est utilisée aussi pour les modèles de mobilité : les noeuds se déplacent au sein de cette zone sans en sortir.
Exemple :
Lorsque les noeuds sont placés en dehors de la zone de simulation, les dimensions de celle-ci sont ajustées automatiquement.
Les modèles réguliers
Ces modèles de position sont associés à des modèles de lien (dont le nom est identique). Lors de l'utilisation des modèles de lien, les modèles de position correspondant sont appliqués automatiquement. Il est donc préférable de ne pas utiliser les modèles de cette section directement. Les modèles sont les suivants :
- Caveman : les noeuds sont positionnés en caves reliées entre elles
- Lollipop : une chaîne reliée à une partie connexe
- Star : un noeud au centre et tous les autres noeuds autour de ce noeud
Le modèle caveman
Un graphe de type caveman correspond à un graphe ayant des parties connexes (les caves) reliées aléatoirement entre elles.
Exemple :
<model>
<caveman/>
</model>
</position>
Voici des exemples de réseaux de type caveman (position + lien) :



Le modèle lollipop
Un graphe de type lollipop correspond à une chaîne reliée à une partie connexe. Par défault, la longueur de la chaîne correspond au nombre de noeuds divisé par 2. Il est possible de modifier la longueur par défaut via l'attribut length.
Exemple :
<model>
<lollipop length="5"/>
</model>
</position>
Voici des exemples de réseaux de type lollipop (position + lien) :


Le modèle star
Dans ce modèle, le noeud d'identité 0 est positionné au centre de la zone de simulation et les autres noeuds positionnés en cercle autour de ce noeud. Il est possible de modifier le centre via les attributs centerX, centerY et centerZ. Le rayon peut être spécifié avec l'attribut radius.
Exemple :
<model>
<star centerX="1" centerY="1" radius="0.5"/>
</model>
</position>
Voici des exemples de réseaux de type star (position + lien) :


Les modèles particuliers
Les modèles de position suivants sont indépendants des modèles de lien. Les modèles possibles sont les suivants :
- Chain : les noeuds sont positionnés en chaîne (i.e. en ligne)
- Circle : les noeuds sont positionnés en cercle
- Grid : les noeuds sont positionnés suivant une grille
- Random : les noeuds sont positionnés aléatoirement
Le modèle circle
Le modèle place l'ensemble des noeuds dans un cercle. Le premier noeud (noeud 0) est situé à 12h sur le cercle, les autres noeuds sont placés suivant le sens des aiguilles d'une montre. Sans attribut, les noeuds sont positionnés dans le cercle centré sur la zone de simulation. Il est possible de spécifier les coordonnées du centre via les attributs centerX, centerY et centerZ, ainsi que le rayon via l'attribut radius.
Exemple :
<model>
<circle centerX="1" centerY="1" radius="0.5"/>
</model>
</position>
Voici des exemples de réseaux de type circle (position + lien). La figure de gauche montre un exemple sans attribut et celle de droite un exemple où le cercle est centré en (7,5;7,5) et de rayon 2,5.


Le modèle grid
Ce modèle place l'ensemble des noeuds suivant une grille. Le premier noeud (noeud 0) est situé en bas à gauche, puis les autres noeuds de gauche à droite, de bas en haut. Ce modèle est optimisé pour un nombre de noeud égal à une puissance de 2.
Exemple :
<model>
<grid/>
</model>
</position>
Voici un exemple de réseau de type grid (position + lien) :

Le modèle random
Le modèle random place les noeuds aléatoirement sur la zone de simulation.
Exemple :
<model>
<random/>
</model>
</position>
Voici un exemple de réseau de type random (position + lien) :

Les composants
Les composants permettent de spécifier les positions d'un ou de plusieurs noeuds. Un composant est déclaré au sein de l'élément <component>. Il y a ensuite les éléments suivants :
- nodeId : correspond à l'identité du noeud.
- positionX, positionY et positionZ : correspond à la position du noeud.
L'exemple ci-dessous présente un composant. Nous allons détailler les différents éléments dans la suite.
<node>
<interval min="0" max="10"/>
</node>
<positionX>
<value>0.5</value>
</positionX>
<positionY>
<uniform min="0" max="5.5"/>
</positionY>
</position>
Voici un exemple de réseau dont la position des noeuds est spécifiée à l'aide de composants :

L'identité d'un noeud
L'identité d'un noeud peut être une valeur simple, un intervalle ou bien des identités aléatoires. Elle est déclarée dans l'élément node.
La valeur simple est déclarée comme suit :
<value>10</value>
</node>
Il est possible de déclarer un intervalle de noeuds. On spécifie alors les bornes de l'intervalle via les attributs min et max. Si l'attribut mod est spécifié, seuls les noeuds dont l'identité est contenue dans l'intervalle et est modulo la valeur sont sélectionnés. Voici un exemple sélectionnant les noeuds 3 à 10 :
<interval min="3" max="10"/>
</node>
L'identité du noeud peut aussi être sélectionnée aléatoirement dans un intervalle donné. Pour cela, nous utilisons l'élément random, les bornes de l'intervalle étant spécifiées à l'aide des attributs min et max. Voici un exemple sélectionnant un noeud aléatoire dans l'intervalle [3, 10] :
<random min="3" max="10"/>
</node>
La position du/des noeuds
Tout comme l'identité des noeuds, il est possible de spécifier la position à l'aide de générateurs de nombres aléatoires, voire de spécifier une valeur (réelle) fixe.
Voici les différentes valeurs possibles (sélectionnez uniquement l'une d'entre elles) :
<!-- Valeur simple -->
<value>0.5</value>
<!-- Aléatoire, uniforme -->
<uniform min="0" max="5.5"/>
<!-- Aléatoire, gaussian -->
<gaussian sigma="0.5" min="0" max="5.5"/>
<!-- Aléatoire, log normal -->
<lognormal sigma="0.5" zeta="1" min="0" max="5.5"/>
</positionX>