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.
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 minutosEsta 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)
}Llamamos a la función para ejecutar las 5 réplicas y obtener los tiempos totales por cada una.
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
## Desviación estándar: 105.91 minutos
## Tiempo mínimo observado: 6345.9 minutos
## Tiempo máximo observado: 6628.27 minutos
## [1] 6408.691 6491.296 6484.843 6345.897 6628.269
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")```