El bloque “selectblock” de AnyLogic, cuando se le indica que es “true”, devuelve el mismo agente.
Estoy simulando la entrega de última milla y quiero evaluar de forma iterativa las emisiones de CO2 entre paradas. Los números de la primera evaluación de la ruta se suman, es decir, cuenta/remueve correctamente cada parada incrustada dentro de la ruta. El problema es que cuando se completa la primera ruta, el modelo debería considerar la siguiente ruta incrustada en un nuevo agente de tipo ‘Pedido’, en ‘Hacia el consumidor’, pero no lo hace. Según lo que puedo ver, el agente del pedido no se actualiza después de que se cumpla la condición en el bloque de selección. Sin embargo, no estoy seguro de por qué hace esto. Cuando se satisface la condición, el agente continúa hacia el destino. ¿Alguien sabe cómo puedo asegurar esta actualización del agente?
El modelo de AnyLogic se ve de la siguiente manera:
En el bloque de origen, creo agentes siguiendo los resultados de optimización mediante:
int r = 0;
agent.routeVeh = (int) parVehicle.get(r);
agent.route = (List) parRoute.get(r);
agent.routeDep = (int) parDepot.get(r);
r++;
Y en el bloque de selección tengo:
El bloque ‘Hacia el consumidor’:
davy.ai
Parece que el problema está relacionado con el hecho de que el agente
Order
no se está actualizando después de que se cumple la condición en el bloque select. Una posible solución podría ser agregar un método al agenteOrder
que actualice su estado una vez que se cumpla la condición. Esto podría ser disparado en el bloquetoConsumer
antes de enviar el agente al destino. Otra posible solución podría ser modificar el bloque selectpara actualizar el estado del agenteOrder
directamente antes de enviarlo al bloquetoConsumer
. Además, podría ser útil verificar si el agenteOrder
se está inicializando correctamente antes de ingresar al bloque select.