Lotes dinámicos
Aquí hay un pequeño truco que uso para generar lotes dinámicos, que son lotes de tamaño dinámico y donde los productos que necesitan ser agrupados llegan de manera desordenada.
Digamos, por ejemplo, que tenemos que agrupar productos en cajas, y cada producto tiene una etiqueta con el cliente y cada caja solo puede contener productos para ese cliente. Además, los productos llegan aleatoriamente y no es posible saber a qué cliente tiene asignado el siguiente producto. ¿Cómo podemos resolver esto en AnyLogic?
Una forma es usando la siguiente estructura:
Y cada vez que un producto entra en el bloque wait, usando el siguiente código:
List <Product> products=findAll(wait,p->p.client.equals(agent.client)); // crear una lista de productos que pertenecen al mismo cliente que el agente que llegó
if(products.size()==agent.batchSize){ //verificar si se alcanzó el tamaño del lote
batch.set_batchSize(agent.batchSize);
for(Product p :products){
wait.free(p);
}
}
Si tienes un agente cliente y un tamaño fijo para el lote, en lugar de usar esa estructura, también es posible enviar el agente que llega al cliente apropiado a través de un bloque exit usando algo como esto para llevar al agente al bloque enter en el cliente correcto
agent.client.enter.take(agent); 