martes, 21 de mayo de 2013

Simulación de red AD-HOC

Para esta semana tuvimos la tarea de simular una red ad-hoc en base a ciertos criterios:

+1 nodos que llegan en intervalos ~ Exp(lambda)
+1 que forman conexiones dentro de un radio de alcance ajustable
+1 que se mueven o de una manera más sofisticada o de dos o más simples
+1 que mandan mensajes por inundación (pueden ser de tamaño fijo)
+1 que cuestan batería según la distancia (y si no son de tamaño fijo, de eso)
+1 provocados por algún fenómeno presente en la zona simulada
+1 usando un valor de TTL
+1 que se adapte durante la simulación según una medida de desempeño
+1 con los nodos muriéndose al acabarse la batería
+1 en una visualización de lo que ocurre



Decidí simular una red de aviones comunicandose entre sí que funciona de la siguiente manera:

- el nodo padre sería la torre de control, y los aviones serían los nodos hijos.
- el intruso sería una tormenta que se acerque a la ruta de alguno de los aviones
- los aviones se pueden comunicar entre si cuando una tormenta se acerca, para que se desvíen en caso de ser necesario.
- Cada avión tiene un radio de comunicación. Para que un avión A pueda enviar un mensaje a un avión B, B tiene que estar dentro del radio de comunicación del avión A.
- De la misma manera, la torre cuenta con un rango de comunicación (mayor al de los aviones). Un mensaje enviado por la torre tiene mayor tiempo de vida.

- los mensajes entre aviones tienen tiempo de vida, donde se termina su vida al haberse enviado 2 veces
- Dependiendo la distancia los mensajes consumirán cierta energía. A mayor distancia, mayor energía se necesita.
- Si  el avión se encuentra dentro de una tormenta se necesitará mayor energía para enviar un mensaje.

La simulación de esta red se muestra de la siguiente manera:


Donde el avión con círculo Verde es el intruso, y el resto, con círculos azules, son los aviones de la red.   La del centro, por si no es obvio, es la torre.

Para calcular si un avión estaba dentro del radio de comunicación de otro avión quise usar el cuadrado circunstricto en las circunferencias.

Lo anterior fue calculado de la siguiente manera:

- Si trazamos el radio de la circunferencia 2 veces hacia dos puntos de la circunfrencia con un ángulo de 90 grados entre ellos, se formará un triangulo (los radios serán los catetos).
- en base a esto, calculamos la hipotenusa de dicho triángulo, lo cual será el largo del lado del cuadrado circunstrito

Aquí el resultado de realizar este calculo:


esto fue donde pude llegar. Mi código es el siguiente:
--

--

1 comentario: