Poductividad con Excel

Aprende Excel resolviendo problemas reales de ingeniería industrial. Cada artículo te guía desde cero con datos reales, fórmulas explicadas y ejercicios prácticos diseñados para que apliques lo que aprendes en clase.

Simulación de Eventos Discretos con VBA: Línea de Producción

Simulación de Eventos Discretos con VBA: Línea de Producción

En la ingeniería industrial moderna, la toma de decisiones basada en intuición es obsoleta. Necesitamos herramientas que nos permitan «probar» escenarios sin detener la producción real. La Simulación de Eventos Discretos (DES) es la respuesta, y cuando se combina con la potencia de VBA en Excel, se convierte en una herramienta de análisis accesible para cualquier ingeniero.

Definición del problema

Imaginemos una línea de producción compuesta por varias estaciones de trabajo (servidores). Las piezas llegan al sistema de manera aleatoria (tasa de llegada), y cada estación requiere un tiempo variable para procesar la pieza (tiempo de servicio). El problema operativo clave es determinar:

  • ¿Cuál es el nivel de inventario en cola (buffer) en cada estación?
  • ¿Qué tan ocupadas están las máquinas (utilización)?
  • ¿Cuánto tiempo promedio pasa una pieza esperando o siendo procesada?

Si no se modela correctamente, podemos sobre-dimensionar equipos o, peor aún, crear cuellos de botella invisibles que reducen drásticamente la eficiencia global. La Simulación de Eventos Discretos nos permite modelar este flujo de trabajo dinámico paso a paso, registrando el estado del sistema solo cuando ocurre un «evento» (llegada de pieza, finalización de servicio).

Explicación técnica

La DES opera bajo el principio de que el estado del sistema solo cambia en puntos específicos en el tiempo: los eventos. En nuestro caso, los eventos son: Llegada de Pieza y Finalización de Servicio.

Conceptos Clave

  • Distribución Exponencial:RND en VBA).
  • Variables de Estado: Necesitamos rastrear cuántas piezas hay en cola y si cada estación está ocupada o libre.
  • Manejo de Tiempos: En VBA, el tiempo avanza saltando de un evento al siguiente. No se usa un bucle de tiempo fijo (como en la simulación continua), sino que se calcula el tiempo del próximo evento y se avanza el reloj de simulación hasta ese punto.

Funciones de VBA Utilizadas

Bucles (Do While): Controlan la duración total de la simulación (ej. simular 1000 piezas).

Application.Wait: Aunque en DES puro se maneja el tiempo internamente, en VBA se puede usar para pausas visuales si se desea depurar la ejecución.

Celdas como Variables: Las celdas de Excel (ej. Range("A1").Value) se utilizan para almacenar y reportar los resultados acumulados (contadores, tiempos totales).

RND: Genera el factor aleatorio necesario para muestrear de la distribución exponencial.

Guía paso a paso

Implementaremos una simulación básica con 3 estaciones. Usaremos los siguientes datos de ejemplo:

  • 0.5 piezas/minuto (Tiempo promedio de llegada = 2 minutos).
  • Tiempos de Servicio Promedio ($mu$): Estación 1: 3 min; Estación 2: 2 min; Estación 3: 4 min.
  • Capacidad de Cola: 5 piezas por estación.

1. Diseño del Flujo de Simulación en VBA

El flujo principal será un bucle que se repite hasta que se cumpla la condición de parada (ej. número máximo de piezas procesadas). Dentro del bucle, se gestionará la llegada, el procesamiento y la transferencia entre estaciones.

2. Generar Tiempos de Llegada (Distribución Exponencial)

Tiempo_Llegada = - (1 / 0.5) * Log(RND)

3. Generar Tiempos de Servicio (Distribución Exponencial)

Para cada estación, se calcula el tiempo de servicio basándose en su tiempo promedio ($mu_i$).

Tiempo_Servicio_E1 = - (1 / (1/3)) * Log(RND) (Si $mu=3$ min)

4. Simular Colas y Servidores (Lógica Central)

Se implementa la lógica de estado: si la estación está ocupada, la pieza entra en cola; si está libre, comienza el servicio inmediatamente. Se debe verificar la capacidad de cola antes de aceptar una pieza.

5. Registrar Estadísticas

Cada vez que una pieza entra en cola o sale de una estación, se actualizan contadores: Total_Piezas_Producidas, Tiempo_Total_En_Sistema, etc.

6. Reportar Resultados en Hoja de Excel

Al finalizar la simulación, los resultados se escriben en celdas específicas de la hoja de cálculo.

Ejemplo de estructura de reporte en Excel:

MétricaValor CalculadoUnidad
Piezas Producidas1250Unidades
Utilización Estación 188.4%%
Tiempo Promedio en Cola (E2)1.2Minutos

Ejercicio propuesto

Una vez que el modelo de 3 estaciones esté funcional, el siguiente paso lógico en la optimización de procesos es la escalabilidad. Añade una cuarta estación (Estación 4) al final de la línea de producción. Asigna un tiempo de servicio promedio de 3.5 minutos a esta nueva estación. Modifica la lógica de transferencia para que las piezas completadas en la Estación 3 pasen a la Estación 4, y solo cuando la Estación 4 termine, se considere la pieza como «Producida».

Objetivo de análisis: Compara la utilización de la Estación 3 en el modelo de 3 estaciones versus el modelo de 4 estaciones. ¿La adición de la cuarta estación alivió la presión o simplemente movió el cuello de botella?

Errores habituales

La simulación es sensible a la implementación. Presta atención a estos errores comunes:

  1. Confundir Tasa ($lambda$) con Tiempo Promedio ($mu$): Si el tiempo promedio es 5 minutos, la tasa es $1/5 = 0.2$ piezas/minuto. Usar el valor incorrecto en la fórmula exponencial es el error más frecuente.
  2. Ignorar la Capacidad de Cola: Si el código permite que una pieza entre en cola cuando ya está llena, el modelo se vuelve irrealista y los resultados de tiempo de espera serán erróneos.
  3. Acumulación de Tiempos: Asegúrate de que el tiempo de espera de una pieza se calcule desde que llega al sistema hasta que sale del sistema, sumando todos los tiempos de cola y servicio en cada estación.

Mejor Práctica: Siempre comienza con una simulación simple (una sola estación) para validar la generación de números aleatorios y el manejo de la distribución exponencial antes de escalar a un sistema complejo de múltiples servidores.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *