Este documento presenta los tres ejercicios de simulación realizados
en R.
Se muestran los datos aleatorios, los resultados numéricos y las
gráficas con una breve conclusión para cada ejercicio.
En este ejercicio se simulan 500 longitudes de barras soldadas, sumando dos variables aleatorias normales independientes.
set.seed(987) # semilla nueva
# Generación de datos
x1 <- rnorm(500, mean = 30, sd = sqrt(0.81))
x2 <- rnorm(500, mean = 18, sd = 0.3)
soldadura <- x1 + x2
# Mostrar los primeros valores
head(data.frame(x1, x2, soldadura))
## x1 x2 soldadura
## 1 29.94869 18.05278 48.00147
## 2 30.24300 18.57502 48.81802
## 3 30.78702 17.93934 48.72636
## 4 29.82869 18.09760 47.92629
## 5 30.99063 18.19279 49.18342
## 6 29.19562 18.22455 47.42016
# Especificaciones
LSL <- 45
USL <- 55
# Cálculos de probabilidad y capacidad
fuera <- sum(soldadura < LSL | soldadura > USL) / length(soldadura)
sigma <- sd(soldadura)
media <- mean(soldadura)
Cp <- (USL - LSL) / (6 * sigma)
Cpk <- min((USL - media) / (3 * sigma), (media - LSL) / (3 * sigma))
# Resultados
cat("Probabilidad de estar fuera de especificación:", fuera, "\n")
## Probabilidad de estar fuera de especificación: 0.002
cat("Cp =", Cp, "\n")
## Cp = 1.762456
cat("Cpk =", Cpk, "\n")
## Cpk = 1.06397
# Gráfico
hist(soldadura, main = "Distribución de longitudes soldadas",
xlab = "Longitud total (cm)", col = "#7FD6A8", border = "gray")
abline(v = c(LSL, USL), col = "#E63946", lwd = 2)
Conclusión: El proceso presenta una probabilidad baja de producir barras fuera de especificación. Los índices Cp > 1 y Cpk > 1 indican que el proceso es capaz y centrado dentro de los límites de diseño.
set.seed(4321) # semilla diferente
replicas <- 10
tiempos_totales <- numeric(replicas)
for (r in 1:replicas) {
defectos <- rbinom(200, size = 3, prob = 2.4/3)
tiempos <- numeric(200)
for (i in 1:200) {
tiempos[i] <- sum(rexp(defectos[i], rate = 0.2))
}
tiempos_totales[r] <- sum(tiempos)
cat("\n--- Réplica", r, "---\n")
print(defectos[1:15]) # muestra los primeros 15 valores
}
##
## --- Réplica 1 ---
## [1] 3 1 3 3 2 2 2 2 3 3 1 3 3 2 2
##
## --- Réplica 2 ---
## [1] 3 2 2 1 2 2 3 2 2 3 2 3 3 2 3
##
## --- Réplica 3 ---
## [1] 3 2 2 3 3 3 3 2 3 3 2 2 3 3 2
##
## --- Réplica 4 ---
## [1] 2 3 2 3 2 2 3 3 3 2 2 3 2 3 2
##
## --- Réplica 5 ---
## [1] 2 2 2 2 1 2 2 2 3 2 3 2 3 3 2
##
## --- Réplica 6 ---
## [1] 3 3 1 2 1 2 2 2 3 2 2 2 2 3 3
##
## --- Réplica 7 ---
## [1] 3 3 3 2 1 1 2 3 2 2 2 2 2 2 3
##
## --- Réplica 8 ---
## [1] 3 2 2 2 3 2 3 2 3 1 3 2 1 3 1
##
## --- Réplica 9 ---
## [1] 3 2 3 3 1 2 3 2 3 2 3 3 2 2 3
##
## --- Réplica 10 ---
## [1] 2 3 2 2 3 3 2 2 2 0 1 2 2 2 3
cat("\nTiempo total para procesar 200 piezas (minutos):\n")
##
## Tiempo total para procesar 200 piezas (minutos):
print(tiempos_totales)
## [1] 2295.138 2375.997 2270.615 2236.727 2210.150 2434.772 2442.134 2518.547
## [9] 2156.796 2548.864
# Gráfico del tiempo total por réplica
plot(tiempos_totales, type = "b", pch = 19,
main = "Tiempo total por réplica",
xlab = "Réplica", ylab = "Tiempo total (minutos)",
col = "#4361EE")
grid()
Conclusión: El tiempo total de procesamiento de 200 piezas varía entre 2100 y 2500 minutos. Esta diferencia se debe a la variabilidad en el número de defectos y en el tiempo de reparación (distribución exponencial). En promedio, el proceso requiere más de 35 horas para completar las 200 piezas.
set.seed(2468) # nueva semilla
simular_viajes <- function(horas = 10) {
tiempo <- 0
viajes <- 0
while (tiempo < horas * 60) {
carga <- runif(1, 20, 40)
traslado1 <- rexp(1, rate = 1/40)
descarga <- runif(1, 15, 25)
traslado2 <- rexp(1, rate = 1/40)
ciclo <- carga + traslado1 + descarga + traslado2
if (tiempo + ciclo > horas * 60) break
tiempo <- tiempo + ciclo
viajes <- viajes + 1
}
return(viajes)
}
# Simulación con 5 réplicas
viajes_totales <- replicate(5, simular_viajes())
IC <- t.test(viajes_totales)$conf.int
cat("\nViajes por réplica (en 10 horas):\n")
##
## Viajes por réplica (en 10 horas):
print(viajes_totales)
## [1] 5 3 4 4 4
cat("\nIntervalo de confianza (95%):", IC, "\n")
##
## Intervalo de confianza (95%): 3.122011 4.877989
# Gráfico
barplot(viajes_totales, main = "Número de viajes por réplica",
xlab = "Réplica", ylab = "Viajes realizados",
col = "#F4A261", border = "#264653")
Dado que solo hay espacio para cargar un camión a la vez y el modelo muestra que se realizan entre 3 y 5 viajes por jornada de 10 horas, la empresa no alcanza las 10 entregas diarias. Para lograrlo, se recomienda:
Reducir los tiempos de carga, descarga o traslado mediante mejoras logísticas.
Ampliar la zona de carga para permitir más de un camión al mismo tiempo.
Aumentar el número de camiones o extender el horario de operación. Bajo estos ajustes, el sistema podría alcanzar el objetivo de 10 entregas por día.