Ejercicio 1: Simulación de Soldadura de Barras

Se realiza la simulación del proceso de soldadura

set.seed(2215)

# 1. Simulación de las longitudes de las barras
n_barras <- 500
x1 <- rnorm(n_barras, mean = 30, sd = sqrt(0.81))
x2 <- rnorm(n_barras, mean = 18, sd = 0.3)
soldadura <- x1 + x2

# 2. Definición de las especificaciones
LSL <- 45
USL <- 55

# 3. Cálculo de la probabilidad y los índices
prob_fuera <- sum(soldadura < LSL | soldadura > USL) / n_barras
Cp  <- (USL - LSL) / (6 * sd(soldadura))
Cpk <- min((USL - mean(soldadura)) / (3 * sd(soldadura)), (mean(soldadura) - LSL) / (3 * sd(soldadura)))

# 4. Presentación clara de los resultados numéricos
cat("Probabilidad de defecto estimada:", scales::percent(prob_fuera), "\n")
## Probabilidad de defecto estimada: 0%
cat("Índice de Capacidad Potencial (Cp):", round(Cp, 3), "\n")
## Índice de Capacidad Potencial (Cp): 1.798
cat("Índice de Capacidad Real (Cpk):", round(Cpk, 3), "\n")
## Índice de Capacidad Real (Cpk): 1.066
# 5. Gráfica de la distribución de las longitudes
hist(soldadura, main = "Distribución de Longitudes Soldadas",
     xlab = "Longitud total (cm)", ylab = "Frecuencia",
     col = "gray70", border = "black", breaks = 20)
abline(v = c(LSL, USL), col="firebrick", lwd=3, lty=2)
abline(v = mean(soldadura), col="steelblue", lwd=2)
legend("topright", legend=c("Límites de Especificación", "Media del Proceso"), 
       col=c("darkgoldenrod", "darkseagreen"), lty=c(2,1), lwd=c(3,2))

Análisis e Interpretación del Ejercicio 1

  • ¿Considera que está bajo control?

Con base en los resultados obtenidos, el proceso presenta un índice de capacidad potencial Cp (1.798), superior al umbral de referencia de 1.33, lo que evidencia una adecuada dispersión y un potencial favorable de cumplimiento frente a los límites de especificación establecidos.
No obstante, el índice de capacidad real Cpk (1.066) es inferior al valor recomendado, lo que sugiere que el proceso no se encuentra completamente centrado dentro del intervalo de tolerancia. En este sentido, aunque la variabilidad del proceso es reducida, se identifica un ligero desplazamiento respecto al valor nominal que limita su desempeño efectivo.
La probabilidad estimada de no conformidad (0%) confirma que las observaciones permanecen dentro de los límites especificados, y el histograma refleja una distribución concentrada hacia el límite inferior, sin evidencia de datos atípicos ni comportamientos fuera de control.


Ejercicio 2: Simulación de Estación de Reproceso

Se simula el tiempo total para reparar 200 piezas en 10 ocasiones (réplicas)

set.seed(1204)

n_replicas <- 10
n_piezas <- 200
tiempos_totales <- numeric(n_replicas)
max_defectos <- 3
media_defectos <- 2.4
prob_defecto <- media_defectos / max_defectos
tasa_reparacion <- 0.2

# Bucle para las 10 réplicas
for (r in 1:n_replicas) {
  defectos_por_pieza <- rbinom(n_piezas, size = max_defectos, prob = prob_defecto)
  tiempos_reparacion <- sapply(defectos_por_pieza, function(k) {
    if (k == 0) return(0)
    sum(rexp(k, rate = tasa_reparacion))
  })
  tiempos_totales[r] <- sum(tiempos_reparacion)
}

# Presentación clara de los resultados en formato de lista
cat("Tiempos totales (en minutos) para cada una de las 10 réplicas:\n")
## Tiempos totales (en minutos) para cada una de las 10 réplicas:
for (r in 1:length(tiempos_totales)) {
  cat(sprintf("Réplica %2d: %.2f minutos\n", r, tiempos_totales[r]))
}
## Réplica  1: 2496.38 minutos
## Réplica  2: 2367.91 minutos
## Réplica  3: 2458.48 minutos
## Réplica  4: 2236.22 minutos
## Réplica  5: 2410.54 minutos
## Réplica  6: 2244.15 minutos
## Réplica  7: 2174.72 minutos
## Réplica  8: 2343.62 minutos
## Réplica  9: 2468.92 minutos
## Réplica 10: 2055.28 minutos
# Gráfico del tiempo total por réplica
plot(tiempos_totales, type = "b", pch = 19,
     main = "Tiempo Total de Procesamiento por Réplica",
     xlab = "Número de Réplica", ylab = "Tiempo Total (minutos)",
     col = "darkorchid")
grid()

Análisis del Ejercicio 2

  • ¿Cuánto tiempo tomará procesar 200 piezas?
    El tiempo total varía en cada ejecución, como se aprecia en el gráfico de líneas. Con base en los resultados de la simulación, el tiempo promedio observado fue de 2325.62 minutos (aproximadamente 38.8 horas).
    Los valores específicos oscilaron entre 2055.28 y 2496.38 minutos. Esta variabilidad refleja el efecto aleatorio del número de defectos por pieza y del tiempo de reparación individual, manteniendo un comportamiento estable dentro del rango analizado.
    En términos operativos, el proceso demanda un esfuerzo temporal considerable, con una dispersión moderada que indica estabilidad, aunque con fluctuaciones atribuibles a la naturaleza probabilística del sistema de reproceso.

Ejercicio 3: Simulación de Camión de Reparto

Se simula el proceso logístico del camión

set.seed(842)

# Función para simular un día de trabajo del camión
simular_viajes <- function(horas_jornada = 8) {
  tiempo_maximo_min <- horas_jornada * 60
  tiempo_acumulado <- 0
  viajes_completados <- 0
  
  while (TRUE) {
    t_carga     <- runif(1, min = 20, max = 40)
    t_traslado1 <- rexp(1, rate = 1/40)
    t_descarga  <- runif(1, min = 15, max = 25)
    t_traslado2 <- rexp(1, rate = 1/40)
    tiempo_ciclo <- t_carga + t_traslado1 + t_descarga + t_traslado2
    
    if (tiempo_acumulado + tiempo_ciclo > tiempo_maximo_min) break
    
    tiempo_acumulado <- tiempo_acumulado + tiempo_ciclo
    viajes_completados <- viajes_completados + 1
  }
  return(viajes_completados)
}

# a) Simulación de 10 horas
viajes_10_horas <- replicate(5, simular_viajes(horas_jornada = 10))

# b) Simulación para intervalo de confianza en un día (8 horas)
viajes_8_horas <- replicate(1000, simular_viajes(horas_jornada = 8))
ic_95 <- t.test(viajes_8_horas)$conf.int

# Presentación clara de los resultados de (a) y (b)
cat("a) Viajes completados en 5 réplicas de 10 horas:", paste(viajes_10_horas, collapse = ", "), "\n\n")
## a) Viajes completados en 5 réplicas de 10 horas: 5, 3, 4, 5, 5
cat("b) Intervalo de confianza del 95% para un día de 8 horas:", sprintf("[%s, %s]", round(ic_95, 3), round(ic_95, 3)), "\n")
## b) Intervalo de confianza del 95% para un día de 8 horas: [3.231, 3.231] [3.337, 3.337]
# Gráfica para el apartado a)
barplot(viajes_10_horas, main = "Número de Viajes por Réplica (Jornada de 10h)",
        xlab = "Réplica", ylab = "Viajes Realizados", 
        col = "steelblue", names.arg = 1:5,
        ylim = c(0, max(viajes_10_horas) + 1))

Análisis y Recomendaciones del Ejercicio 3

  • c) Si la empresa necesita realizar al menos 10 entregas por día, ¿qué recomendaciones daría? Justifique su respuesta y establezca sus supuestos.

    Los resultados de la simulación para una jornada de 8 horas muestran un intervalo de confianza del 95 % de [3.231, 3.337] viajes por día.
    El gráfico de barras correspondiente a la jornada de 10 horas refleja un rendimiento que oscila entre 5, 3, 4, 5, 5 viajes, evidenciando un desempeño significativamente por debajo del objetivo establecido.
    Por tanto, el sistema actual es incapaz de alcanzar las 10 entregas diarias, debido a la duración acumulada de los tiempos de carga, traslado y descarga, que limitan la productividad operativa del camión.

Recomendaciones: 1. Adquirir un segundo camión: Permitiría aumentar la capacidad operativa, posibilitando realizar cargas y entregas simultáneas.
2. Optimizar los tiempos en base: Se sugiere reducir los tiempos de carga y descarga mediante mejoras logísticas o de infraestructura.
3. Extender la jornada laboral: Aunque factible, esta medida implica mayores costos y posibles impactos en la eficiencia general.

Supuestos establecidos:
Se considera un “día laboral” de 8 horas, sin interrupciones externas (como tráfico o averías), y se asume que el muelle de carga constituye el principal cuello de botella dentro del sistema logístico.