Gemelo digital minero con AnyLogic y una API de decisión
Manual abierto para construir un modelo educativo donde los camiones llegan al sistema, consultan una API externa y se asignan dinámicamente a la Pala A o Pala B según el estado de las colas y del camión.
Idea central: una simulación permite probar decisiones sin tocar la operación real. En este caso, el modelo representa camiones, colas y palas; la API representa una lógica externa de despacho que puede empezar como regla simple y luego evolucionar hacia optimización o Machine Learning.
Qué se construye
El sistema tiene un generador de camiones, un bloque de decisión y dos rutas posibles: Pala A y Pala B. Cada camión lleva variables propias, como identificador y combustible. Cuando llega al punto de decisión, AnyLogic envía un mensaje JSON a una API. La API responde una recomendación y el modelo dirige el camión por la ruta correspondiente.
Por qué AnyLogic es útil
Representa flujos, esperas, tiempos de servicio y salidas.
Modela camiones, equipos, personas o entidades con estado propio.
Permite comparar escenarios antes de intervenir una operación real.
AnyLogic permite combinar simulación de eventos discretos, agentes y dinámica de sistemas. Para este caso usamos eventos discretos porque los camiones llegan, esperan, pasan por una pala y salen. Cada cambio importante ocurre como evento en el tiempo.
Conceptos base
| Concepto | Qué representa | Ejemplo del caso |
|---|---|---|
| Agente | Entidad con identidad y variables propias. | Camion. |
| Variable de estado | Dato que describe una condición del agente o sistema. | idCamion, combustible, tamaño de cola. |
| Cola | Acumulación de entidades esperando atención. | colaPalaA y colaPalaB. |
| Delay | Tiempo de procesamiento o servicio. | Tiempo de carguío en cada pala. |
| API | Servicio externo que recibe datos y responde una decisión. | Endpoint /dispatch. |
| JSON | Formato ligero para enviar datos. | truck_id, fuel_level, queue_shovel_A, queue_shovel_B. |
Paso 1: crear el proyecto
- Abre AnyLogic PLE y selecciona Create a model.
- Asigna el nombre
GemeloDigitalMina. - Cambia Model time unit a minutes.
- Luego crea un nuevo tipo de agente con File > New > Agent Type.
- Nombra el agente como
Camion.

Paso 2: variables del agente Camion
El agente Camion necesita variables para que la simulación pueda diferenciar cada unidad y enviar su estado a la API.
| Variable | Tipo | Valor inicial | Uso |
|---|---|---|---|
| idCamion | int | asignado al salir del Source | Identificar cada camión. |
| combustible | double | 85.0 | Enviar condición del camión a la API. |

Paso 3: función consultarGemelo
En Main, crea una función llamada consultarGemelo. La función recibe el estado actual del camión y del sistema, arma un JSON, lo envía por HTTP POST y devuelve la respuesta como texto.
| Argumento | Tipo | Qué envía |
|---|---|---|
| truckId | int | Identificador del camión. |
| fuel | double | Nivel de combustible. |
| queueA | int | Tamaño actual de la cola de Pala A. |
| queueB | int | Tamaño actual de la cola de Pala B. |
Paso 4: diagrama de flujo
Desde la Process Modeling Library, arrastra estos bloques al lienzo de Main y conéctalos en dos rutas posibles.
| Bloque | Nombre | Rol en el modelo |
|---|---|---|
| Source | generadorCamiones | Crea camiones con una tasa de llegada. |
| Select Output | selectOutput | Decide si el camión va a Pala A o Pala B. |
| Queue | colaPalaA | Espera antes de Pala A. |
| Delay | palaA | Tiempo de carguío en Pala A. |
| Queue | colaPalaB | Espera antes de Pala B. |
| Delay | palaB | Tiempo de carguío en Pala B. |
| Sink | salidaCamiones | Salida del sistema. |

Paso 5: parámetros principales
Source: generadorCamiones
- New agent: Camion.
- Arrivals defined by: Rate.
- Arrival rate: 10 per hour.
- Actions > On exit: asignar identificador aleatorio.
SelectOutput: selectOutput
El bloque llama a la API y revisa si la respuesta contiene Pala_A. Si contiene ese texto, el camión usa la salida verdadera. Si no, toma la otra ruta.
Delay: palaA y palaB
La distribución triangular representa un tiempo mínimo, un tiempo más probable y un tiempo máximo. Es útil cuando no tenemos suficientes datos históricos, pero sí tenemos criterio experto.
Paso 6: ejecución y verificación
- Presiona F5 o el botón verde Run.
- Haz clic en Play en la ventana de simulación.
- Observa que los camiones se dirigen a la Pala A o Pala B según la respuesta de la API.
- Revisa si las colas cambian y si el bloque
selectOutputenvía unidades por ambas rutas.
Galería de referencia
Las siguientes capturas sirven como apoyo visual para ubicar ventanas, propiedades y pasos de configuración dentro de AnyLogic.
Paso visual 04
Paso visual 05
Paso visual 06
Paso visual 07
Paso visual 08
Paso visual 09
Paso visual 10
Paso visual 11
Paso visual 12
Paso visual 13
Paso visual 14
Paso visual 15
Paso visual 16
Paso visual 17
Paso visual 18
Paso visual 19
Paso visual 20
Paso visual 21
Paso visual 22
Paso visual 23
Paso visual 24
Paso visual 25
Paso visual 26
Paso visual 27
Paso visual 28
Paso visual 29
Paso visual 30
Paso visual 31
Paso visual 32Extensiones posibles
La API puede elegir la pala con menor cola o menor tiempo esperado.
La API puede estimar congestión, espera o probabilidad de atraso.
El servicio externo puede comparar escenarios y elegir la alternativa de menor costo.
Cada consulta puede guardarse para analizar decisiones y desempeño.
Errores comunes
| Problema | Posible causa | Revisión |
|---|---|---|
| La función devuelve error. | Endpoint mal escrito o API apagada. | Probar la URL con una solicitud externa. |
| Todos los camiones van a una sola ruta. | La respuesta no contiene exactamente Pala_A. | Revisar texto devuelto por la API. |
| No compila el código Java. | Comillas mal escapadas en JSON. | Copiar el bloque completo y revisar llaves. |
| Las colas crecen demasiado. | Llegan más camiones de los que las palas atienden. | Ajustar tasa de llegada o tiempo de servicio. |
Cierre
Este caso muestra una arquitectura sencilla pero poderosa: una simulación de eventos discretos genera estados, una API analiza esos estados y el modelo cambia su flujo según la respuesta. Esa misma lógica puede adaptarse a despacho, mantenimiento, seguridad, planta, logística o energía.
