Desarrollo proyecto Final.

Punto 1. Una barra de longitud x1 será unida mediante soldadura a otra de longitud x2. Si x1 sigue una distribución normal con media de 30 cm y varianza de 0.81, y x2, 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? NOTA: Consulte lo que es el indice de capacidad Cp y Cpk, y lo que es estar un procesos bajo control estadístico

set.seed(123)
n<-500
med1<- 30
sd1<- sqrt(0.81)
med2<- 18
sd2 <-0.3
LSL <- 45
USL <- 55
x1<- rnorm(n,mean=med1, sd= sd1)
x2<- rnorm(n, mean=med2, sd= sd2)

Barra Final soldada

x <- x1 + x2
fuera <- sum(x < LSL | x > USL)
prob_fuera<- fuera/n
cat("Barras fuera de especificacion:", fuera, "de",n, "\n")
## Barras fuera de especificacion: 0 de 500
cat("Probabilidad estimada:", prob_fuera, "\n\n")
## Probabilidad estimada: 0
sigma<-sd(x)
media<- mean(x)
Cp<- (USL- LSL) / (6* sigma)
Cpk <-min((USL-media) /(3*sigma),
          (media-LSL)/(3*sigma))
cat("Media=", media,"\n")
## Media= 48.03043
cat("Desviacion estandar=", sigma,"\n")
## Desviacion estandar= 0.9115265
cat("Cp=", Cp,"\n")
## Cp= 1.828435
cat("Cpk=", Cpk,"\n")
## Cpk= 1.108189
hist(x, main = "Distribución de longitudes simuladas",
     xlab = "Longitud de barra", breaks = 25)
abline(v = c(LSL, USL), col = "red", lwd = 2, lty = 2)
abline(v = media, col = "blue", lwd = 2)

En el histograma se observa que la mayoría de las longitudes simuladas se encuentran muy concentradas alrededor de la media (~48 cm). Las líneas rojas representan los límites de especificación (45 y 55 cm) y la línea azul marca el promedio del proceso. Ninguna barra generada cae fuera de los límites, lo que indica que el proceso es estable y cumple con las especificaciones de diseño.

plot(density(x), main="Densidad de longitudes simuladas",
     xlab="Longitud de barra")
abline(v = c(LSL, USL), col="red", lwd=2, lty=2)
abline(v = media, col="blue", lwd=2)

La gráfica de densidad muestra una distribución aproximadamente normal y simétrica alrededor de ~48 cm. Los límites de especificación (líneas rojas) quedan bastante alejados con respecto a la dispersión del proceso, indicando baja probabilidad de producir piezas fuera de tolerancia

boxplot(x, horizontal=TRUE,
        main="Boxplot de longitudes simuladas",
        xlab="Longitud de barra")
abline(v=c(LSL, USL), col="red", lwd=2, lty=2)
abline(v=media, col="blue", lwd=2)

En el boxplot se aprecia que los datos están muy agrupados, con ausencia de valores atípicos. La mediana (línea central) queda lejos de los límites de especificación, lo que confirma que el proceso se encuentra bajo control y con alta capacidad (Cp y Cpk > 1).

Punto 2. Cada 20 minutos llegan piezas a una estación de reproceso. El número de defectos que una pieza puede tener com o 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.

set.seed(2025)
nro_piezas<-200
llegadas<-20
n_bin<-3
p_bin <-2.4/3
lambda<-0.2
nro_replicas<-10
tiempo_terminado<- numeric(nro_replicas)
for (rep in 1:nro_replicas) {
  
  K <- rbinom(nro_piezas, size = n_bin, prob = p_bin)
  services_times <- numeric(nro_piezas)
  
  for (i in 1:nro_piezas) {
    k <- K[i]
    if (k == 0) {
      services_times[i] <- 0
    } else {
      services_times[i] <- sum(rexp(k, rate=lambda))
    }
  }
  
  arrival_times <- (0:(nro_piezas - 1)) * llegadas
  tiempo_inicio <- numeric(nro_piezas)
  tiempo_completado <- numeric(nro_piezas)
  
  for (i in 1:nro_piezas) {
    if (i == 1) {
      tiempo_inicio[i] <- arrival_times[i]
    } else {
      tiempo_inicio[i] <- max(arrival_times[i], tiempo_completado[i-1])
    }
    tiempo_completado[i] <- tiempo_inicio[i] + services_times[i]
  }
  
  tiempo_terminado[rep] <- tiempo_completado[nro_piezas]
}
tiempo_terminado
##  [1] 3985.040 4000.437 3989.086 3980.445 4001.416 3995.696 4017.478 3995.066
##  [9] 3988.419 3985.301
mean_finish<-mean(tiempo_terminado)
sd_finish<-sd(tiempo_terminado)
cat("Tiempo de finalizacion de 10 replicas en minutos:\n")
## Tiempo de finalizacion de 10 replicas en minutos:
print(tiempo_terminado)
##  [1] 3985.040 4000.437 3989.086 3980.445 4001.416 3995.696 4017.478 3995.066
##  [9] 3988.419 3985.301
cat(sprintf("\nMedia= %.2f minutos\nSD=%.2f minutos\n", mean_finish,sd_finish))
## 
## Media= 3993.84 minutos
## SD=10.78 minutos
cat(sprintf("Equivalente a %.2f horas(media)\n", mean_finish/60))
## Equivalente a 66.56 horas(media)
plot(tiempo_terminado, type="b", pch=19, col="blue",
     xlab="Réplica", ylab="Tiempo finalización (min)",
     main="Tiempo de terminación por réplica")

La gráfica muestra el tiempo total requerido para procesar las 200 piezas en cada una de las 10 réplicas. Los valores fluctúan ligeramente alrededor de 3990–4015 minutos, reflejando estabilidad del proceso. Las variaciones son pequeñas, indicando baja variabilidad en el sistema de reproceso

hist(tiempo_terminado, main="Histograma de tiempos finales",
     xlab="Minutos", breaks=10)

El histograma presenta la variabilidad de los tiempos de finalización. La mayor parte de los valores se concentran cerca de los 3990–4000 minutos, lo cual confirma consistencia en la simulación. La dispersión es baja, reflejando un sistema estable.

boxplot(tiempo_terminado, horizontal=TRUE,
        main="Boxplot tiempos finalización",
        xlab="Tiempo (min)")

El boxplot confirma la poca variabilidad entre réplicas. No se observan valores extremos, y la mediana está muy cerca del promedio. Esto muestra un comportamiento repetible del proceso de reparación.

Punto 3. 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. a) Simule el sistema por 10 horas y realice 5 réplicas b) Calcule un intervalo de confianza para el número de viajes que se pueden hacer en un día. c) Sólo hay espacio para cargar un camión a la vez. Si la em presa necesita realizar al menos 10 entregas por día, qué recomendaciones daría para lograrlo? Justifique su respuesta y establezca sus supuestos.

Soluciones.

  1. Simule el sistema por 10 horas y realice 5 réplicas
set.seed(4040)
horizon_10h_min <- 10 * 60  
horizon_24h_min <- 24 * 60   

load_mean <- 30; load_sd <- 10
unload_mean <- 20; unload_sd <- 5
travel_rate <- 1 / 40 

rnorm_trunc0 <- function(n, mean, sd) {
  x <- rnorm(n, mean = mean, sd = sd)
  x[x < 0] <- 0.1
  x
}
nrep_10h <- 5
viajes_10h <- integer(nrep_10h)

for (rep in 1:nrep_10h) {
  t <- 0
  viajes <- 0
  while (TRUE) {
    t <- t + rnorm_trunc0(1, load_mean, load_sd)
    if (t > horizon_10h_min) break
    t <- t + rexp(1, rate = travel_rate)
    if (t > horizon_10h_min) break
    t <- t + rnorm_trunc0(1, unload_mean, unload_sd)
    if (t > horizon_10h_min) break
    viajes <- viajes + 1
    # viaje de regreso
    t <- t + rexp(1, rate = travel_rate)
    if (t > horizon_10h_min) break
  }
  viajes_10h[rep] <- viajes
}

viajes_10h
## [1] 3 2 5 3 5
cat(sprintf("Media (5 réplicas, 10 h) = %.2f viajes\n", mean(viajes_10h)))
## Media (5 réplicas, 10 h) = 3.60 viajes
  1. Calcule un intervalo de confianza para el número de viajes que se pueden hacer en un día.
nrep_24h <- 2000
viajes_24h <- integer(nrep_24h)

for (rep in 1:nrep_24h) {
  t <- 0
  viajes <- 0
  while (TRUE) {
    t <- t + rnorm_trunc0(1, load_mean, load_sd)
    if (t > horizon_24h_min) break
    t <- t + rexp(1, rate = travel_rate)
    if (t > horizon_24h_min) break
    t <- t + rnorm_trunc0(1, unload_mean, unload_sd)
    if (t > horizon_24h_min) break
    viajes <- viajes + 1
    t <- t + rexp(1, rate = travel_rate)
    if (t > horizon_24h_min) break
  }
  viajes_24h[rep] <- viajes
}

mean_24h <- mean(viajes_24h)
sd_24h <- sd(viajes_24h)
ci_emp <- quantile(viajes_24h, probs = c(0.025, 0.975))

cat(sprintf("Simulación 24 h (n=%d): media = %.2f, sd = %.2f\n", nrep_24h, mean_24h, sd_24h))
## Simulación 24 h (n=2000): media = 10.94, sd = 1.46
cat(sprintf("IC 95%% empírico para viajes en 24 h: [%.0f, %.0f]\n", ci_emp[1], ci_emp[2]))
## IC 95% empírico para viajes en 24 h: [8, 14]
mean_per_camion_24h <- mean_24h

camiones_necesarios_media <- ceiling(10 / mean_per_camion_24h)

camiones_necesarios_robusto <- ceiling(10 / ci_emp[1])

cat(sprintf("Media por camión en 24h = %.2f viajes\n", mean_per_camion_24h))
## Media por camión en 24h = 10.94 viajes
cat(sprintf("Se necesitarían ~%d camiones (basado en la media) para >=10 viajes/día.\n", camiones_necesarios_media))
## Se necesitarían ~1 camiones (basado en la media) para >=10 viajes/día.
cat(sprintf("Se necesitarían ~%d camiones (basado en percentil 2.5%%) para >=10 viajes con más seguridad.\n", camiones_necesarios_robusto))
## Se necesitarían ~2 camiones (basado en percentil 2.5%) para >=10 viajes con más seguridad.
hist(viajes_24h, breaks = max(10, length(unique(viajes_24h))),
     main = "Histograma: viajes en 24 h (simulación)", xlab = "Viajes por camión en 24 h")

Esta gráfica muestra la distribución del número de viajes que un camión puede hacer en un día completo. El mayor número de resultados se concentra alrededor de 10 u 11 viajes, con límites entre 8 y 14 viajes según las réplicas. Esto permite construir un intervalo de confianza para la capacidad del proceso.

boxplot(list("10h (5rep)" = viajes_10h, "24h (2000rep)" = viajes_24h),
        main = "Comparación: viajes (10h vs 24h)", ylab = "Número de viajes")

El boxplot permite comparar la variabilidad del número de viajes entre una simulación corta (10 horas, pocas réplicas) y la simulación extendida (24 horas, 2000 réplicas). El proceso diario muestra estabilidad y menor variación gracias a la mayor cantidad de datos. Se aprecia que el camión suele cumplir la meta de 10 viajes diarios.

  1. Sólo hay espacio para cargar un camión a la vez. Si la em presa necesita realizar al menos 10 entregas por día, qué recomendaciones daría para lograrlo? Justifique su respuesta y establezca sus supuestos.
mean_per_camion_24h <- mean_24h

camiones_necesarios_media <- ceiling(10 / mean_per_camion_24h)

camiones_necesarios_robusto <- ceiling(10 / ci_emp[1])

cat(sprintf("Media por camión en 24h = %.2f viajes\n", mean_per_camion_24h))
## Media por camión en 24h = 10.94 viajes
cat(sprintf("Se necesitarían ~%d camiones (basado en la media) para >=10 viajes/día.\n", camiones_necesarios_media))
## Se necesitarían ~1 camiones (basado en la media) para >=10 viajes/día.
cat(sprintf("Se necesitarían ~%d camiones (basado en percentil 2.5%%) para >=10 viajes con más seguridad.\n", camiones_necesarios_robusto))
## Se necesitarían ~2 camiones (basado en percentil 2.5%) para >=10 viajes con más seguridad.

Con base en los resultados, un camión alcanza en promedio las 10 entregas/día, pero por variabilidad existe riesgo. Recomendamos: -Reducir el tiempo de carga (p.ej. 30→20 min) — efecto estimado: aumentar viajes por camión a ≈12/día -Si se necesita garantía alta, añadir una segunda bahía de carga o un segundo camión (pero preferir la segunda bahía si la carga es cuello de botella) -Optimizar rutas para reducir travel time. Estas medidas combinadas reducen la probabilidad de no alcanzar las 10 entregas y aumentan la capacidad operativa.Con base en los resultados, un camión alcanza en promedio las 10 entregas/día, pero por variabilidad existe riesgo. Recomendamos: -Reducir el tiempo de carga (p.ej. 30→20 min) — efecto estimado: aumentar viajes por camión a ≈12/día. -Si se necesita garantía alta, añadir una segunda bahía de carga o un segundo camión. -Optimizar rutas para reducir el tiempo de viaje. Estas medidas combinadas reducen la probabilidad de no alcanzar las 10 entregas y aumentan la capacidad operativa.

plot(viajes_10h, type="b", pch=19, col="darkgreen",
     xlab="Réplica",
     ylab="Viajes en 10h",
     main="Viajes en 10h por réplica")

Esta gráfica muestra cuántos viajes completó el camión en cada una de las 5 réplicas de 10 horas. Los valores fluctúan entre 2 y 5 viajes, con un promedio de 3.6. La variabilidad se debe al carácter aleatorio de los tiempos de carga, descarga y traslado.

hist(viajes_10h, main="Histograma de viajes (10h)",
     xlab="Número de viajes", breaks=5)

El histograma refleja la frecuencia de viajes completados en 10 horas. Aunque la mayoría de réplicas completan 3 o más viajes, también se observan escenarios menos productivos (2 viajes), lo que evidencia variabilidad en la operación.

plot(density(viajes_24h), main="Densidad de viajes por día (24h)",
     xlab="Viajes en 24h")
abline(v=mean_24h, col="red", lwd=2)

La densidad muestra la forma de la distribución del número de viajes por día. Se observa una curva unimodal concentrada cerca de 11 viajes. La línea roja señala la media, evidenciando que la operación promedio logra satisfacer la meta diaria.