Como ejecutar varios algoritmos en una simulación

Como ejecutar varios algoritmos en una simulación

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

Buenas tardes!

Para la tarea final implemente varios algoritmos por separado, cada uno en su clase, y quiero correrlos secuencialmente en la simulación. En base a la documentación, esto es posible, pero se me presentaron un par de complicaciones. 

La primera es al instanciar la simulación como: 

    sim = Simulation(net, (Alg1, Alg2, Alg3))

donde Alg1, Alg2 y Alg3 son mis algoritmos. Quiero que la simulación corra hasta que todos los algoritmos hayan finalizado, según la documentación esto se logra con sim.run() (o sim.run(0)), pero en la práctica solo me corre el primer algoritmo. Creo que esto puede tener algo que ver con decrementar stepsLeft aqui y luego retornar si stepsLeft es menor o igual a 0 aqui

Este problema lo puedo solucionar simplemente corriendo sim.run() tres veces, pero lo quería mencionar por si tiene alguna relación con el problema siguiente.


El otro problema es cuando instancio la simulación de la misma manera, pero intento correrla generando un video de esta forma:

    def make_vid(sim: Simulation) -> HTML:
        ...
        anim = draw.create_animation(sim, **kwargs)
        video = anim.to_html5_video()
   make_vid(sim)
El problema es que, igual que con sim.run() debo ejecutar make_vid(sim) tres veces para que corran los tres algoritmos. Pero tengo un problema extra que es que en create_animation se hace sim.reset(), por lo cual pierdo el estado y memoria de los nodos que obtuve de la ejecución del algoritmo anterior.

Mi solución momentánea fue copiar la clase de donde se importa draw y remover la línea que hace sim.reset(), pero quería preguntar si hay alguna otra forma de lograr correr la simulación y generar un video de manera más limpia o sencilla.

Desde ya muchas gracias

En respuesta a Natasha Paula Tenreiro Cirio

Re: Como ejecutar varios algoritmos en una simulación

de Javier Baliosian -
hola Natasha:

Agustín defendió ayer su proyecto de grado asi que tiene una buena excusa para no contestar. Imagino que el problema que encontraste es que hasta ahora veníamos pensando en algoritmos homogéneos y la situación en la que hay tres algoritmos distintos corriendo no había sido testeada.

veo que con un par de parches, que quizas no sean los mas elegantes, lograste hacer andar la simulación con los tres algoritmos. de nuestra parte, y hasta que logremos arreglar ese problema, esta perfecto así.
sólo te pido que junto con la entrega, nos mandes los cambios que hiciste al simulador para poder reproducirlos.

saludos!
Javier
En respuesta a Javier Baliosian

Re: Como ejecutar varios algoritmos en una simulación

de Agustin Recoba Claudio -
Buenas!

Acaba de quedar publicado una actualización a PyDistSim que corrige el problema, mediante este PR: https://github.com/agustin-recoba/PyDistSim/pull/36

La versión con el cambio es la 2.1.2: https://pypi.org/project/PyDistSim/2.1.2/

Saludos!