al banco llegan 5 clientes con tiempo interarribo promedio de 10 minitos distribuidos exponencialmente, cada cliente consume un tiempo de 12 minitos y se simula hasta que el reloj tenga 400minitos.Al final de la simulacion se imprime la llegada y salida de un cliente.
se resalta lo siguiente:
- se definen las clases generador y cliente. ambas son entidades activas y heredan de la clase procesos que provee simpy.
- se usa el método exporiate para generar valores de una variable aleatoria exponencial.
from
SimPy.Simulation import * #libreria de SymPyfrom
# Componentes del modelo
random import * #Generadoresclass
Generador(Process):""" Representa al generador de clientes
"""
def
generar(self,cantidad,interarribo):""" Metodo PEM que genera los clientes
"""
Notas de SimPy
for
c = Cliente(name =
activate(c,c.servirse(t=12.0))
i in range(cantidad):"Cliente%02d"%(i,))#Se envia al cliente generado a servirset = expovariate(1.0/interarribo)
yield
hold,self,t #Se espera el tiempo t como tiempo entre clientesclass
Cliente(Process):def
servirse(self,t):"""Metodo PEM que representa la actividad de visitar
"""
print
"%7.4f %s: Llegando "%(now(),self.name)yield
hold,self,t #Se espera el tiempo t como el tiempo de la visitaprint
"%7.4f %s: Saliendo "%(now(),self.name)# Programa principal
initialize()
#inicializa el reloj de simulaciong = Generador()
#instanciando a un generadoractivate(g,g.generar(cantidad=5,interarribo=10.0),at=0.0)
#invocando al generadorsimulate(until=400.0)
#inicio de la simulacion hasta el tiempo 400Salida
:0.0000 Cliente00: Llegando
0.0057 Cliente01: Llegando
2.2897 Cliente02: Llegando
4.0111 Cliente03: Llegando
12.0000 Cliente00: Saliendo
12.0057 Cliente01: Saliendo
12.4169 Cliente04: Llegando
14.2897 Cliente02: Saliendo
16.0111 Cliente03: Saliendo
24.4169 Cliente04: Saliendocolas en el banco
Este corre:
ResponderEliminarhttp://simulacionchilpo.blogspot.com/2011/10/bank11-simple-example-using-monitor.html
Sólo tengo un problema al final.