jueves, 20 de octubre de 2011

resumen de banco

Modelo del banco sencillo con una taquilla. Al banco llegan 5 clientes con tiempo interarribo
promedio de 10min distribuidos exponencialmente, cada cliente consume un tiempo de 12min y se
simula hasta que el reloj tenga 400min. Al final de la simulación se imprime la llegada y salida de un
Se resalta lo siguiente:

Se definen las clases Generador y Cliente. Ambas son entidades activas y heredan de la
clase Process que provee SimPy.

Se usa el método expovariate para generar valores de una variable aleatoria exponencial.

from SimPy.Simulation import * #libreria de SymPy
from random import * #Generadores
# Componentes del modelo
class Generador(Process):
""" Representa al generador de clientes
def generar(self,cantidad,interarribo):
""" Metodo PEM que genera los clientes
10
Notas de SimPy
for i in range(cantidad):
c = Cliente(name = "Cliente%02d"%(i,))
activate(c,c.servirse(t=12.0)) #Se envia al cliente generado a servirse
t = expovariate(1.0/interarribo)
yield hold,self,t #Se espera el tiempo t como tiempo entre clientes
class 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 visita
print "%7.4f %s: Saliendo "%(now(),self.name)
# Programa principal
initialize() #inicializa el reloj de simulacion
g = Generador() #instanciando a un generador
activate(g,g.generar(cantidad=5,interarribo=10.0),at=0.0) #invocando al generador
simulate(until=400.0) #inicio de la simulacion hasta el tiempo 400
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: Saliendo

1 comentario: