jueves, 6 de octubre de 2011

BANCO SIMPLE

modelo del banco sencilo con una taquilla.
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 SymPy
from
# Componentes del modelo
random import * #Generadores
class
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 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
Salida
:
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
colas en el banco

1 comentario:

  1. Este corre:

    http://simulacionchilpo.blogspot.com/2011/10/bank11-simple-example-using-monitor.html

    Sólo tengo un problema al final.

    ResponderEliminar