Problema 1: Soldadura de barras

Enunciado original:

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?

1.1 Generación de variables x1 y x2

set.seed(323)
n <- 500
x1 <- rnorm(n, mean = 30, sd = sqrt(0.81))
x2 <- rnorm(n, mean = 18, sd = 0.3)
X <- x1 + x2

1.2 Cálculo de probabilidad fuera de especificación (50 ± 5)

LSL <- 45
USL <- 55
prop_out <- mean(X < LSL | X > USL)
prop_out
## [1] 0

1.3 Cálculo de Cp y Cpk

sigmaX <- sd(X)
Cp <- (USL - LSL) / (6 * sigmaX)
Cpk <- min((mean(X) - LSL)/(3*sigmaX), (USL - mean(X))/(3*sigmaX))
Cp; Cpk
## [1] 1.775963
## [1] 1.09054

Soldadura de barras**

A continuación se presenta la explicación del punto y después se incluyen secciones separadas de código, cada una comentada y organizada.

1.1 Generación de variables x1 y x2

set.seed(123)
n <- 500
x1 <- rnorm(n, mean = 30, sd = sqrt(0.81))
x2 <- rnorm(n, mean = 18, sd = 0.3)
X <- x1 + x2

1.2 Cálculo de probabilidad fuera de especificación (50 ± 5)

LSL <- 45
USL <- 55
prop_out <- mean(X < LSL | X > USL)
prop_out
## [1] 0

1.3 Cálculo de Cp y Cpk

sigmaX <- sd(X)
Cp <- (USL - LSL) / (6 * sigmaX)
Cpk <- min((mean(X) - LSL)/(3*sigmaX), (USL - mean(X))/(3*sigmaX))
Cp; Cpk
## [1] 1.828435
## [1] 1.108189

Soldadura de barras

set.seed(123)
n <- 500
x1 <- rnorm(n, mean = 30, sd = sqrt(0.81))
x2 <- rnorm(n, mean = 18, sd = 0.3)
X <- x1 + x2

LSL <- 45; USL <- 55

# Estimador probabilidad fuera de especificación
prop_out <- mean(X < LSL | X > USL)
prop_out
## [1] 0
# Índices Cp y Cpk
sigmaX <- sd(X)
Cp <- (USL - LSL) / (6 * sigmaX)
Cpk <- min((mean(X) - LSL)/(3*sigmaX), (USL - mean(X))/(3*sigmaX))

Cp; Cpk
## [1] 1.828435
## [1] 1.108189

Problema 2: Estación de reproceso

Enunciado original:

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.


2.1 Función para simular el proceso

set.seed(42)
replicas <- 10
n_piezas <- 200
lambda <- 0.2
p <- 0.8

simulate_run <- function(n){
  arrivals <- seq(0, by = 20, length.out = n)
  finish_prev <- 0
  finishes <- numeric(n)

  for(i in 1:n){
    k <- rbinom(1, size = 3, prob = p)
    repair_time <- ifelse(k == 0, 0, sum(rexp(k, rate=lambda)))

    start <- max(arrivals[i], finish_prev)
    finish <- start + repair_time
    finishes[i] <- finish
    finish_prev <- finish
  }
  return(finish_prev)
}

2.2 Ejecutar las 10 réplicas

results <- replicate(replicas, simulate_run(n_piezas))
results
##  [1] 3980.148 3984.449 4018.806 3992.825 3994.959 3988.237 3998.612 4006.503
##  [9] 3988.521 3994.283
mean(results)
## [1] 3994.734
sd(results)
## [1] 11.23617

: Estación de reproceso (200 piezas, 10 réplicas)**

A continuación se explica cada sub‑punto y se agregan trozos de código separados.

Función para simular el proceso de reproceso

set.seed(42)
replicas <- 10
n_piezas <- 200
lambda <- 0.2
p <- 0.8

simulate_run <- function(n){
  arrivals <- seq(0, by = 20, length.out = n)
  finish_prev <- 0
  finishes <- numeric(n)

  for(i in 1:n){
    k <- rbinom(1, size = 3, prob = p)
    repair_time <- ifelse(k == 0, 0, sum(rexp(k, rate=lambda)))

    start <- max(arrivals[i], finish_prev)
    finish <- start + repair_time
    finishes[i] <- finish
    finish_prev <- finish
  }
  return(finish_prev)
}

2.2 Ejecutar las 10 réplicas y obtener resultados

results <- replicate(replicas, simulate_run(n_piezas))
results
##  [1] 3980.148 3984.449 4018.806 3992.825 3994.959 3988.237 3998.612 4006.503
##  [9] 3988.521 3994.283
mean(results)
## [1] 3994.734
sd(results)
## [1] 11.23617

Estación de reproceso (200 piezas, 10 réplicas)

set.seed(42)
replicas <- 10
n_piezas <- 200
lambda <- 0.2
p <- 0.8

simulate_run <- function(n){
  arrivals <- seq(0, by = 20, length.out = n)
  finish_prev <- 0
  finishes <- numeric(n)

  for(i in 1:n){
    k <- rbinom(1, size = 3, prob = p)
    repair_time <- ifelse(k == 0, 0, sum(rexp(k, rate=lambda)))

    start <- max(arrivals[i], finish_prev)
    finish <- start + repair_time
    finishes[i] <- finish
    finish_prev <- finish
  }
  return(finish_prev)
}

results <- replicate(replicas, simulate_run(n_piezas))
results
##  [1] 3980.148 3984.449 4018.806 3992.825 3994.959 3988.237 3998.612 4006.503
##  [9] 3988.521 3994.283
mean(results); sd(results)
## [1] 3994.734
## [1] 11.23617

Problema 3: Camión de reparto

Enunciado original:

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) Solo 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? Justifique su respuesta.


3.1 Función para simular los viajes del camión

set.seed(2025)
replicas <- 5
limite <- 10 * 60

simulate_trucks <- function(t_limit){
  t <- 0
  trips <- 0
  while(TRUE){
    load_time <- max(rnorm(1,30,10),0)
    unload_time <- max(rnorm(1,20,5),0)

    t <- t + load_time
    t <- t + rexp(1, rate=1/40)
    t <- t + unload_time
    t <- t + rexp(1, rate=1/40)

    if(t <= t_limit) trips <- trips + 1 else break
  }
  return(trips)
}

3.2 Simulación de 5 réplicas (10 horas)

results10 <- replicate(replicas, simulate_trucks(limite))
results10
## [1] 3 4 4 4 6

Sistema de reparto (10 horas, 5 réplicas)

Se muestran bloques separados de código para mayor claridad.

3.1 Función que simula los viajes de un camión

set.seed(2025)
replicas <- 5
limite <- 10 * 60

simulate_trucks <- function(t_limit){
  t <- 0
  trips <- 0
  while(TRUE){
    load_time <- max(rnorm(1,30,10),0)
    unload_time <- max(rnorm(1,20,5),0)

    t <- t + load_time
    t <- t + rexp(1, rate=1/40)
    t <- t + unload_time
    t <- t + rexp(1, rate=1/40)

    if(t <= t_limit) trips <- trips + 1 else break
  }
  return(trips)
}

3.2 Simulación de 5 réplicas para 10 horas

results10 <- replicate(replicas, simulate_trucks(limite))
results10
## [1] 3 4 4 4 6

: Sistema de reparto (10 horas, 5 réplicas)**

set.seed(2025)
replicas <- 5
limite <- 10 * 60

simulate_trucks <- function(t_limit){
  t <- 0
  trips <- 0
  while(TRUE){
    load_time <- max(rnorm(1,30,10),0)
    unload_time <- max(rnorm(1,20,5),0)

    t <- t + load_time
    t <- t + rexp(1, rate=1/40)
    t <- t + unload_time
    t <- t + rexp(1, rate=1/40)

    if(t <= t_limit) trips <- trips + 1 else break
  }
  return(trips)
}

results10 <- replicate(replicas, simulate_trucks(limite))
results10
## [1] 3 4 4 4 6

3.3 Intervalo de confianza para viajes por día (24 horas)

set.seed(99)
reps <- 5000
trips24 <- replicate(reps, simulate_trucks(24*60))

quantile(trips24, c(0.025, 0.5, 0.975))
##  2.5%   50% 97.5% 
##     8    11    13
mean(trips24)
## [1] 10.6914

para viajes por día (24 h)

Se separa el análisis en una sección específica.

3.3 Estimación del intervalo de confianza

set.seed(99)
reps <- 5000
trips24 <- replicate(reps, simulate_trucks(24*60))

quantile(trips24, c(0.025, 0.5, 0.975))
##  2.5%   50% 97.5% 
##     8    11    13
mean(trips24)
## [1] 10.6914

para viajes por día (24 h)

set.seed(99)
reps <- 5000
trips24 <- replicate(reps, simulate_trucks(24*60))

quantile(trips24, c(0.025, 0.5, 0.975))
##  2.5%   50% 97.5% 
##     8    11    13
mean(trips24)
## [1] 10.6914