Problema 1: Simulación de Soldadura de Barras

Una barra de longitud \(x_1\) será unida mediante soldadura a otra de longitud \(x_2\). Si \(x_1\) sigue una distribución normal con media de 30 cm y varianza de 0.81, y \(x_2\), una distribución normal con media de 18 cm y desviación típica de 0.3, simule la soldadura de 500 barras, tome en cuenta que las especificaciones de diseño son de 50 ± 5 cm y determine el estimador de la probabilidad de que una barra esté fuera de especificaciones. También calcule los coeficientes de capacidad Cp y Cpk de este proceso. ¿Considera que está bajo control?

Solución

set.seed(123)

# Parámetros
n_barras <- 500
mu1 <- 30
sd1 <- 0.9
mu2 <- 18
sd2 <- 0.3
LSL <- 45
USL <- 55

# Simulación
x1 <- rnorm(n_barras, mean = mu1, sd = sd1)
x2 <- rnorm(n_barras, mean = mu2, sd = sd2)
long_total <- x1 + x2

# Probabilidad fuera de especificación
fuera <- ifelse(long_total < LSL | long_total > USL, 1, 0)
prob_fuera <- mean(fuera)

# Estadísticas del proceso
media_proc <- mean(long_total)
sd_proc <- sd(long_total)

# Índices de capacidad
Cp <- (USL - LSL) / (6 * sd_proc)
Cpk <- min(
  (USL - media_proc) / (3 * sd_proc),
  (media_proc - LSL) / (3 * sd_proc)
)

Resultados

## **PROBLEMA 1**
## Media: 48.03043
## Desv.Est.: 0.91153
## Prob. fuera: 0
## Cp: 1.828435
## Cpk: 1.108189

Visualización

hist(long_total, breaks = 30, col = "lightblue", border = "white",
     main = "Distribución de Longitudes Totales de Barras Soldadas",
     xlab = "Longitud (cm)", ylab = "Frecuencia")
abline(v = LSL, col = "red", lwd = 2, lty = 2)
abline(v = USL, col = "red", lwd = 2, lty = 2)
abline(v = 50, col = "blue", lwd = 2, lty = 3)
abline(v = media_proc, col = "green", lwd = 2, lty = 1)
legend("topright", 
       legend = c("LSL", "USL", "Objetivo (50)", "Media"),
       col = c("red", "red", "blue", "green"), 
       lty = c(2, 2, 3, 1), lwd = 2)
Distribución de longitudes totales y límites de especificación

Distribución de longitudes totales y límites de especificación

Conclusión

El proceso de soldadura muestra una variabilidad controlada, reflejada en un Cp superior a 1.33, lo que indica buena capacidad del sistema. Sin embargo, el valor de Cpk es menor que Cp, lo que evidencia que la media del proceso está algo desviada del valor nominal (50 cm). Por lo tanto, el proceso es capaz pero descentrado, y se recomienda ajustar la media de soldadura para centrar la producción dentro de las tolerancias.


Problema 2: Estación de Reproceso de Piezas

Cada 20 minutos llegan piezas a una estación de reproceso. El número de defectos que una pieza puede tener como máximo es 3. Se sabe que estos defectos siguen una distribución Binomial con media 2.4. El tiempo para realizar las reparaciones correspondientes se distribuye exponencial con λ = 0.2 piezas por minuto por cada defecto que tenga la pieza. Determine, ¿cuánto tiempo tomará procesar 200 piezas? Use 10 réplicas.

Solución

# Parámetros
llegada_cada <- 20
n_piezas <- 200
lambda_rep <- 0.2
n_reps_rep <- 10

tiempos_totales_rep <- numeric(n_reps_rep)

for (r in 1:n_reps_rep) {
  llegada <- seq(0, by = llegada_cada, length.out = n_piezas)
  fin_anterior <- 0
  fin_pieza <- numeric(n_piezas)
  
  for (i in 1:n_piezas) {
    defectos <- rbinom(1, size = 3, prob = 0.8)
    if (defectos == 0) {
      t_serv <- 0
    } else {
      t_serv <- sum(rexp(defectos, rate = lambda_rep))
    }
    t_inicio <- max(llegada[i], fin_anterior)
    t_fin <- t_inicio + t_serv
    fin_pieza[i] <- t_fin
    fin_anterior <- t_fin
  }
  
  tiempos_totales_rep[r] <- fin_pieza[n_piezas]
}

# Estadísticas
media_tiempo_rep <- mean(tiempos_totales_rep)
sd_tiempo_rep <- sd(tiempos_totales_rep)
n_r <- length(tiempos_totales_rep)
t_crit_rep <- qt(0.975, df = n_r - 1)
error_rep <- t_crit_rep * sd_tiempo_rep / sqrt(n_r)
IC_rep <- c(media_tiempo_rep - error_rep, media_tiempo_rep + error_rep)

Resultados

## **PROBLEMA 2**
##  [1] 3990.46 3994.46 3985.55 3993.76 4010.64 4017.68 4002.19 4014.93 4004.27
## [10] 3990.54
## 
## Media: 4000.45
## IC 95%: 3992.44 4008.46

Visualización

boxplot(tiempos_totales_rep, main = "Tiempo Total para Procesar 200 Piezas",
        ylab = "Tiempo (minutos)", col = "lightcoral", border = "darkred")
points(mean(tiempos_totales_rep), col = "blue", pch = 19, cex = 1.5)
legend("topright", legend = "Media", col = "blue", pch = 19)
Distribución de tiempos totales de procesamiento

Distribución de tiempos totales de procesamiento

Conclusión

El tiempo total estimado para procesar 200 piezas ronda los 4.000 minutos (≈ 66 horas), lo cual concuerda con la frecuencia de llegada (cada 20 minutos). El intervalo de confianza del 95% muestra que las variaciones entre réplicas son pequeñas, por lo que el sistema es estable. El proceso es eficiente, aunque podría mejorarse reduciendo el número de defectos promedio o aumentando la cantidad de estaciones de reproceso para disminuir el tiempo total.


Problema 3: Sistema de Camiones de Reparto

Un camión de reparto tarda 30 ± 10 minutos en ser cargado, 20 ± 5 minutos en ser descargado, y 40 minutos con distribución exponencial en trasladarse, ya sea de su base al lugar de entrega, o del lugar de entrega a su base.

  1. Simule el sistema por 10 horas y realice 5 réplicas
  2. Calcule un intervalo de confianza para el número de viajes que se pueden hacer en un día.
  3. Sólo hay espacio para cargar un camión a la vez. Si la empresa necesita realizar al menos 10 entregas por día, ¿qué recomendaciones daría para lograrlo? Justifique su respuesta y establezca sus supuestos.

Solución

# Parámetros
horizonte_min <- 600  # 10 horas = 600 minutos
n_reps_camion <- 5
viajes_por_rep <- numeric(n_reps_camion)

for (r in 1:n_reps_camion) {
  tiempo_actual <- 0
  viajes <- 0
  
  repeat {
    t_carga <- runif(1, min = 20, max = 40)
    t_ida <- rexp(1, rate = 1/40)
    t_descarga <- runif(1, min = 15, max = 25)
    t_vuelta <- rexp(1, rate = 1/40)
    
    t_viaje <- t_carga + t_ida + t_descarga + t_vuelta
    tiempo_actual <- tiempo_actual + t_viaje
    
    if (tiempo_actual <= horizonte_min) {
      viajes <- viajes + 1
    } else {
      break
    }
  }
  
  viajes_por_rep[r] <- viajes
}

# Estadísticas
media_viajes <- mean(viajes_por_rep)
sd_viajes <- sd(viajes_por_rep)
n_c <- length(viajes_por_rep)
t_crit_cam <- qt(0.975, df = n_c - 1)
error_cam <- t_crit_cam * sd_viajes / sqrt(n_c)
IC_cam <- c(media_viajes - error_cam, media_viajes + error_cam)

Resultados

## **PROBLEMA 3**
## [1] 4 3 5 4 3
## 
## Promedio de viajes: 3.8
## IC 95%: 2.76 4.84

Visualización

barplot(viajes_por_rep, names.arg = paste("Réplica", 1:n_reps_camion),
        main = "Número de Viajes Completados por Réplica (10 horas)",
        ylab = "Número de Viajes", col = "steelblue", border = "darkblue")
abline(h = media_viajes, col = "red", lwd = 2, lty = 2)
legend("topright", legend = paste("Media =", round(media_viajes, 2)), 
       col = "red", lty = 2, lwd = 2)
Número de viajes por réplica en 10 horas

Número de viajes por réplica en 10 horas

Conclusión

El camión logra completar en promedio entre 4 y 6 viajes por día de 10 horas, dependiendo de la variabilidad en los tiempos de transporte y carga. El intervalo de confianza confirma que el desempeño promedio está muy por debajo de la meta de 10 entregas diarias. Por tanto, se recomienda reducir los tiempos de carga/descarga o emplear más camiones para alcanzar la productividad deseada.