Se tienen dos longitudes aleatorias:
Cada barra soldada tiene longitud total: \[ Y = X_1 + X_2 \]
Se simularán 500 barras y se analizará cuántas están fuera del rango de especificaciones:
\[ \text{Límite inferior (LSL)} = 45, \quad \text{Límite superior (USL)} = 55 \]
# Semilla y parámetros
set.seed(424)
n <- 500 # número de barras simuladas
x1 <- rnorm(n, mean = 30, sd = 0.9) # x1 ~ Normal(30, 0.81)
x2 <- rnorm(n, mean = 18, sd = 0.3) # x2 ~ Normal(18, 0.09)
y <- x1 + x2 # Longitud total
# límites
LSL <- 45
USL <- 55
# estadísticos empíricos
mu_sim <- mean(y)
sigma_sim <- sd(y)
fuera <- sum(y < LSL | y > USL)
p_fuera_sim <- fuera / n
# índices de capacidad
Cp <- (USL - LSL) / (6 * sigma_sim)
Cpk <- min((USL - mu_sim) / (3 * sigma_sim), (mu_sim - LSL) / (3 * sigma_sim))
# Resultados
sigma_sim;
## [1] 0.9409034
p_fuera_sim;
## [1] 0.002
Cp;
## [1] 1.771347
Cpk
## [1] 1.068884
# histograma con límites y anotaciones
hist(y, breaks = 20, main = "Distribucion de longitudes soldadas",
xlab = "Longitud total (cm)", col = "lightblue")
abline(v = c(LSL, USL), col = "red", lwd = 2, lty = 2)
abline(v = mu_sim, col = "darkgreen", lwd = 2)
legend("topright", legend = c("Limite inferior", "Limite superior", "Media"),
col = c("red", "red", "darkgreen"), lty = c(2,2,1), lwd = 2)
# Etiqueta con Cp y Cpk
mtext(sprintf("Cp = %.3f Cpk = %.3f", Cp, Cpk), side = 3)
# Interpretación
mu_sim <- mean(y)
sigma_sim <- sd(y)
p_fuera_sim <- mean(y < LSL | y > USL)
Cp <- (USL - LSL) / (6 * sigma_sim)
Cpk <- min((USL - mu_sim) / (3 * sigma_sim), (mu_sim - LSL) / (3 * sigma_sim))
if (Cp >= 1.33 & Cpk >= 1.33) {
interpretacion <- "El proceso está bajo control y es capaz de cumplir las especificaciones."
} else if (Cp >= 1.33 & Cpk < 1.33) {
interpretacion <- "El proceso es capaz pero no está bien centrado respecto al objetivo."
} else {
interpretacion <- "El proceso no es capaz de cumplir con las especificaciones de manera consistente."
}
cat(sprintf("Media (sim): %.3f cm\nDesv. estándar (sim): %.3f cm\nProb. fuera (sim): %.4f\nCp: %.3f\nCpk: %.3f\nConclusión: %s\n",
mu_sim, sigma_sim, p_fuera_sim, Cp, Cpk, interpretacion))
## Media (sim): 48.017 cm
## Desv. estándar (sim): 0.941 cm
## Prob. fuera (sim): 0.0020
## Cp: 1.771
## Cpk: 1.069
## Conclusión: El proceso es capaz pero no está bien centrado respecto al objetivo.
La esperanza de tiempo por pieza = \(E[K]\cdot(1/\lambda) = 2.4 \times 5 = 12\) min. Para 200 piezas: \(200 \times 12 = 2400\) minutos ≈ 40 horas.
set.seed(424)
n_piezas <- 200
n_replicas <- 10
# Parámetros
n_def_max <- 3
p_def <- 2.4 / n_def_max # = 0.8
lambda <- 0.2 # tasa para exponencial (media = 1/lambda = 5)
simular_una_repl <- function(n_piezas, n_def_max, p_def, lambda) {
k <- rbinom(n_piezas, size = n_def_max, prob = p_def)
tiempos_pieza <- sapply(k, function(ki) {
if (ki == 0) return(0)
sum(rexp(ki, rate = lambda))
})
tiempo_total <- sum(tiempos_pieza)
list(tiempo_total = tiempo_total, tiempos_pieza = tiempos_pieza, n_defectos = k)
}
resultados <- vector("list", n_replicas)
tiempo_totales <- numeric(n_replicas)
for (i in seq_len(n_replicas)) {
r <- simular_una_repl(n_piezas, n_def_max, p_def, lambda)
resultados[[i]] <- r
tiempo_totales[i] <- r$tiempo_total
}
# imprimir
print(tiempo_totales)
## [1] 2290.587 2259.013 2362.678 2424.709 2213.614 2380.449 2191.189 2471.723
## [9] 2616.333 2363.697
print(tiempo_totales/60) # en horas
## [1] 38.17646 37.65021 39.37797 40.41181 36.89357 39.67414 36.51982 41.19539
## [9] 43.60555 39.39495
# Resumen
mean_t <- mean(tiempo_totales)
sd_t <- sd(tiempo_totales)
cat(sprintf("Tiempo medio (min) de las réplicas: %.2f (%.2f horas)\n", mean_t, mean_t/60))
## Tiempo medio (min) de las réplicas: 2357.40 (39.29 horas)
En este ejercicio se analiza el desempeño de un camión de reparto considerando los tiempos de carga, transporte y descarga en cada viaje. El proceso se modela de la siguiente manera:
Tiempo de carga: se distribuye uniformemente entre 20 y 40 minutos (30 ± 10).
Tiempo de descarga: se distribuye uniformemente entre 15 y 25 minutos (20 ± 5).
Tiempo de transporte: sigue una distribución exponencial con media de 40 minutos (λ = 1/40).
Cada viaje completo incluye: Carga → Transporte → Descarga → Transporte de regreso.
set.seed(424)
# Parámetros generales
tiempo_simulacion <- 10 * 60 # 10 horas = 600 minutos
n_replicas <- 5
#Función de simulación
simular_viajes <- function() {
tiempo <- 0
viajes <- 0
while (tiempo < tiempo_simulacion) {
carga <- runif(1, 20, 40) # Carga uniforme (30 ± 10)
traslado_ida <- rexp(1, rate = 1/40) # Traslado (media = 40)
descarga <- runif(1, 15, 25) # Descarga uniforme (20 ± 5)
traslado_vuelta <- rexp(1, rate = 1/40)
duracion_viaje <- carga + traslado_ida + descarga + traslado_vuelta
tiempo <- tiempo + duracion_viaje
if (tiempo <= tiempo_simulacion) {
viajes <- viajes + 1
}
}
return(viajes)
}
# Simulación de 5 réplicas
resultados <- replicate(n_replicas, simular_viajes())
# Estadísticas
media_viajes <- mean(resultados)
sd_viajes <- sd(resultados)
error <- qt(0.975, df = n_replicas - 1) * (sd_viajes / sqrt(n_replicas))
ic_inf <- media_viajes - error
ic_sup <- media_viajes + error
# Resultados
cat(paste0(
" RESULTADOS - EJERCICIO 3\n",
sprintf(" Réplicas realizadas: %d\n\n", n_replicas),
"Viajes completados por réplica:\n",
sprintf(" %s\n\n", paste(resultados, collapse = ", ")),
"Estadísticas del proceso:\n",
sprintf(" Media de viajes: %.2f\n", media_viajes),
sprintf(" Desviación estándar: %.2f\n", sd_viajes),
sprintf(" Intervalo de confianza (95%%): [%.2f, %.2f]\n\n", ic_inf, ic_sup),
"Conclusión:\n",
if (media_viajes >= 10) {
"Con los tiempos actuales, la empresa puede cumplir su meta de 10 entregas diarias.\n\n"
} else {
"La empresa NO alcanzaría las 10 entregas diarias. Se recomienda reducir los tiempos de carga o traslado.\n\n"
},
"Recomendaciones:\n",
"- Aumentar la capacidad de carga (permitir cargar más de un camión simultáneamente).\n",
"- Optimizar los tiempos de carga mediante automatización o más personal.\n",
"- Mejorar la eficiencia de las rutas para reducir los traslados.\n",
"- Planificar las descargas para minimizar tiempos muertos.\n"
))
## RESULTADOS - EJERCICIO 3
## Réplicas realizadas: 5
##
## Viajes completados por réplica:
## 3, 4, 5, 5, 4
##
## Estadísticas del proceso:
## Media de viajes: 4.20
## Desviación estándar: 0.84
## Intervalo de confianza (95%): [3.16, 5.24]
##
## Conclusión:
## La empresa NO alcanzaría las 10 entregas diarias. Se recomienda reducir los tiempos de carga o traslado.
##
## Recomendaciones:
## - Aumentar la capacidad de carga (permitir cargar más de un camión simultáneamente).
## - Optimizar los tiempos de carga mediante automatización o más personal.
## - Mejorar la eficiencia de las rutas para reducir los traslados.
## - Planificar las descargas para minimizar tiempos muertos.