En este artículo presento un modelo de simulación AGV simple . Se entiende como un ejemplo de cómo simular rutas de piezas en una fábrica. Implementé la simulación en AnyLogic.
Ya he proporcionado algunas otras introducciones básicas a AnyLogic. Más específicamente, por ejemplo, he presentado anteriormente algunos modelos básicos de transportadores en una serie de videos de YT. Aquí hay una lista de algunas introducciones básicas al modelado de simulación AnyLogic:
- Enlace : Modelo de línea transportadora simple en AnyLogic
- Enlace : Línea transportadora con ramal en AnyLogic
- Vínculo : Línea transportadora con estación de trabajo en AnyLogic
- Enlace : Línea transportadora con trabajadores de montaje en AnyLogic
- Enlace : Proceso de ensamblaje por lotes en la estación de trabajo del transportador en AnyLogic
- Enlace : Trabajadores de ensamblaje móvil en AnyLogic
Ilustré un diseño conceptual de la simulación AGV en la figura más abajo en el siguiente párrafo.
Uso de AnyLogic para simulación de AGV con rutas
En publicaciones anteriores de este blog, ya introduje varias opciones de software de simulación de eventos discretos. Enumero algunos ejemplos a continuación. Claramente, soy un fanático de las herramientas y marcos de simulación gratuitos y abiertos (ver, por ejemplo, «simmer»). Sin embargo, AnyLogic es una herramienta comercial.
- Enlace : Simulador de estacionamiento con simmer en R
- Enlace : Edición de simulación ProModel AutoCAD
- Enlace : Simulación de KPI financieros de Visual Components
- Enlace : Cocine a fuego lento en R para simulación de eventos discretos
- Enlace : Simulación de inspección de recepción con simmer
- Enlace : Simulación de acumulación de producción FIFO
A lo largo de varios proyectos de simulación, he trabajado con varias herramientas de simulación de eventos discretos , no solo con las enumeradas anteriormente. Sin embargo, para las simulaciones AGV integradas en estudios de flujo de materiales, encuentro que AnyLogic y Simio se encuentran entre las mejores herramientas de simulación de eventos discretos . También he visto las capacidades de FlexSim y Plant Simulation con respecto a la simulación AGV y usted también podría verlas. Sin embargo, en términos de poder personalizar, prefiero AnyLogic. Principalmente debido a su estructura, documentación y transparencia, y al hecho de que AnyLogic está codificado en JAVA.
Los estudios de simulación requieren un modelo de procedimiento
Un error común que observo a menudo cuando los analistas de la cadena de suministro se involucran en la simulación es que saltan directamente al modelado. Sin embargo, solo se puede desarrollar un buen modelo de simulación una vez que el objetivo del estudio de simulación está claramente definido. Además, esto generalmente solo es posible una vez que todas las partes involucradas han entendido completamente el sistema o problema subyacente. Recomiendo usar un modelo de procedimiento para cualquier estudio de simulación. La siguiente figura ilustra mi modelo de procedimiento.
De hecho, el modelo de procedimiento aplicado por mí ha sido publicado en este blog en publicaciones anteriores. Aquí hay dos artículos relacionados relevantes:
- Enlace : modelo de procedimiento de simulación de eventos discretos
- Enlace : Planificación de capacidad basada en simulación
En consecuencia, en las primeras etapas del estudio de simulación es importante comprender completamente la situación. Los términos apropiados para este paso son, por ejemplo, análisis de la situación, análisis de brechas y definición del problema. La recopilación de datos es parte de este paso. Posteriormente, suelo definir explícitamente qué es y qué no es parte del modelo de simulación a desarrollar. Por ejemplo, una vez simulé las operaciones y los horarios de un tranvía en Zúrich (Suiza). Decidí en ese proyecto que el flujo de peatones que bloquea los rieles del tranvía no se implementará en detalle. En cambio, describí la frecuencia y la duración de los bloqueos ferroviarios con una curva de distribución aleatoria.
Eventualmente, el estudio de simulación continúa desarrollando un diseño y un modelo conceptual. El modelado conceptual implica, por ejemplo, diagramas de flujo, así como la definición de diagramas de transición de estado para equipos relevantes. Esto hace que la implementación del modelado de simulación real sea mucho más fácil y garantiza un código bien estructurado.
Dibujé un diseño simple de la simulación AGV.
Dependiendo del proyecto en el que trabaje, normalmente dibujaré un diseño aproximado. Alternativamente, confiaré en un dibujo de AutoCAD (o similar) que me entregue el equipo de ingeniería del cliente.
La figura anterior muestra un área de recepción central que reenvía el material de entrada recibido a través de transportadores de rodillos. Grúas o robots colocan piezas en AGV al final del transportador.
Los AGV facilitan el flujo de material desde la recepción inicial
Los AGV, que representan el núcleo de esta simulación de AGV en AnyLogic, dirigen las piezas a las áreas de trabajo. Este proceso de enrutamiento puede requerir la toma de decisiones, posiblemente a un nivel muy complejo.
Por ejemplo, podría querer asignar el AGV más cercano a la tarea o el AGV con la utilización más baja. También podría enfrentar una situación en la que quiero modelar una decisión de enrutamiento real. Es decir, un AGV toma la ruta A y otro AGV toma la ruta B a través de la red de carriles AGV.
Implementando la simulación AGV en AnyLogic
Implementé esta simulación AGV en AnyLogic. Una captura de pantalla del modelo se puede ver a continuación.
Esencialmente, el modelo se compone de una fuente que genera llegadas de piezas. Estas llegadas de piezas se envían al transportador. Una vez que las piezas llegan a la posición final definida del transportador, se libera una tarea de transporte. En realidad, este proceso de envío de tareas es un proceso predeterminado de AnyLogic. Sin embargo, podría haber implementado una lógica de despacho de tareas personalizada usando JAVA.
Una vez que se ha asignado uno de los AGV al transporte, utilizando la lógica predeterminada de AnyLogic como se describe anteriormente, el modelo decide a qué área de trabajo transportar la pieza. Para esto, implementé una lógica de decisión personalizada pero simple con fines de demostración. Describo esta lógica personalizada en el siguiente capítulo a continuación.
Siendo este un ejemplo simple, no implementé las áreas de trabajo en ningún detalle. Además, tampoco implementé en ningún detalle la operación de recoger y colocar de un robot o grúa en la salida del transportador. Refiriéndose a mi modelo de procedimiento, esto está totalmente bien. Tengo «permiso» para implementar estos pasos del proceso en un nivel de abstracción más alto, siempre que el objetivo del estudio y la definición del problema no indiquen que necesito implementar estos pasos del proceso con detalles específicos. La operación de recoger y colocar puede, por ejemplo, modelarse con un retardo de tiempo. Este tiempo de retardo se puede distribuir aleatoriamente, si corresponde para el equipo de manejo de materiales elegido.
De hecho, otra abstracción es que no visualicé las áreas de trabajo y no implementé ningún objeto personalizado para representarlas. En su lugar, simplemente usé un objeto de nodo predeterminado de AnyLogic. El nodo de destino actualmente activo, es decir, el área de trabajo actualmente relevante, es referenciado por la variable de estación . Esta variable se actualiza mediante un algoritmo de enrutamiento personalizado. Explicaré esto más adelante en este artículo.
Una vez que las piezas han llegado al área de trabajo, la pieza permanece en el área de trabajo durante un tiempo predeterminado especificado. Finalmente, la pieza entra en el fregadero. El sumidero elimina la pieza y, por lo tanto, la elimina del modelo.
Implementación de decisiones de enrutamiento personalizadas con JAVA
Al implementar simulaciones AGV, una cosa en la que me gustaría influir son las decisiones de enrutamiento. Claramente, esto se debe a que las rutas facilitan cualquier flujo de material. En este caso, si asumo que cada parte que llega de la recepción representa el mismo material de entrada, por ejemplo, partes en bruto para fresado u otro procesamiento, no puedo enrutar simplemente según el tipo de material. En su lugar, es posible que desee enrutar según la utilización del centro de trabajo o algún otro criterio. El punto es que la decisión de enrutamiento debe ser fácilmente personalizable. Escribí esta publicación de blog para proporcionar un ejemplo simple de cómo se podría hacer esto en AnyLogic.
En este sencillo modelo de simulación de AGV , facilito el enrutamiento personalizado con 4 variables y 1 función:
- salida_01 a salida_03 miden el número total de piezas entregadas al área de trabajo respectiva
- la estación hace referencia al área de trabajo de destino de la pieza (objeto de nodo AnyLogic)
- set_route es una función que facilita la decisión de enrutamiento personalizado a medida
La siguiente captura de pantalla muestra el contenido de la función set_route .
La función set_route simplemente implementa el enrutamiento cíclico. Es decir, la primera parte va a station_a , la segunda parte va a station_b , y así sucesivamente. Sin embargo, podría especificar funciones y variables adicionales, y otros tipos de toma de decisiones, si fuera necesario. Al final, la lógica a implementar depende de la situación específica.
La función set_route se llama cada vez que un agente ingresa al bloque moveTo_a en la siguiente cadena de bloques lógicos.
Esta cadena de bloques lógicos implementa el siguiente flujo:
- src genera partes con tiempos de intervalo distribuidos aleatoriamente
- transportar transporta la pieza desde la posición inicial hasta la final de la marca del transportador
- get_transport solicita un AGV para recoger la pieza de la salida del transportador
- moveTo_a llama a set_route y transporta parte a las referencias de nodo en la estación
- el retraso hace que la pieza permanezca en el nodo (que representa el área de trabajo) durante algún tiempo
- fregadero elimina la parte del modelo
Puedo especificar la llamada de función en la sección OnEnter del bloque moveTo_a. Vea la captura de pantalla a continuación.
Conclusión y contenido relacionado
En este sencillo ejemplo de simulación de AGV, demostré cómo puede personalizar el enrutamiento de piezas en AnyLogic. Los criterios de enrutamiento y la lógica de enrutamiento utilizados en este ejemplo fueron muy simples. Un algoritmo de enrutamiento real a menudo sería más sofisticado y se adaptaría a los requisitos de la fábrica en la que opera. Dichos algoritmos de enrutamiento se volverán rápidamente complejos y pueden ser un desafío.
A lo largo de este artículo ya he proporcionado una amplia variedad de enlaces a contenido relacionado. Sin embargo, aquí hay algunos artículos adicionales que me gustaría compartir con el lector interesado:
- Enlace : Sistemas de colas resueltos analíticamente
- Enlace : Simulación basada en agentes en Python
- Enlace : Aprendizaje automático y simulación de eventos discretos
Ingeniero industrial especializado en optimización y simulación (R, Python, SQL, VBA)
Leave a Reply