Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- import sys
- '''
- random.expovariate(lambd), distribución exponencial
- random.gauss(mean, mu), distribución normal
- TLL: Momento en que llega un cliente.
- IA: Intervalo entre arribos de elementos (aleatorio).
- TS: Momento en que terminan de atender a un cliente.
- TAT: Tiempo de atención a un elemento (aleatorio).
- TEC: Momento en que un cliente recibe su orden y sale del sistema.
- T: Reloj del sistema (tiempo actual).
- NC: Número de elementos en la caja 1 (incluyendo al que esta enfrente)
- NC2: Número de elementos en la caja 2 (incluyendo al que esta enfrente).
- TF: Tiempo de finalización de la ejecución.
- '''
- try:
- tasa_llegadas = 1 / float(sys.argv[1])
- tasa_servicio = float(sys.argv[2]) # tasa en que atienden a alguien
- desvstd_servicio = float(sys.argv[3])
- tasa_preparacion = float(sys.argv[4]) # tasa en que preparan una hamburguesa
- desvstd_preparacion = float(sys.argv[5])
- #tiempo_simulacion = float(sys.argv[6])
- except IndexError:
- print("Uso: python sim-v2.py [tasa_llegadas] [tasa_atencion] [desvstd_atencion] [tasa_preparacion] [desvstd_preparacion]")
- exit(1)
- t = tll = ia = ts = tat = ts = tec = nc = nc2 = 0
- #tf = tiempo_simulacion
- # Se inicializa tll con un valor y ts y tec con inf para que el
- # primer evento en llevarse acabo sea la llegada de un cliente
- tll = t + random.expovariate(tasa_llegadas)
- ts = float('inf')
- tec = float('inf')
- print("Comienza simulacion con tiempo:", t)
- print("Primera llegada sera en:", tll)
- print("")
- # Se simulan solo la llegada de 7 clientes
- for i in range(7):
- if min(tll, ts, tec) == tll:
- t = tll
- ia = random.expovariate(tasa_llegadas)
- tll = t + ia
- nc = nc + 1
- if nc == 1:
- tat = random.gauss(tasa_servicio, desvstd_servicio)
- ts = t + tat
- pass # sale del if
- elif nc > 1:
- pass # sale del if
- elif min(tll, ts, tec) == ts:
- t = ts
- nc = nc - 1
- nc2 = nc2 + 1
- if nc == 0:
- tat = random.gauss(tasa_servicio, desvstd_servicio)
- ts = float('inf')
- pass # sale del if
- elif nc > 0:
- tat = random.gauss(tasa_servicio, desvstd_servicio)
- ts = t + tat
- pass # sale del if
- if nc2 == 1:
- tec = t + random.gauss(tasa_preparacion, desvstd_preparacion)
- pass
- elif nc2 > 1:
- pass
- elif min(tec, tll, tec) == tec:
- t = tec
- nc2 = nc2 - 1
- if nc2 == 0:
- tec = float('inf')
- pass
- elif nc2 > 0:
- tec = t + random.gauss(tasa_preparacion, desvstd_preparacion)
- pass
- # Imprime resultados por cada evento
- print("Tiempo:", t)
- print("Personas en el sistema a:", nc)
- print("Personas en el sistema b:", nc2)
- print("Tiempo en que terminaran de atender al sig. en caja a:", ts)
- print("Tiempo en que le entregaran su orden al sig. en caja b:", tec)
- print("Tiempo de la sig. llegada:", tll)
- print("")
- exit(0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement