1 Introducción

Este proyecto consiste en simular el tiempo total requerido para procesar 200 piezas en una estación de trabajo, donde cada pieza puede tener defectos. El proceso incluye el tiempo de llegada de las piezas y el tiempo de reparación de los defectos.


2 Parámetros del problema

Definimos los parámetros clave del sistema a simular.

n_piezas <- 200  # Cantidad de piezas a procesar
n_replicas <- 5  # Número de simulaciones (réplicas)
tiempo_entre_llegadas <- 20  # Tiempo entre la llegada de una pieza y otra (en minutos)

n_bin <- 3  # Número máximo de defectos por pieza
p_bin <- 0.8  # Probabilidad de que un defecto esté presente
# Esto implica una media esperada de 2.4 defectos por pieza (3 * 0.8)

lambda <- 0.2  # Parámetro de la distribución exponencial (defectos por minuto)
# Tiempo promedio por defecto: 1 / lambda = 5 minutos

3 Función de simulación

Esta función genera la simulación del tiempo total requerido para procesar n_piezas, repetida n_replicas veces. Para cada pieza, se genera un número aleatorio de defectos (distribución binomial), y si hay defectos, se simula el tiempo de reparación (distribución exponencial).

simular_replicas <- function(n_piezas, n_replicas, tiempo_llegada, lambda, n_bin, p_bin) {
  resultados <- numeric(n_replicas)  # Vector para guardar el resultado de cada réplica
  
  for (i in 1:n_replicas) {
    tiempos_reparacion <- numeric(n_piezas)  # Vector para guardar el tiempo de reparación por pieza
    
    for (j in 1:n_piezas) {
      defectos <- rbinom(1, size = n_bin, prob = p_bin)  # Genera el número de defectos
      tiempos_reparacion[j] <- if (defectos > 0) sum(rexp(defectos, rate = lambda)) else 0
    }
    
    # El tiempo total es la suma de los tiempos entre llegadas y de reparación
    total_tiempo <- sum(rep(tiempo_llegada, n_piezas)) + sum(tiempos_reparacion)
    resultados[i] <- total_tiempo
  }
  
  return(resultados)
}

4 Ejecutar simulación

Llamamos a la función para ejecutar las 5 réplicas y obtener los tiempos totales por cada una.

resultados <- simular_replicas(n_piezas, n_replicas, tiempo_entre_llegadas, lambda, n_bin, p_bin)

5 Mostrar resultados

Calculamos estadísticas descriptivas básicas del tiempo total que tarda cada réplica en procesar las 200 piezas.

tiempo_promedio <- mean(resultados)
desviacion <- sd(resultados)
minimo <- min(resultados)
maximo <- max(resultados)

cat("Tiempo promedio total para procesar 200 piezas:", round(tiempo_promedio, 2), "minutos\n")
## Tiempo promedio total para procesar 200 piezas: 6471.8 minutos
cat("Desviación estándar:", round(desviacion, 2), "minutos\n")
## Desviación estándar: 105.91 minutos
cat("Tiempo mínimo observado:", round(minimo, 2), "minutos\n")
## Tiempo mínimo observado: 6345.9 minutos
cat("Tiempo máximo observado:", round(maximo, 2), "minutos\n")
## Tiempo máximo observado: 6628.27 minutos
# Mostramos también los tiempos de cada réplica
print(resultados)
## [1] 6408.691 6491.296 6484.843 6345.897 6628.269

6 Visualización

Mostramos un gráfico de barras para visualizar el tiempo total por réplica. Además, marcamos con una línea roja el promedio.

barplot(resultados,
        names.arg = paste("Réplica", 1:n_replicas),
        col = "skyblue",
        main = "Tiempo total por réplica (200 piezas)",
        ylab = "Tiempo total (minutos)")

abline(h = tiempo_promedio, col = "red", lty = 2)
legend("topright", legend = "Promedio", col = "red", lty = 2, bty = "n")


```