I am trying to model a warehouse → production material flow in AnyLogic. My production process involves four different materials being transported to an assembly machine, where they are combined into a finished product.
Material Flow Requirements: For the assembly machine to operate at 100% efficiency, the required material input rates are:
Material 1: 0.51 pallets/hour Material 2: 0.57 pallets/hour Material 3: 0.91 pallets/hour Material 4: 2.27 pallets/hour The finished product output rate is 2.27 pallets/hour.
Issue: I have set up four Source blocks with MoveByTransporter logic, sending materials into Delay blocks (each with a delay time based on the required input rate). After the delays, I use an Assembly block to combine all materials into the final product.
However, I am facing two main problems:
The machine output is limited by the slowest material (Material 1 at 0.51 pallets/hour), preventing it from reaching the expected 2.27 pallets/hour. The Assembly block only accepts integer values, while my required material rates are fractional. This makes it difficult to correctly synchronize the materials. Question: How can I properly synchronize the material flows so that the machine operates at full capacity (2.27 pallets/hour)? Are there better approaches to batching, controlling arrival rates, or handling fractional inputs in AnyLogic?
Would appreciate any guidance! Thanks.
I am trying to model a warehouse → production material flow in AnyLogic. My production process involves four different materials being transported to an assembly machine, where they are combined into a finished product.
Material Flow Requirements: For the assembly machine to operate at 100% efficiency, the required material input rates are:
Material 1: 0.51 pallets/hour Material 2: 0.57 pallets/hour Material 3: 0.91 pallets/hour Material 4: 2.27 pallets/hour The finished product output rate is 2.27 pallets/hour.
Issue: I have set up four Source blocks with MoveByTransporter logic, sending materials into Delay blocks (each with a delay time based on the required input rate). After the delays, I use an Assembly block to combine all materials into the final product.
However, I am facing two main problems:
The machine output is limited by the slowest material (Material 1 at 0.51 pallets/hour), preventing it from reaching the expected 2.27 pallets/hour. The Assembly block only accepts integer values, while my required material rates are fractional. This makes it difficult to correctly synchronize the materials. Question: How can I properly synchronize the material flows so that the machine operates at full capacity (2.27 pallets/hour)? Are there better approaches to batching, controlling arrival rates, or handling fractional inputs in AnyLogic?
Would appreciate any guidance! Thanks.
Share edited Mar 20 at 17:57 Jester 59.1k4 gold badges87 silver badges130 bronze badges asked Mar 20 at 15:12 Mathias NielsenMathias Nielsen 1 1- btw, no need to double-post here and on LinkedIn. Some tips what to ask where: benjamin-schumann/blog/anylogic-community – Benjamin Commented Mar 20 at 18:24
1 Answer
Reset to default 1Considering the agents you are using are the products directly, you are handling the problem backwards. The delay blocks are NOT related to rates directly.
In your example, I'd recommend you do something similar to this:
This way, you can source each full agent (one pallet) at the required rates. The assembler has to assemble one full unit of a pallet. And you set the delay for how long it takes to assemble a final product pallet.
As you can see, production was limited by the first pallet arrival; all other pallets sit in queues waiting for the first one.
If you are consuming fractional parts of a pallet, you can specify Multiple Agents per Arrival
on the source blocks for 100 agents (or ideally however many units per pallet you have in the real problem), and set the consumption on the assembler by the required amount (ideally; the real amount of each unit used in the real problem).