FlexiBatch Block
The FlexiBatch block is designed to create mixed batches of different items. Shipping containers, trucks, trailers, heat-treat ovens, warehouse shelving, and centrifuges in a bloodwork lab are all good examples of items that hold batches of mixed items. This is in contrast to the Batch block which is used to create conventional batches of a single item. An example is probably the best way to understand the intent and use of the FlexiBatch block.
Example
Imagine you have a shipping container that you need to fill. If you are only going to fill the container with a single item, you would use the traditional Batch Block and determine the minimum and maximum number of items you can put in the container. However, if you are going to fill the container with a mixture of items, you have a little more work to do:
- Define a standard unit of measure that you will divide the container into—this is called an equivalent unit (EU). EUs can represent the capacity of the container in terms of size, weight, or another measure that fits your model. Say a container measures (on the inside) 40 feet long by 8 feet wide by 8.5 feet tall. If you define your equivalent unit as one cubic foot, then the container has 40 x 8 x 8.5 = 2720 cubic feet of volume, or 2720 equivalent units of capacity.
- Define the number of equivalent units (EUs) for each item that can enter the container. Perhaps item 1 is small and is 0.5 EUs. Item 2 may be 2 EUs, and item 3 may be 20 EUs. The combination of items, multiplied by their EUs, must be no more than 2720.
Once you have determined the capacity of your FlexiBatch in EUs and you've determined the EUs of each item that can enter the batch, it's time to enter the information into Process Playground.
Parameters: Block Level
Switching to a different example, in the image above, the FlexiBatch block is named "Centrifuge Batch" and represents the centrifuge in a medical lab. The key pieces of information required are:
- Name: The name of the block is used in a special way for the FlexiBatch. The name of the block becomes the name of the item in the model that represents the batch. In the example, batches for the centrifuge operation are being formed, so the block is named "Centrifuge Batch." The item that will be processed by the Activity block that represents the actual work of the centrifuge is "Batch: Centrifuge Batch." This differs from a traditional Batch block, where the name of the batch is the same as the name of the items that form the batch.
- Min Total Equivalent Units (EUs): This field defines the smallest size of the batch in EUs which can be processed, or, like in our first example, the least full a shipping container can be before we will ship it.
- Max Total EUs: This field defines the maximum size of the batch in EUs. In the example, the centrifuge can process 16 sample vials at full capacity.
- Wait for Additional Items: This field defines a time that we'll wait for additional arrivals before sending off the batch. The time you enter starts when the batch reaches all of the minimum requirements specified in the block parameters. In the example, say we have 4 sample vials at the FlexiBatch block. In practice, we would never start the centrifuge if we could see that there are several more vials just about to arrive at the centrifuge. This timer will delay the release of the batch, allowing the batch to "fill up" as much as possible before it's released. If the batch fills to the point that there is not enough space for any additional items to fit before the timer expires, the batch will be released immediately. If multiple batches are waiting for additional items, the block will attempt to top off batches in the order in which they are scheduled to be released. The block will continue to respect the add-to-batch priorities of each item as it tops off batches that have been formed.
- Set Priority To: This is the same as all blocks and will set the priority on the FlexiBatch item to whatever value you enter. If you do not enter a value, the FlexiBatch item will inherit the highest priority (lowest number—priority 1 is higher priority than priority 5) from the items that formed the batch. Recall that the default priority for all items in Process Playground is 5. If you have a batch that is formed by several items, some with priority 5, some with priority 3, and some with priority 1, then the batch will be set to priority 1.
Parameters: "Allow All Items" Level
The next set of information to enter into the FlexiBatch block is the data that defines the EUs of the items entering the FlexiBatch.
As with most blocks in Process Playground, the default setting is to have "Allow All Items" turned on with the checkbox checked. In this mode, the FlexiBatch block will allow any item to enter the block and will use the value in "Item's EUs" to determine the "size" of the items entering the batch.
In our centrifuge example, we could certainly use the "Allow All Items" setting as each sample vial is the same size—they just hold different types of samples. In the shipping container example, we would probably not use "Allow All Items," assuming that each item has a unique size, and therefore a different number of EUs. The optional parameters include:
- Add-to-Batch Priority: This parameter defines the order in which items will be added to the batch when there are more items than there is space in the batch. In the "Allow All Items" section of the block, this setting would typically not be used. However, if it is used, the most typical use would be to set this priority lower (higher number) than the uniquely named items shown below (more on that in a moment). This would have the effect of prioritizing the named items ahead of the "generic" items which are not specifically named in the block.
- Min Number per Batch: This defines the minimum number of the item that must be included in the batch. Again, this parameter makes the most sense when used with a specifically named, unique item.
- Max Number per Batch: Same description as for the Min Number per Batch, except this defines the maximum number.
Parameters: Specifically Named Items Level
Specifically named items are added using the "Select Item" drop-down menu in the lower-right corner of the block. When you add a named item, you then have the ability to define the unique parameters for that item. For the FlexiBatch, that allows you to define:
- Item's EUs: As defined above, this field allows you to customize the ‘size' of the item. In the centrifuge example the Item EUs are all 1 because all of the sample vials take up the same amount of the available capacity.
- Add-to-Batch Priority: In this example, the priority is set at 2. This means that the Stat Glucose items will enter the batch first (their Add-to-Batch priority is set to 1), and then the "Other" items will enter second, and the "Regular Glucose" items will enter third (their Add-to-Batch priority is set at 3). Every time a quantity of items arrives in the block, the block will attempt to form a batch from the items it has available. Once an item is placed into a batch, it will not be removed, even if a higher-priority item is available.
- Min Number per Batch: In this example, the value is set to 4. This means that no batch can be formed without having at least 4 of the "Other" items in the batch. While this guarantees that the "Stat Glucose" items can't monopolize the centrifuge, it also means that the entire batch of "Stat Glucose" items might be delayed, waiting on the arrival of an "Other" item to complete the minimum number in the batch before the batch can be released. Use the minimum setting with caution.
- Max Number per Batch: In this example, the number is left blank. This will allow the entire batch to fill with "Other" items, unless there are minimum values set for the "Stat Glucose" or "Regular Glucose" items. Use this field to put a cap on the maximum number of a particular item to include in a batch. However, another word of caution: If you set the Max Number per Batch to be less than the Min Total Equivalent Units set at the top of the block, your model may stall if the batch reaches the maximum number of "Others" in this example, but no "Stat Glucose" or "Regular Glucose" items arrive. The "Others" may be left to wait a long time before some glucose test items arrive to get the batch to the minimum EUs required to form the batch.
Working with FlexiBatches
Once you enter the FlexiBatch data and run the model, you will see that the FlexiBatch item has its own color and that its name will reflect that of the FlexiBatch block. The item color for the FlexiBatch item can be changed in the Item Types modal just like any other item.
In the image above, regular glucose tests are represented by the blue squares, "other" tests are the purple squares, and stat glucose tests are the red squares. The batch created by the FlexiBatch block is the green square above the "Run Centrifuge" activity block, and when you hover your mouse over the green animation block, you'll see that the item is named "Batch: Centrifuge Batch."
Batches and the Activity Block
A very important distinction between a batch made by the regular Batch block versus the FlexiBatch block is how they are processed in the Activity block. Say you have a regular batch of items with a batch size of 10. When this batch enters the Activity block, the Setup Time parameter in the Activity block is applied once to the entire batch, and then the processing time is applied to each item in the block, or ten times for this example batch of 10.
With a FlexiBatch-created batch, the Activity block does not apply the processing time to each individual item in the batch, since those items are likely different from each other. Instead, both the setup time and the processing time are applied once each, just as they would be for a simple, single item.
Multiple Batches Created in a Block
If an item arrives with an EU value that exceeds the capacity of a batch that has already been started, then the item will not be added to that batch. If the block is able to use that item to meet the minimum requirements of a new batch, then the block will create a second batch. Subsequent items will continue to fill the first according to their add-to-batch priority, and items that do not fit into the first batch will then fill the second batch, and so on.
Items Are Never Removed from Batches, Even If a Higher-Priority Item Arrives
A FlexiBatch block will create batches based on items' arrival times to the block. The items are added to existing batches right away as long as they can fit, even if a higher-priority item arrives later. A new batch will not be formed unless its minimum requirements can be met. One way to improve adding higher priority items is to raise the item priority in an upstream block to send that item to the FlexiBatch first, before other lower priority items.
Nested Batches and Unbatching
Similar to the Batch Block, the FlexiBatch Block allows batches within batches.
To learn more about nested batches in general, view the Batch Block documentation.
The FlexiBatch Block can form batches that are composed of batches formed by other FlexiBatch blocks. One such use case would be to use multiple FlexiBatch blocks to fill small, medium, and large boxes with items which themselves are of varying sizes. Those boxes could then be placed into a single FlexiBatch Block that represents a shipping container and assigns different EU values to each box type. Later on, the boxes could be taken out of the shipping containers by a queue block, and a subsequent queue block could then take the original items out of the boxes.
The image below shows the "Unbatch All" option in the centrifuge example. Just remember that the nested batches will unbatch in the opposite order you create them—the first batch you form will be the last one that is unbatched, and each queue will only unbatch one batch, not the batches within the batch.
Conclusion
The FlexiBatch block may seem a little complicated, and that is because it is doing quite a lot. But it gives you the tools needed to handle the complex batching that happens in supply chain operations and many other processes.
Was this helpful?