1. Introducción
En las últimas décadas, la ciencia ha estado interesada en comprender los procesos biológicos que hacen posible la vida. Estos procesos están caracterizados por su complejidad y perfección, y algunos científicos han querido aplicarlos a la solución de problemas de la ingeniería 1. El éxito de la adaptación de paradigmas bioinspirados se observa en redes neuronales, lógica difusa, o en inteligencia arjpgicial. De igual manera, se ha tenido mucho interés en formular matemáticamente diferentes conceptos sociales. Por ejemplo, la justicia y la teoría de la elección social 2 se han usado como base para una equitativa distribución de recursos entre los miembros de sistemas distribuidos, como se observa en 3. La social-inspiración, al igual que la bioinspiración, intenta aplicar este tipo de conceptos, y ha tomado fuerza a la hora de solucionar problemas de ingeniería, teniendo como punto de partida el éxito de toda clase de comunidades 4.
Las tecnologías inalámbricas y su rápido crecimiento han estado influenciadas por la necesidad de comunicación que existe en nuestra sociedad 5. Estas tecnologías no solo han permitido la comunicación entre personas, sino su interacción con el mundo que las rodea, esto a su vez ha creado la necesidad de llegar a zonas apartadas de la geografía terrestre donde existe poca infraestructura que soporte comunicación inalámbrica. Una solución muy importante son las redes ad hoc 6-8, las cuales no necesitan de ningún tipo de infraestructura física fija, son dinámicas y flexibles y además se pueden configurar sin ningún tipo de intervención por parte del usuario. La expansión de este tipo de redes ha creado la necesidad de la utilización de sistemas que sean capaces de manejar los recursos de manera eficiente y soporten funcionalidades complejas como la virtualización 9, que es esencial a la hora de proveer servicios y recursos a cada uno de los miembros de una red.
El primer paso será aplicar la capacidad de toma de decisiones a los nodos potenciales de un sistema distribuido, de manera que ellos puedan decidir, con base en los recursos que les ofrece, si desean ingresar o no. Para implementar el proceso de toma de decisiones se debe crear previamente un submódulo para que el nodo reciba y envíe mensajes de saludo de manera que se dé a conocer ante otros nodos u otros sistemas distribuidos que se encuentren en el área. Además es necesario hacer un intercambio de información de recursos del nodo y el sistema, para que luego el nodo decida si quiere ingresar o no al sistema. Luego se implementará un proceso de negociación que consistirá en establecer cuáles son los recursos con los que va a colaborar el nodo con el sistema y cuáles tendrá derecho a utilizar una vez haga parte del mismo.
1.1. Método de Toma de Decisiones Multicriterio Scoring10
La toma de decisiones es el proceso mediante el cual, se realiza la elección de una opción entre varias, mediante un método que pueda resaltar algunas de las opciones de otras, de manera que se puedan organizar de manera jerárquica. La elección consiste en elegir lo mejor entre lo posible. Como se indicó anteriormente este es el primer paso que debe dar el nodo al realizar el proceso de ingreso ya que debe decidir, con base en los recursos que el sistema distribuido le está ofreciendo, si quiere o no hacer parte de este.
En los métodos de decisión multicriterio lo posible se refiere a la enumeración de todas las alternativas o el establecimiento de una región factible 11. La región factible consiste en el conjunto de alternativas cuando estas no se pueden definir de manera precisa, este conjunto puede ser discreto o continuo; a su vez, la región factible puede ser limitada de manera estricta, mediante restricciones o de manera flexible por niveles de aspiración. En cuanto a lo mejor, se debe elegir uno o más criterios para poder resaltar esa alternativa de las demás. Entre mayor número de criterios hayan, el problema de elección se vuelve un poco más complejo y se pueden resolver con métodos denominados de optimización multiobjetivo. Si lo posible viene definido por un conjunto discreto de alternativas existen métodos multicriterio discretos para resolver el problema, como el método multicriterio discreto Scoring.
Este método es una manera rápida y sencilla para realizar una elección en un problema de decisión; comparado con otros métodos multicriterio populares como el AHP 10 es menos costoso computacionalmente hablando ya que con el aumento del número de criterios, el método AHP exige la comparación y eliminación de criterios por pares.
El proceso para realizar una decisión Multicriterio con este método es el siguiente:
Idenjpgicar el propósito del problema. Este paso consiste en idenjpgicar qué es lo que se desea alcanzar. Que en este caso sería mejorar la situación de los recursos que el nodo pueda tener disponibles.
Idenjpgicar las alternativas. Son las opciones que podrían ayudar a la consecución del propósito que se trazó en el primer paso. Aquí sería, ingresar o no al sistema distribuido dependiendo de los recursos que este le esté ofreciendo (Si o No). (j).
Listar los criterios que van a ser tenidos en cuenta a elegir la mejor alternativa; como el propósito es mejorar la situación de los recursos; los criterio son cada uno de los recursos que los nodos puedan tener (i).
Asignar una ponderación para cada uno de los criterios. es decir, indicar qué tan importante es para el decisor el criterio en cuestión mediante la siguiente escala de 1 a 5 (𝑤𝑖).
Para cada alternativa se indica en cuanto se satisface cada uno de los criterios en una escala de 1 a 9 (𝑟 𝑖 j ).
Finalmente, para cada una de las alternativas, se calcula el valor del Score. 𝑆 j = ∑ j 𝑤𝑖 𝑟 𝑖 j .
1.2. Método de Concesiones Alternativas de Zeuthen
El método de Zeuthen 12 está basado en la negociación en el mercado laboral. Para la formalización, se puede suponer lo siguiente. Digamos que existen el jugador 1 y el jugador 2; los cuales quieren llegar a un acuerdo sobre la cantidad de un ítem que le corresponde a cada uno. El jugador 1, propone 𝑥= (𝑥1; 𝑥2) y el jugador 2, propone 𝑦= (𝑦1; 𝑦2), donde el primer componente se refiere a la propuesta para el jugador 1. Se propone un caso de no acuerdo, en donde, en términos de utilidades, el jugador 1 recibiría 𝑈1(𝑥01) y el jugador 2 𝑈2(𝑥02), donde 𝑥0= (𝑥01; 𝑥02) sería la situación de conflicto o statu quo. Se asume que 𝑈1(𝑥01) < 𝑈1(𝑦1) < 𝑈1(𝑥1) y 𝑈2(𝑥02) < 𝑈2(𝑥2) < 𝑈2(𝑦2) lo que quiere decir que el jugador prefiere su propuesta a la realizada por el otro jugador, pero prefiere esta última a la situación de statu quo. Este método posee la ventaja de que su algoritmo no cambia con las rondas de negociación mientras que otros métodos como el de Stahl o Rubenstein, se debe tener en cuenta el número de rondas y tener en cuenta el aumento de la complejidad del algoritmo tras cada ronda.
2. Metodología
Existen dos escenarios principales a saber en los cuales un nodo puede estar inmerso al tomar la decisión de acceder al sistema distribuido TLÖN 13-14:
Unión de nodo con otro nodo solitario: En este caso, el nodo se encuentra solo y se comportaría como un nodo Dios, es decir, el nodo sería el encargado de formar el sistema distribuido sobre la red ad hoc; de ahí en adelante los demás nodos buscarían hacer parte de ese sistema.
Nodo con un sistema distribuido ya constituido: Es el caso en donde el nodo se encuentra con un sistema el cual ya está constituido por mínimo dos nodos.
En el proceso de aceptación que tiene un sistema ante un nodo solitario, se debe tener cierta reserva a la hora de la admisión para evitar el hecho de que se acepte a un nodo egoísta 15, que vaya a aprovecharse de los recursos actuales del sistema y no aporte nada.
2.1. Unión de Nodo con Otro Nodo Solitario
En este escenario, una de las principales razones para la unión con otro nodo es ganar la reputación de haber sido uno de los nodos que creo el Sistema Distribuido sobre la red ad hoc, y por ende una de las principales características que posee el nodo es el altruismo desde una perspectiva sociológica como se define en 16, es decir, el hecho de dar de sí lo más posible, para aumentar su estatus e integración social. Para el ingreso se realiza el proceso que se observa en la Figura 1.
Para ello, el nodo A estará escuchando mensajes de saludo de otros nodos buscando siempre el proceso de unión; en este caso, al encontrar un nodo, el primer paso que realiza es un saludo que va del nodo A hacia el nodo B indicando que es un nodo solitario, inmediatamente, el nodo B le envía una respuesta de la misma manera indicando su estado; una vez el nodo A recibe la respuesta, el otro nodo envía una solicitud de unión de tal manera que el nodo A se prepare para recibir la información de sus recursos, es decir, su capacidad de disco duro, RAM, procesamiento, disponibles y totales, además de sus periféricos como teclado, cámaras, micrófonos, etc. Y el nodo A, de manera similar enviará su propia información de recursos; en seguida, mediante un proceso de toma de decisiones multicriterio llamado Scoring 10 cada nodo decide si continuarán con el siguiente paso que consiste en la negociación de los recursos que cada uno va a aportar a la red; si hay un acuerdo, se creará el sistema distribuido y cada nodo se configurará de tal manera que estará escuchando solicitudes de unión de otros nodos que quieran hacer parte del sistema.
2.2. Unión de nodo con un sistema distribuido
El segundo caso es cuando un nodo se encuentra a un sistema distribuido ya conformado; en este caso el nodo se comportaría como una persona al intentar ingresar a una organización o institución; y el sistema distribuido como el grupo que debe aceptar o no a un potencial integrante. El sistema debe tener en cuenta el comportamiento del nodo a la hora de dejarlo ingresar, ya que este se puede comportar de una manera egoísta y no aportar recursos suficientes, esto debe ser claro ya que este sistema debe velar por los recursos de cada uno de sus integrantes y compartirlos de una manera justa 7.
El proceso de ingreso es similar al de la Figura 2, pero existen pequeñas variaciones. De igual manera el nodo estará escaneando el espectro, y recibirá un saludo por parte del nodo más próximo que esté dentro del sistema distribuido. Los nodos que hacen parte del sistema, están atentos a solicitudes de unión de tal manera que el nodo indicará su intención de realizar el proceso de negociación e inmediatamente enviará la información de sus recursos, el nodo anfitrión enviará la información de recursos disponibles en el sistema y cada parte realizará con base en el método multicriterio Scoring 10 la primera decisión de ingreso a la red, si ambas partes acceden a realizar la negociación, se utilizará el método de negociaciones de Zeuthen 2,12-16; si hay un acuerdo, el nodo ingresará a la red.
Mediante el método Scoring 10, la decisión se toma realizando una comparación de los recursos que tienen los dos nodos, si es de mayor utilidad para el nodo crear el sistema con su potencial vecino. El algoritmo de toma de decisiones y negociación propuesto se puede observar con mayor detalle en las publicaciones 17,18.
3. Resultados
Para validar los resultados, se hizo la implementación del experimento mediante Python, en dos familias de dispositivos: un computador portátil y tres dispositivos embebidos Raspberry Pi. Cuyos requerimientos mínimos de software son:
Versión 2.6.9 de Python o superior.
Se usó la versión 2.7.0 de Raspbian, que es el sistema operativo de la Raspberry, con Kernel de Linux 4.9.
Batman-Adv y Batctl, versiones 2016.4.
Las pruebas se realizaron con los siguientes dispositivos:
ARMv6-compatible processor rev 7 (v6l)
8GB de disco duro
500 MB de RAM
Adaptador Wi-Fi, GPIO HDMI, 4 puertos USB, teclado y mouse
ARMv7 Processor rev 5 (v7l)
16GB de disco duro
1GB de RAM
Adaptador Wi-Fi, GPIO HDMI, 4 puertos USB
ARMv6-compatible processor rev 7 (v6l)
8GB de disco duro
500 MB de RAM
Adaptador Wi-Fi, GPIO HDMI, 4 puertos USB
Procesador Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz
51GB de disco duro disponibles
4GB de RAM
Teclado, mouse, pantalla, puertos USB, adaptador Wi-Fi y demás periféricos de un computador portátil
Para controlar el comportamiento del nodo se añadió un índice de altruismo-egoísmo, es decir, un parámetro que influencia al nodo para que se comporte de cierta manera según el ambiente donde se encuentre. Este índice va de cero a uno: si el índice tiende a cero, el comportamiento del nodo es más altruista y cuando tiende a uno, es más egoísta. Para esto, se considera el comportamiento del individuo en la comunidad y su disposición a colaborar de manera altruista como un incentivo para mejorar su reputación o estatus en la sociedad y de igual forma ser tenido en cuenta por el sistema a la hora de la asignación de recursos, cuando sea requerido por el dispositivo. Este índice también ayudo a simular los escenarios a los cuales puede pertenecer un nodo dependiendo de su localización física. Según lo explica Fitzek en 6, dependiendo de la relación que se tenga entre usuarios o el ambiente en el que se encuentre el dispositivo, se va a esperar cierto tipo de colaboración. En el caso del sistema, se simularon cinco tipos de colaboración.
Colaboración Muy Altruista
En este caso, se estableció un escenario en donde los nodos tendrán un índice de altruismo-egoísmo muy bajo. Este escenario se simuló con una distribución beta, cuyos parámetros fueron α=1 y β=5, de manera que los índices tendieran al altruismo. Este escenario se da cuando los dispositivos pertenecen al usuario, y pueden confiar totalmente entre ellos.
Colaboración Altruista
El índice de altruismo-egoísmo se encuentra un poco hacia el centro. Es un escenario común en ambientes familiares, donde cada nodo colabora sin esperar nada a cambio. Utiliza la distribución beta con parámetros α =2 y β=5.
Colaboración Neutral
El índice de altruismo-egoísmo se encuentra distribuido justo en el centro, los parámetros de la función beta son α =5 y β=5. Hay igual probabilidad de que haya comportamientos altruistas y egoístas, como se observa en la Figura 3. Es un escenario que se puede presentar en una empresa, entre colegas o compañeros.
Colaboración Egoísta
En este caso la gráfica tiende a la derecha, y se acerca al egoísmo. Este tipo de escenarios se da en espacios públicos donde no hay control sobre qué clase de dispositivos pueden encontrarse en el área y qué clase de amenazas representan. Los parámetros de la función son α =5 y β=2.
Colaboración Muy Egoísta
Este tipo de colaboración no se da realmente en ningún escenario, ya que es un comportamiento en el que el nodo no colabora en ningún momento, por lo tanto no creará o no se unirá al sistema. Sin embargo, se tuvo en cuenta por la simetría en las pruebas y para realizar todo el espectro de altruismo-egoísmo. Los parámetros de la función beta son α =5 y β=1 y su posición está en el extremo derecho.
3.1. Nodo Con Nodo Solitario
Para el primer paso, en el escenario de dos nodos, se hicieron todas las permutaciones con los dispositivos disponibles y todos los escenarios mostrados anteriormente. Para todos los casos que se documentan en las tablas que siguen, se hicieron 100 pruebas en cada uno de los escenarios. Esos datos se obtuvieron con el programa Python y representan el promedio de cada uno de ellos.
3.1.1. Toma de Decisiones
El comportamiento en cada uno de los escenarios de nodo solitario con nodo solitario se observa en la Tabla 1, donde los dispositivos Raspberry 1 (R1), Raspberry 2 (R2), Raspberry 3 (R3) y el Computador portátil (C). Realizan negociaciones entre ellos. La cantidad de nodos que toman una decisión sobre realizar el proceso de creación del sistema distribuido disminuyen mientras se pasa del rango altruista al rango egoísta (Figura 4). Si la cantidad de recursos que tienen los nodos es similar en el escenario egoísta, estos tienen una posibilidad ligeramente superior de realizar el siguiente paso de la negociación; mientras que si la cantidad de recursos es muy diferente, como en el caso del computador y cualquiera de los dispositivos Raspberry, sobre todo la 1 y la 3, las probabilidades bajan ligeramente. Cabe aclarar que este escenario ocurrirá únicamente cuando se crea el sistema, luego de ello, todos los nodos preferirán hacer la negociación con la red ya constituida, como se observará en pruebas posteriores.
Escenarios | Muy Altruista | Altruista | Neutro | Egoísta | ||||
---|---|---|---|---|---|---|---|---|
| σ | | σ | | σ | | σ | |
Raspberry1-Computador | 91 | 8.1 | 80 | 11.5 | 32 | 9.6 | 2 | 2.6 |
Computador- Raspberry 2 | 92 | 7.9 | 76 | 8.2 | 36 | 8.1 | 19 | 2.2 |
Raspberry 1 - Raspberry 3 | 97 | 8.7 | 73 | 5.0 | 42 | 7.6 | 14 | 4.1 |
Raspberry 2- Raspberry 3 | 94 | 2.7 | 76 | 8.8 | 37 | 8.5 | 14 | 8.2 |
Raspberry 1 Raspberry 2 | 90 | 8.4 | 75 | 9.4 | 40 | 6.2 | 12 | 2.7 |
Computador-Raspberry 3 | 94 | 5.7 | 78 | 9.2 | 35 | 9.4 | 6 | 5.5 |
En esta parte se omitió el escenario muy egoísta, ya que ningún nodo aceptó continuar con el proceso de ingreso, sino que descartó por completo crear el sistema distribuido, y en el proceso de análisis no añadía a ningún valor. El valor que aparece en la primera columna en cada escenario de comportamiento corresponde al promedio y el segundo dato corresponde a la dispersión. Entre las pruebas realizadas con cada par de dispositivos, el porcentaje de ingreso varía con respecto al comportamiento; pero es muy similar cuando se compara con cualquier otro par de dispositivos. Por lo general el ingreso es más exitoso cuando se comparan dos dispositivos que tienen recursos similares como por ejemplo en los escenarios entre todos los dispositivos Raspberry, o el del computador y la Raspberry 2 ya que esta última es la que más tiene recursos.
3.1.2. Negociación
En el proceso de negociación, se tuvo en cuenta el escenario muy egoísta; no solo por la simetría de las pruebas, sino porque aporta datos interesantes para el análisis. Suponiendo que el nodo acepta seguir con el proceso de negociación, se encontrará ante una situación en la que deberá indicar qué porcentaje de los recursos que tiene disponible va a aportar al sistema distribuido. La negociación se realiza mediante el método de concesiones sucesivas de Zeuthen 2,12-16, los resultados obtenidos se presenta en las Tabla 2; las cuales corresponden al mismo proceso de negociación que se dividió en dos por la cantidad de información.
Escenarios | Escenario 1 | Escenario 2 | Escenario 3 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
R1 | σ | C | σ | C | σ | R2 | σ | R1 | σ | R3 | σ | |
Muy Altruista | 83.6 | 17.1 | 81.5 | 17.6 | 82.1 | 19.1 | 83.1 | 22.3 | 83.4 | 21.5 | 84.4 | 19.1 |
Altruista | 71 | 16.3 | 69.7 | 15,2 | 73.3 | 17.3 | 75.4 | 16.8 | 73.9 | 18.6 | 74.3 | 18.9 |
Neutro | 51.1 | 15.8 | 50.1 | 11,8 | 51.3 | 10.9 | 53.3 | 15.9 | 52.3 | 17.5 | 51.2 | 15.6 |
Egoísta | 46.8 | 11.5 | 43 | 9,8 | 46.8 | 8.8 | 47.1 | 10 | 44.4 | 11.4 | 45.7 | 14.3 |
Muy Egoísta | 46.5 | 10.5 | 44.1 | 9,9 | 47.8 | 5.8 | 48.1 | 8.5 | 44.9 | 8.8 | 44.8 | 9.9 |
Escenarios | Escenario 4 | Escenario 5 | Escenario 6 | |||||||||
R1 | σ | R2 | σ | R2 | σ | R3 | σ | C | σ | R3 | σ | |
Muy Altruista | 83.9 | 18.4 | 83.1 | 17.9 | 85.9 | 15.3 | 84.6 | 18.2 | 84.8 | 21.1 | 85.8 | 24,1 |
Altruista | 70.7 | 17.6 | 71 | 17.6 | 70.4 | 16.8 | 70.5 | 14.3 | 71.8 | 18.5 | 72.8 | 18,9 |
Neutro | 49.2 | 13.5 | 50 | 15.4 | 52.1 | 12.5 | 54 | 12.2 | 50 | 14.3 | 48.9 | 11,4 |
Egoísta | 43.3 | 11.8 | 42.8 | 13.4 | 45 | 11.5 | 44.9 | 11.2 | 46.9 | 11.9 | 46.1 | 12,2 |
Muy Egoísta | 43.9 | 6.7 | 44.1 | 9.6 | 46.5 | 8.4 | 46.2 | 12.1 | 47.7 | 7.1 | 47.2 | 8,1 |
En cada bloque de escenario de comportamiento se ven cuatro casillas. La primera corresponde al promedio de recursos entregados por el primer dispositivo (Raspberry 1 (R1), Raspberry 2 (R2), Raspberry 3 (R3) y Computador portátil (C)) y la segunda a la desviación estándar de esa prueba. Las dos últimas casillas corresponden al promedio de los recursos entregados por el dispositivo con el cual se negoció y su desviación, respectivamente. En el primer caso del escenario entre la Raspberry 1 y el computador, en un ambiente muy altruista la Raspberry entregó un total de 83.6% de sus recursos disponibles; mientras que el computador entregó un total de 81.5 %. Se observa que el equipo que tiene menos recursos siempre da un poco más, con el fin de ser aceptado por la otra parte.
En el escenario muy egoísta, la cantidad de recursos entregados por los dispositivos sube ligeramente, ya que la otra parte se comporta de la misma forma y exige más cantidad de recursos. Se observa que los recursos entregados son muy similares en los escenarios al compararse por pareja de dispositivos; lo que quiere decir que no afecta mucho la diferencia que exista entre la cantidad de recursos de los dispositivos que están negociando y la cantidad de recursos que entregan, aunque el que menos tiene siempre aporta un poco más. En la Figura 5 se observa cómo varía la cantidad de recursos entregados al sistema con la variación del índice de egoísmo; entre más egoísta es el dispositivo, menos recursos entrega.
La desviación estándar de esta prueba se elevó bastante por el hecho de que aunque el índice de egoísmo estaba entre los rangos de las gráficas de comportamiento mostradas más arriba, este era susceptible de variar entre esos límites, por lo que aunque el nodo estuviera en un rango muy altruista, en algún momento podría llegar a ser neutro.
3.1.3. Creación del Sistema
Debido al método de negociación y a los parámetros que se utilizan en el sistema distribuido, los nodos llegan a un acuerdo incluso en una ronda de negociaciones de hasta 20 propuestas y contrapropuestas. En este caso, se limitaron únicamente a diez ya que entre mayor número de negociaciones, más recursos físicos se consumen y lo que se espera es que la red ad hoc se comporte de una manera rápida. Además, dependiendo del tipo de cooperación, el nodo solicita una mínima cantidad de recursos entregados por el otro nodo para poder crear el sistema distribuido. De acuerdo con lo anterior, la Tabla 3 muestra el porcentaje de nodos que aceptaron realizar la negociación, lograron llegar a un acuerdo y crearon el sistema. Se observa que en los tres primeros escenarios de comportamiento, una vez el nodo toma la decisión de realizar la negociación de los recursos, es muy probable que llegue a un acuerdo con su contraparte. En estos casos, las rondas de negociación siempre eran menos de cinco; mientras que en el escenario muy egoísta, en múltiples ocasiones se observaron rondas de negociación que superaban las veinte y muy rara vez se extendían indefinidamente.
Escenarios | Muy Altruista | Altruista | Neutro | Egoísta | Muy Egoísta | |||||
---|---|---|---|---|---|---|---|---|---|---|
| σ | | σ | | σ | | σ | | σ | |
Raspberry1-Computador | 100 | 0.0 | 100 | 0.0 | 99 | 1.2 | 75 | 4.2 | 47 | 9.5 |
Computador- Raspberry 2 | 100 | 0.0 | 100 | 0.0 | 98 | 2.3 | 79 | 5.6 | 43 | 7.8 |
Raspberry 1 - Raspberry 3 | 100 | 0.0 | 100 | 0.0 | 96 | 3.2 | 70 | 6.7 | 39 | 9.8 |
Raspberry 2- Raspberry 3 | 100 | 0.0 | 100 | 0.0 | 100 | 0.0 | 73 | 4.5 | 48 | 10.1 |
Raspberry 1 Raspberry 2 | 100 | 0.0 | 100 | 0.0 | 92 | 3.4 | 73 | 6.7 | 47 | 8.7 |
Computador-Raspberry 3 | 100 | 0.0 | 100 | 0.0 | 100 | 0.0 | 69 | 7.8 | 48 | 9.4 |
3.2. Nodo Con Sistema Distribuido
En este escenario, se hizo que el nodo A realizara el proceso de ingreso con un sistema distribuido ya conformado. Se formó el sistema con 3 dispositivos, y se configuró el cuarto dispositivo para realizar la negociación con el sistema.
3.2.1. Toma de Decisiones
Se utilizó cada uno de los nodos para que realizaran el proceso de ingreso con el sistema. En el primer paso, que es la toma de decisiones, se obtuvieron los resultados que se presentan en la Tabla 4 Se observa que a diferencia del caso nodo-nodo, hubo mayor porcentaje de acuerdo sobre pasar a la siguiente etapa de la negociación. Esto se debe a que los nodos encuentran en un sistema ya constituido, un lugar en el que pueden confiar más a la hora de encontrar recursos y sentirse parte de una comunidad.
Escenarios | Muy Altruista | Altruista | Neutro | Egoísta | Muy Egoísta | |||||
---|---|---|---|---|---|---|---|---|---|---|
| σ | | σ | | σ | | σ | | σ | |
Computador- Red | 100 | 0.0 | 99 | 1.2 | 74 | 7.6 | 21 | 13.1 | 9 | 2.6 |
Raspberry1-Red | 100 | 0.0 | 100 | 0.0 | 100 | 0 | 98 | 5.5 | 77 | 16.8 |
Raspberry 2-Red | 100 | 0.0 | 100 | 0.0 | 93 | 4.6 | 40 | 8.4 | 18 | 8.2 |
Raspberry 3-Red | 100 | 0.0 | 100 | 0.0 | 95 | 5.8 | 42 | 9.6 | 23 | 5.2 |
Se observa también que la Raspberry 1 tuvo una alta inclinación a hacer parte del sistema distribuido en casi todos los ambientes, incluso en el muy egoísta, aunque sus recursos eran muy similares a los de la Raspberry 3. En el caso del computador, este presentó menos inclinación a hacer parte del sistema distribuido, ya que la suma de los recursos que presentan los dispositivos Raspberry combinadas no se comparan con los recursos que tiene el computador y aquí el deseo de hacer parte del sistema se debió más a un sentido de altruismo que de necesidad de recursos. La dispersión en el caso del escenario del comportamiento muy altruista y altruista fue cero, ya que todos los dispositivos aceptaron la unión sin excepción.
3.2.2. Negociación
Al igual que en el escenario nodo-nodo, se realizó la misma prueba de negociación del nodo con el sistema y se observó que los porcentajes de recursos entregados al sistema bajaron un poco con respecto al anterior escenario, como se observa en la Tabla 5. En este caso, el comportamiento de la red variaba, al igual que el del nodo.
Escenarios | Escenario 1 | Escenario 2 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
C | σ | Red | σ | R1 | σ | Red | σ | |||
Muy Altruista | 84.9 | 19.2 | 40.2 | 19.2 | 82.5 | 22 | 38.3 | 11.2 | ||
Altruista | 72.11 | 15.2 | 35.4 | 12.3 | 69.3 | 11.1 | 33.2 | 9.2 | ||
Neutro | 51.7 | 17.1 | 32.2 | 13.4 | 50.1 | 12.4 | 29.3 | 8.2 | ||
Egoísta | 42.8 | 12.2 | 24.5 | 9.4 | 38.9 | 9.3 | 23.1 | 6.4 | ||
Muy Egoísta | 38.1 | 11.1 | 26.1 | 7.3 | 33.9 | 6.9 | 24.5 | 5.4 | ||
Escenarios | Escenario 3 | Escenario 4 | ||||||||
R2 | σ | Red | σ | R3 | σ | Red | σ | |||
Muy Altruista | 81.9 | 26.2 | 39.2 | 8.4 | 84.4 | 18.2 | 39.1 | 7.5 | ||
Altruista | 72.3 | 17.4 | 34.2 | 11.2 | 69.3 | 13.2 | 31.8 | 8.9 | ||
Neutro | 52 | 14.1 | 30.1 | 8.3 | 50 | 8.3 | 28.8 | 11.2 | ||
Egoísta | 39.3 | 12.9 | 24.6 | 5.3 | 41.1 | 8.1 | 23.8 | 7.9 | ||
Muy Egoísta | 36 | 9.3 | 23.9 | 4.6 | 33.9 | 4.5 | 24.1 | 8 |
En este caso, se puede observar que los recursos que ofrece la red no superan el 50% de los recursos que tiene disponible. Esto se programó de esta manera, ya que en un escenario altruista, nuevos nodos podrán acceder hasta a un 80% de los recursos disponibles de la red. Esto sería desventajoso para nuevos nodos, aunque aseguraría cierta cantidad de recursos para nodos nuevos, más los recursos que aporta el nodo que es aceptado. Al igual que en el caso nodo-nodo, el porcentaje de recursos entregados disminuye a medida que el nodo se vuelve más egoísta.
En la Figura 6 se muestran los recursos entregados de acuerdo con la variación del índice de egoísmo. La gráfica muestra una línea recta que va desde cuando el nodo es 100% altruista y entrega la totalidad de recursos libres al sistema y termina cuando el nodo tiene un índice de egoísmo del 0.9, en cuyo caso no hubo acuerdo de los recursos a entregar. Esta gráfica se hizo con 100 negociaciones entre el nodo y el sistema, el cual variaba su comportamiento aleatoriamente, igual que el nodo, desde el altruismo hasta el egoísmo.
También se pudo constatar la variación de los recursos entregados por el nodo, de acuerdo con el comportamiento de la otra parte, ya sea el nodo o el sistema. Se obtuvieron los resultados de las Figuras 7 y 8. En la Figura 7, se puede observar cómo aumentan los recursos que el nodo entrega al sistema cuando el nodo es más altruista, casi sin ser afectado por las variaciones del comportamiento de la otra parte, mientras esta sea altruista también.
En la Figura 8, se observa desde diferentes ángulos cómo la cantidad de recursos que se entrega se ve afectada cuando ambas partes son egoístas, ya que hace que el nodo tenga que aportar más. En este caso, es cuando la negociación se presenta en su máxima expresión, ya que ninguno quiere dar ninguna ventaja al otro, por lo cual seden lo mínimo posible y es cuando se presentan más rondas de negociación. Usualmente, en un ambiente altruista, las rondas son de una o dos propuestas, mientras que cuando ambos son egoístas, estas se componen de hasta 10 rondas. En ocasiones, no se llega a ningún acuerdo, es decir, las rondas de negociación siguen indefinidamente.
Cuando la otra parte es altruista y el nodo es egoísta, el nodo aporta menor cantidad de recursos, ya que la otra parte va a aceptar cualquier oferta que el nodo haga, por desventajosa que sea. Se observa también en estos casos, que aunque la teoría dice que el primero que realiza la oferta es siempre el que tiene la ventaja a la hora de realizar la negociación, es interesante el hecho de que eso no ocurre aquí. Por lo que también se debe tener en cuenta el comportamiento del individuo, pues si este es demasiado altruista, va a dar una mayor cantidad de recursos en la primera oferta.
3.2.3 Ingreso al Sistema
Los porcentajes de ingreso en estos escenarios, los cuales aparecen en la Tabla 6, son muy parecidos a los que se vieron en el caso nodo-nodo (Tabla 3). Los resultados se explican por el hecho de que los nodos que menos recursos tienen, ven en la red la oportunidad de acceder a más recursos y poder aumentar las posibilidades de satisfacción de sus necesidades, mientras que en los dispositivos que más tienen recursos, como los computadores, uno de sus principales incentivos para el ingreso será el ganar reputación en el sistema. Una vez el nodo toma la decisión de pasar a la siguiente etapa, es muy probable que lleguen a un acuerdo en los tres primeros escenarios de comportamiento, aunque en el escenario egoísta, en un poco menos de la mitad de las veces se llegó a un acuerdo.
Escenarios | Muy Altruista | Altruista | Neutro | Egoísta | Muy Egoísta | |||||
---|---|---|---|---|---|---|---|---|---|---|
| σ | | σ | | σ | | σ | | σ | |
Computador-Red | 100 | 0 | 100 | 0 | 100 | 0 | 83 | 5.8 | 44 | 14.5 |
Raspberry1-Red | 100 | 0 | 100 | 0 | 100 | 0 | 86 | 6.5 | 46 | 13.2 |
Raspberry 2-Red | 100 | 0 | 100 | 0 | 100 | 0 | 88 | 4.6 | 42 | 12.7 |
Raspberry 3-Red | 100 | 0 | 100 | 0 | 98 | 2.3 | 81 | 7.1 | 48 | 15.6 |
Entre las pruebas que se realizaron a la hora de formar el sistema distribuido, el principal inconveniente que se encontró fueron los tiempos de su formación. Entre más nodos quieren ingresar al sistema distribuido, los tiempos fueron más altos. Este fenómeno es producto de la sincronización que requieren los programas de recepción y envío de archivos necesarios para tomar la decisión inicial de ingreso y luego en la negociación del nodo con el sistema distribuido sobre la cantidad de recursos que va a aportar, ya que se presenta un proceso de oferta y contraoferta de recursos que conlleva a un intercambio de mensajes entre el nodo y la red.
4. Conclusiones
El método de toma de decisiones escogido, estuvo acorde a las necesidades del proyecto, ya que era de los menos costosos computacionalmente hablando, lo que es perfecto para las redes ad hoc. Además de ser un método sencillo es muy completo porque permite al nodo dar una valoración de cada uno de los criterios, exaltando aquellos que realmente necesita, y además de poder valorar qué tanto ese criterio aplica a las opciones disponibles.
El método de negociación de concesiones sucesivas de Zeuthen permitió al nodo indicar al sistema con qué cantidad de recursos iba a colaborar. El método es muy completo ya que permite hacer propuestas y contrapropuestas durante gran cantidad de rondas, este método resultó ser atractivo por su facilidad de implementación, además cada jugador sigue realizando propuestas llegando siempre a un acuerdo en un número finito de etapas, por supuesto el número de estas iteraciones se limitaron a tres por tratarse de una red ad hoc.
Se encontró que ante el comportamiento altruista de un nodo, este no es afectado de manera considerable por los posibles comportamientos egoístas de sus vecinos; mientras que en un escenario egoísta, el nodo se ve obligados a aportar más recursos ya que la otra parte así lo exige; incluso llegando a un desacuerdo total de las propuestas, por lo tanto en esos casos no se formó el sistema distribuido.
Los nodos prefieren realizar procesos de unión con sistemas ya constituidos en vez de realizarlos con nodos solitarios, esto se debe a que los nodos encuentran una organización que les puede ofrecer de manera justa acceso a recursos que el nodo quizás no posea o un lugar en donde convivir y en el cual puedan ganar reputación.