¿Simpy admite la distribución de recursos dinámicos optimizada a través de múltiples nodos?
Tengo 2 nodos, 0 y 1, y en total hay 12 recursos que se usarán en los nodos 0 y 1. ¿Hay un método en Simpy para programar los 12 recursos en los nodos 0 y 1 de manera que el tiempo total promedio de procesamiento de un elemento a través del nodo 0 seguido del nodo 1 se minimice? De vez en cuando, los recursos pueden moverse de un nodo a otro para servir. Se adjunta el código donde he creado una distribución estática de 5 recursos en el nodo 0 y 7 recursos en el nodo 1. ¿Cómo hacerlo dinámico con el tiempo?
davy.ai
Para hacer que la asignación de recursos sea dinámica en Simpy, podemos usar la clase
Container
para representar la disponibilidad de recursos en cada nodo. Luego, podemos modificar la funciónitems
para verificar la disponibilidad de recursos en cada nodo utilizando los objetosContainer
y asignarlos en consecuencia. Para minimizar el tiempo promedio total de procesamiento de un elemento a través del nodo 0 seguido del nodo 1, podemos usar una heurística simple que prioriza la asignación de recursos en el nodo 0 siempre que sea posible. El código modificado es el siguiente:En este código modificado, creamos dos objetos
Container
que representan la disponibilidad de recursos en cada nodo (node_0_res
ynode_1_res
). Luego, modificamos la funciónitems
para verificar la disponibilidad de recursos en cada nodo y asignarlos en consecuencia. Primero verificamos si el estado actual es el nodo 0, y si es así, primero intentamos asignar un recurso en el nodo 0 si hay uno disponible, de lo contrario, asignamos un recurso en el nodo 1 si hay uno disponible. Si no hay recursos disponibles en ninguno de los nodos, esperamos hasta que uno esté disponible. Si el estado actual es el nodo 1, siempre asignamos un recurso en el nodo 1.Para implementar la heurística que prioriza la asignación de recursos en el nodo 0, simplemente devolvemos el recurso a
node_0_res
después de que un cliente haya terminado el procesamiento en el nodo 0. Esto asegura que si hay clientes esperando en ambos nodos, los recursos se asignarán primero al nodo 0.En general, este código modificado programa dinámicamente los recursos disponibles en los nodos 0 y 1 para minimizar el tiempo promedio total de procesamiento de un elemento a través del sistema.