import random
import numpy as np
import matplotlib.pyplot as plt
# -------------------------
# Parámetros
# -------------------------
HORAS_SIMULACION = 24
TIEMPO_TOTAL = HORAS_SIMULACION * 60
tasa_llegadas = 1/6 # llegada cada 6 minutos
tasa_servicio = 1/5 # atención cada 5 minutos
# -------------------------
# Variables
# -------------------------
tiempo_actual = 0
llegadas = []
while tiempo_actual < TIEMPO_TOTAL:
tiempo_actual += random.expovariate(tasa_llegadas)
if tiempo_actual < TIEMPO_TOTAL:
llegadas.append(tiempo_actual)
esperas = []
ocupacion_agente = 0
fin_servicio = 0
for llegada in llegadas:
inicio_servicio = max(llegada, fin_servicio)
espera = inicio_servicio - llegada
esperas.append(espera)
servicio = random.expovariate(tasa_servicio)
fin_servicio = inicio_servio = inicio_servicio + servicio
ocupacion_agente += servicio
# Resultados
promedio_espera = np.mean(esperas)
utilizacion = (ocupacion_agente / TIEMPO_TOTAL) * 100
print("Clientes atendidos:", len(llegadas))
print("Tiempo promedio de espera:", round(promedio_espera, 2), "min")
print("Utilización del agente:", round(utilizacion, 2), "%")
# Histograma
plt.hist(esperas, bins=20, edgecolor='black')
plt.title("Distribución de tiempos de espera")
plt.xlabel("Minutos")
plt.ylabel("Frecuencia")
plt.show()
# Llegadas acumuladas
plt.plot(range(len(llegadas)), llegadas)
plt.title("Llegadas de clientes")
plt.xlabel("Cliente")
plt.ylabel("Minutos")
plt.show()
# Espera por cliente
plt.plot(esperas)
plt.title("Tiempo de espera por cliente")
plt.xlabel("Cliente")
plt.ylabel("Minutos")
plt.show()
To embed this project on your website, copy the following code and paste it into your website's HTML: