En este modelo, un clasificador automatizado separa los productos de diferentes tipos para su posterior empaquetado en contenedores. Al finalizar este tutorial, se debería obtener un modelo como el que se muestra a continuación:
Una empresa quiere implementar en sus instalaciones un clasificador de productos automatizado. Este clasificador, formado por cintas transportadoras, presenta una cinta principal (donde viajan todos los tipos de productos entrantes) y cuatro ramales de salida, cada uno específico para un tipo de producto.
Al final de estas salidas se encuentran cuatro estaciones encargadas de combinar un contenedor, previamente colocado en su interior por un operario, con seis productos del tipo correspondiente según el ramal con el que nos encontremos para formar un lote. Una vez estos contenedores están llenos, los operarios en cuestión realizan un proceso de embalaje que dura 10 segundos y los transportan a una zona de almacenaje ubicada en el suelo, en frente de las estaciones. Pasado un tiempo entre 100 y 300 segundos, estos lotes se envían a un camión para ser entregados a los clientes.
Para realizar todo este proceso la instalación dispone de dos operarios y de un almacén de contenedores. Cada uno de estos operarios tiene asignadas dos estaciones contiguas.
Además, se sabe que, independientemente del tipo de producto, sus cajas presentan las siguientes dimensiones:
X: entre 250 mm y 350 mm / Y: entre 450mm y 550mm / Z: entre 100mm y 300mm
Se conoce que la cadencia de entrada de estos productos en el clasificador sigue una distribución exponencial entre 0 y 10 segundos y se asume que el almacén de contenedores estará siempre lleno.
Preguntas:
Una vez analizado en comportamiento de la planta y los resultados que se desea obtener, procedemos a construir y definir la simulación.
Para iniciar con la construcción del modelo, abrimos un modelo en blanco desde la aplicación de FlexSim.
Una vez abierto este nuevo modelo, nos aparece una pantalla para indicar al programa en qué unidades vamos a trabajar. Dejaremos todas las unidades como las establecidas por defecto, aunque se podrían haber seleccionado otras de acuerdo con nuestras necesidades.
Una vez definido el modelo, se abre el espacio de construcción de éste.
En primer lugar, crearemos la cinta transportadora principal del clasificador. Para hacerlo, arrastramos al espacio 3D un objeto de tipo Conveyor, ubicado en el apartado Conveyors de la Library (menú ubicado a la izquierda de la ventana de FlexSim). A continuación, pulsamos sobre el objeto creado y, en el menú Properties (menú que aparece a la derecha de la ventana de FlexSim), realizamos los siguientes cambios:
A continuación, creamos y configuramos cada uno de los ramales de salida del modelo. En este caso, estamos hablando de 4 ramales diferentes.
Arrastramos un objeto del mismo tipo (Conveyor) al modelo, lo renombramos como "Ramal1" y lo modificamos para que presente la misma anchura (Width = 0.6 m), una longitud de 5.74 m (Horizontal Length = 5.74 m) y una posición en Z de 3 m en su inicio y de 1 m al final, así como las diferentes posiciones en X y en Y que se muestran en la primera imagen inferior (“Ramal1”). Repetimos el proceso con las otras 3 salidas (también se podría copiar y pegar el Conveyor recién creado tres veces) y establecemos para cada uno su posición diferente en el espacio.
Finalmente, para obtener el aspecto deseado de este clasificador, entraremos en el menú ToolBox → Conveyor System → Visualizations → BeltConveyor y cambiaremos el largo de las patas (Legs) para que vaya acorde al suelo del modelo. Repetimos el proceso para el RollerConveyor.
Siguiendo las anteriores indicaciones, el clasificador debería tener la forma que se muestra a continuación:
Llegados a este punto, procedemos a alimentar este clasificador. Del menú Library → Fixed Resources arrastramos un objeto Source al modelo. En esta fuente, tenemos que configurar el flujo de entrada de productos al clasificador según las pautas establecidas en el enunciado. En primer lugar, estableceremos un Inter-Arrival Time (en Properties → Source) que siga una distribución exponencial entre 0 y 10. Para hacerlo, abrimos el desplegable y seleccionamos Statistical Distribution → Exponential y, en la ventana emergente, configuramos nuestra distribución exponencial con los valores deseados.
Aprovecharemos que ésta es la fuente de creación de todos los productos que se moverán por el modelo para introducirle las propiedades adecuadas a cada caja.
En el apartado de Triggers (en el menú Properties), creamos un Trigger On Creation. Dentro de este submenú seleccionamos la opción de Data → Set Label and Color y lo configuramos de manera que la etiqueta creada sea “Type” (la etiqueta por defecto) y que su valor siga una distribución uniforme entre 1 y 4. Con esto conseguimos que se creen de forma aleatoria productos de cada uno de esos 4 tipos.
Dentro de este mismo Trigger, añadimos una segunda acción, que será la modificación de los visuales. Para ello pulsaremos el botón
y, a continuación, seleccionamos Visual → Set Rotation, Size or Location. Dentro del desplegable, seleccionaremos la opción Size y establecemos los valores aleatorios que indica el enunciado para cada dimensión (X entre 0.25 y 0.35 m, Y entre 0.45 y 0.55 y Z entre 0.1 y 0.3 m).
Una vez establecidas las condiciones del flujo de entrada, conectamos la fuente con la banda transportadora mediante una conexión de tipo "A" (pulsamos la tecla "A" y, sin soltarla, hacemos clic primero sobre la fuente y en segundo lugar sobre el Conveyor).
Para que este clasificador funcione como toca (es decir, para que envíe las cajas por la salida correspondiente), tenemos que añadir en las cintas transportadoras una serie de Decision Points (Library → Conveyors).
Colocaremos (arrastrándolos desde la librería) un Decision Point en la cinta antes de las salidas y otro en cada una de las salidas (5 en total). Para que el modelo esté más ordenado y sea más fácilmente entendible, podemos renombrar estos objetos (por ejemplo, llamar “DP_Routing” al Decision Point de la cinta principal, “DP_Ramal1” al de la salida 1, “DP_Ramal2” al de la salida 2, etc.).
Una vez colocados éstos, conectaremos el primero (el de la banda transportadora) con los otros cuatro (conexión tipo "A", manteniendo pulsada la tecla "A"), en el orden que queremos asignar cada uno de los ramales.
Podemos asegurarnos que el orden de salida es el correcto en el ramal de salida, viendo el orden de la sección Ports → Output Ports.
Normalmente, este orden no es tan importante, pero, en este tutorial, se seguirá el orden establecido para facilitar el proceso constructivo. Si el orden no es el correcto, se recomienda pulsar sobre la salida correspondiente y, con las flechas azules que se indican en la imagen inferior, reorganizar los objetos.
Finalmente, establecemos la condición de selección de salida: abrimos el menú Properties del Decision Point de la cinta principal y creamos un trigger de tipo On Arrival, dentro de éste seleccionamos Send Item By Case y, en la ventana emergente, creamos 4 casos (ya que tenemos 4 tipos de productos) pulsando sobre el botón
y dejamos las condiciones por defecto que genera FlexSim. De esta manera, si el item que llega a ese punto es de tipo 1, lo enviará a donde dirija la conexión de salida número 1, que es la primera cinta transportadora, y así sucesivamente.
Con la finalización de este último paso, ya tendríamos definido el clasificador y su lógica. Llegados a este punto, si pulsamos sobre Reset y después sobre Run (en el menú superior del entorno) deberíamos observar el comportamiento que se muestra en la imagen inferior.
A continuación, añadiremos al modelo un objeto de tipo Combiner y lo modificaremos de la siguiente manera: longitud en X de 1 m, en Y de 1 m y en Z de 1.39 m (Properties → Visuals).
Añadiremos tres Combiners más, accederemos al apartado Template de su menú Properties (accesible pulsando sobre el objeto) y, con el Sampler (icono de cuentagotas) seleccionaremos el primer Combiner ya dimensionado. Esta acción sirve para copiar las dimensiones y otras propiedades de un objeto 3D a cualquier otro del mismo tipo en el que éste se seleccione como template; en el menú Properties de estos otros Combiners observaremos todas las propiedades heredadas en cursiva (dentro de sus respectivos apartados).
Con los Combiners dimensionados correctamente, los colocamos en sus respectivas posiciones (al final de los cuatro ramales de salida).
Antes de enviar los productos del clasificador a estos Combiners, tenemos que establecer la entrada de los contenedores en los que se van a ubicar. Para hacerlo, creamos un Rack en la parte derecha del clasificador (arrastrándolo del apartado Warehousing, en Library). Pulsamos sobre el objeto creado para abrir el menú Properties y en Storage Object pulsamos sobre Edit Dimensions. En la ventana que se abre elegimos 4 Bays de 2.5 m de ancho, 4 Levels de 1.4 m de altura y 2 Slots Per Bay de 1,25 m de ancho. Una vez dimensionado, lo colocamos en la posición que se muestra en la imagen inferior (apartado Visuals).
Para introducir los contenedores en este almacén, creamos una segunda fuente (Library → Fixed Resources → Source) y la ubicamos en la parte trasera del Rack. En el menú Properties, en el apartado Source, cambiamos Flow-Item Class a Tote con el desplegable (éste será nuestro objeto contenedor) y el Inter-Arrival Time a 0 segundos, para asegurar que este almacén siempre estará lleno de contenedores disponibles para preparar los lotes.
Además de este almacén, añadimos al modelo dos operarios (Library → Task Executers → Operator) que serán los encargados de realizar todos los transportes del modelo, que configuraremos a continuación.
Para configurar estos transportes, realizamos primero las siguientes conexiones:
Cuando hemos realizado las conexiones de salida de las cintas transportadoras, debería haber aparecido en cada una de ellas un cuadrado blanco con una flecha en la punta, llamado ExitTransfer. Debemos realizar conexiones centrales entre cada operario y estos ExitTransfers de las dos cintas de salida que va a gestionar (coincidiendo con los Combiners elegidos).
Siguiendo este proceso, cada operario debería tener 5 conexiones centrales (el Rack, dos Combiners y dos Conveyors).
Una vez realizadas las conexiones, procedemos a establecer la lógica de transporte. Pulsamos sobre el Rack y accedemos a su menú Properties, apartado Output. Seleccionamos la casilla Use Transport y en el desplegable seleccionamos Center Port By Case. En la ventana emergente, escribimos “port” como Case Function y elegimos el Operator1 (conexión central número 1) para los puertos 1 y 2 y el Operator2 (conexión central número 2) para los puertos 3 y 4. De esta manera queda definido que el Operator1 colocará contenedores en los dos primeros Combiners y el Operator2 en los otros dos.
A continuación, pulsamos sobre cada uno de los ExitTransfers de las cintas transportadoras de salida y, en el menú Properties → Output tenemos que marcar la casilla Use Transport. Con esta opción seleccionada, el operario será el que introduzca cada uno de los productos en los contenedores que previamente habrá colocado sobre los Combiners.
Finalmente, pulsamos sobre el Combiner1 para acceder de nuevo a su menú Properties. En el apartado Combiner, seleccionamos Pack en el desplegable y establecemos que del puerto 2 (el que viene del clasificador) espere 6 productos para completar los lotes.
Además, añadimos el proceso de embalaje manual en el apartado de Processor como un Process Time de 10 segundos con uso de operario (marcamos la casilla). Como en la creación de los Combiners hemos establecido que los Combiners 2, 3 y 4 utilicen como plantilla el Combiner1, estos cambios deberían aplicarse automáticamente para estos objetos sin necesidad de modificarlos manualmente.
De esta manera se da por finalizada toda la lógica de entradas y formación de lotes. A continuación, pasamos a implementar las salidas de éstos.
En frente de los Combiners arrastramos un objeto de tipo FloorStorage (Library → Warehousing → Floor Storage), para simular el almacenaje de los lotes de salida en el suelo de las instalaciones. De la misma manera que hemos hecho en el Rack, pulsamos el botón Edit Dimensions en Properties → Storage Object y establecemos las siguientes dimensiones: 10 Bays de 1.2 m de ancho, 4 Levels de 1 m de alto y un Slot Per Bay de 1.2 m de ancho. Además, cambiamos el Slot Stacking Order (en el apartado Storage Object) para que los productos se ordenen en X creciente (X+), Y menguante (Y-) y no se ordenen en Z (None). Además, en el apartado Flow estableceremos un Minimum Dwell Time (tiempo mínimo de almacenaje en este objeto) a una distribución uniforme entre 100 y 300 segundos, simulando el tiempo que se almacenan los lotes en este suelo antes de ser transportados al camión de salida.
Una vez configurado este objeto lo colocamos en frente de los Combiners y conectamos los 4 Combiners con él (conexiones tipo "A", saliendo de los Combiners hacia el FloorStorage). Después de conectarlos, pulsamos sobre el Combiner1 para abrir el menú Properties y en el apartado Output marcamos la casilla de Use Transport.
Para finalizar con la creación de esta planta, añadimos un objeto de tipo Sink (Library → Fixed Resources → Sink) y conectamos este sistema de almacenaje con él (conexión tipo "A"), simulando la salida de los camiones.
Para que los operarios puedan moverse sorteando los diferentes objetos fijos de la planta, arrastramos un objeto de tipo Grid (disponible en Library → A* Navigation). A continuación, nos aparecerá un nuevo objeto en ToolBox llamado A* Navigator. Hacemos doble clic sobre éste y, en la ventana emergente, seleccionamos el Sampler (cuentagotas) y añadimos como miembros todos aquellos objetos de interés (los operarios, los Combiners, el Rack, el FloorStorage y las cintas transportadoras de salida (los ramales)).
El A* Navigator es un algoritmo de búsqueda de rutas óptimas entre dos puntos que utiliza una malla, integrado directamente en FlexSim. Para ello el algoritmo evalúa el camino más rápido entre dos puntos evitando obstáculos.
Una vez establecidos los miembros, pulsamos sobre el botón “OK” y pulsamos Reset en el modelo (barra superior) para poder ajustar los límites de este navegador (zona de recuadro azul) a las dimensiones de nuestra planta.
Una vez construido el modelo en su totalidad, procedemos a extraer métricas de interés para responder a las preguntas planteadas en el enunciado del ejercicio.
Antes crear los diferentes gráficos, tenemos que crear una pestaña de tipo Dashboard (Dashboards → Add Blank Dashboard en el menú superior de la ventana de Flexsim) para disponer de un espacio donde ubicarlos.
En primer lugar, queremos observar los porcentajes de ocupación de cada uno de los operarios que controlan nuestra planta. Para hacerlo, arrastraremos a la nueva pestaña Dashboard un gráfico de tipo State (Library → State ).
A continuación, accederemos a su menú de Properties (pulsando sobre él) y en el apartado Options seleccionaremos el Sampler (cuentagotas) y pulsaremos sobre uno de los dos operarios, repitiendo el proceso para el segundo operario también.
De esta manera, el gráfico queda vinculado a estos dos objetos y mostrará su estado. Adicionalmente, podemos cambiar el nombre del gráfico a, por ejemplo, “Ocupación operarios”.
A continuación, de igual manera que en el paso anterior, arrastraremos un gráfico de tipo Output By Type (Library → Output) y lo vinculamos con la cinta transportadora principal (la que es de tipo banda) del clasificador, de manera que nos muestre la cantidad de cajas de cada tipo que pasan por esa cinta durante la simulación. Para visualizar los productos por la etiqueta que acabamos de crear, seleccionamos la etiqueta Type y la opción de valor numérico.
Adicionalmente, cambiamos el nombre del gráfico a “Total productos de cada tipo”.
En tercer lugar, queremos cuantificar el número de lotes completados que se envían a los camiones por hora. Para poder hacerlo, arrastraremos un gráfico de tipo Output By Hour (Library → Output) y lo vinculamos con el FloorStorage del modelo. A este nuevo gráfico lo podemos llamar “Lotes por hora”.
Para visualizar las acumulaciones de cajas en los diferentes ramales de salida, crearemos un gráfico que presente la evolución del contenido de éstos según el tiempo transcurrido en el modelo. Este gráfico se obtiene pulsando sobre el recuadro que se encuentra a la derecha del texto “Content” (en Library → Content) y arrastrando des de la opción Line Chart.
Una vez creado, siguiendo el mismo procedimiento que para los gráficos anteriores, lo vinculamos con los 4 ramales de salida y le cambiamos el nombre a “Contenido en los ramales”.
Finalmente, para poder observar el tiempo que tardan en prepararse los diferentes lotes de productos, arrastraremos al Dashboard un gráfico de tipo Staytime (Library → Staytime) y lo vincularemos con los 4 Combiners del modelo. Este último gráfico lo podemos renombrar como “Tiempo de Preparación de Lotes”.
Una vez creadas todas las métricas de interés, indicamos a la simulación un tiempo de parada a las ocho horas, para extraer las diferentes conclusiones pasado este tiempo. Para hacerlo, desplegamos la pestaña de Run Time, marcamos la casilla Stop Time y le indicamos que lo queremos a las 16:00:00.
Una vez transcurridas estas ocho horas de ejecución del modelo, debería presentar los siguientes resultados:
¡Enhorabuena! Has completado el segundo tutorial.
El modelo creado durante el desarrollo de este tutorial está disponible para su descarga en el siguiente enlace: 25.0 Ejercicio2_Sorter.fsm
¿Quieres seguir avanzando y aprender a usar otras funcionalidades de FlexSim? Realiza nuestro tercer tutorial: Tutorial 3.
No dude en ponerse en contacto con nosotros con cualquier consulta en iberia@grupomitico.com