Preguntas sobre el simulador

Preguntas sobre el simulador

de Natasha Paula Tenreiro Cirio -
Número de respuestas: 2

Buenos días,
Tengo preguntas sobre como implementar algunas cosas en el simulador

1) Logre generar una red anillo unidireccional con IDs únicas, pero cada vez que genero la red los IDs quedan siempre ordenados de la misma forma, en orden ascendente (en el sentido en el que se comunican los nodos). ¿Cómo puedo hacer en el simulador para que la red generada tenga nodos con IDs en orden aleatorio y no ascendente?

2) Para los algoritmos en los que hay varios nodos iniciadores encontré esta forma de "activar" el impulso espontaneo:

def initializer(self):
    for node in self.network.nodes():
        node.push_to_inbox(Message(meta_header=NodeAlgorithm.INI, destination=node))

Pero al correr la simulación observo que a todos los nodos le llega el impulso espontaneo a la vez (o al menos antes de que le llegue un mensaje de otro nodo), por lo tanto todos los nodos son iniciadores. ¿Cómo puedo hacer que los nodos reciban el impulso espontaneo en distinto tiempo?

3) En el protocolo Stages se mencionan dos funciones "close(sender)" y "open(sender)" con el propósito de encolar y desencolar mensajes. ¿Hay alguna función en el Simulador para implementar esto? Si no, ¿debemos hacer un manejo de mensajes que llegan desde el sender cuando deberíamos bloquearlo y luego leer estos mensajes en otro momento?

Desde ya muchas gracias,
Natasha

En respuesta a Natasha Paula Tenreiro Cirio

Re: Preguntas sobre el simulador

de Agustin Recoba Claudio -

Buenas! 

En cuanto a la primera consulta, depende de cómo estés asignando los ids iniciales. Abajo adjunto cómo se podría lograr en el código de inicialización del algoritmo.
Dejo por acá también la documentación asociada al tema IDs en la simulación: https://pydistsim.readthedocs.io/tutorials/implementing.html#node-s-own-id-and-neighbor-labels
Capaz iba por ahí el tema.

Lo segundo se puede arreglar usando timers en vez del método de inicialización espontánea (son mecanismos casi idénticos a nivel teórico). Abajo también dejo cómo sería la configuración de esto en la inicialización del algoritmo.

Por último, las funciones 'close' y 'open' que se usan en Stages no forman parte de las operaciones disponibles en el simulador, pero pueden simular las mismas dentro de los métodos 'receiving'. Otra opción es implementar el comportamiento a nivel simulación, lo que requeriría un entendimiento más profundo del manejo de mensajes en la herramienta, pero posible de todos modos. 


Quedo a las órdenes para cualquier otra consulta.

Saludos, 
Agustín Recoba