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()

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: