This macro makes it possible to split orders into batches. The macro will split orders according to configuration parameters found on the objects in ROB-EX.

The macro will split all orders belonging to the selected operations. OBS: ALL SPLITS ARE FINAL.

Parameter descriptions

The macro has the following parameters that can be set, see below:

orderSplitLookupField
This parameter defines an order-field within ROB-EX where an orderSplit flag can be set. The orderSplit flag is a flag that the macro can set on the order to indicate that the order have been split. For a list of possible values, see the variable list.

quantityFactorLookupField
This parameter defines an operation-field within ROB-EX where a quantity factor can be found. The quantity factor is a factor that is applied to the operation quantity when calculating the size of the split parts. It does not affect the total quantity of the split parts. For a list of possible values, see the variable list.

revertToMasterRouteForExistingOrder
If this setting is set to true (Default is false) and the order has been split as according to the orderSplitLookupField, the macro will revert the order back to the alternative route with the same alternate name before doing the split. For more info see Resplit.

skipOperationLookupField
This parameter defines an operation-field within ROB-EX where a skipOperation flag can be found. The skipOperation flag is a flag that can be set on the operation to tell the macro that the operation should not be split. For a list of possible values, see the variable list.

maxBatchSizeLookupField
This parameter defines an operation-field where the maxBatchSize can be found. This defaults to the resource specification denoted by the value ‘resource_spec’, see more below. For a list of possible values, see the variable list.

minBatchSizeLookupField
This parameter defines an operation-field where the minBatchSize can be found. This defaults to the resource specification denoted by the value ‘resource_spec’, see more below. For a list of possible values, see the variable list.

rollingStrategyLookupField
This parameter defines an operation-field where the rollingStrategy can be found. This defaults to the resource specification denoted by the value ‘resource_spec’, see more below. For a list of possible values, see the variable list.

rollingResourceCountLookupField
This parameter defines a operation-field where the rollingResourceCount can be found. This defaults to the resource specification denoted by the value ‘resource_spec’, see more below. For a list of possible values, see the variable list.

maxColSizeLookupField
This parameter defines a operation-field where the maxColSize can be found. This defaults to the resource specification denoted by the value ‘resource_spec’, see more below. For a list of possible values, see the variable list.

setupTimeSplitLookupField
This parameter defines a operation-field where the setupTimeSplit can be found. This defaults to the resource specification denoted by the value ‘resource_spec’, see more below. For a list of possible values, see the variable list.

switchoverTimeSplitLookupField
This parameter defines a operation-field where the switchoverTimeSplit can be found. This defaults to the resource specification denoted by the value ‘resource_spec’, see more below. For a list of possible values, see the variable list.

overlapTimeSplitLookupField
This parameter defines a operation-field where the overlapTimeSplit can be found. This defaults to the resource specification denoted by the value ‘resource_spec’, see more below. For a list of possible values, see the variable list.

splitSizeStrategy
This parameter defines a operation-field where the splitSizeStrategy can be found. This defaults to the resource specification denoted by the value ‘resource_spec’, see more below. For a list of possible values, see the variable list.

Special ‘resource_spec’-tag

Some of the above macro parameters can use the special tag ‘resource_spec’. When this is used for e.g. the maxBatchSizeLookupField this means that the maxBatchSize should be found on the resource specification as a key-value pair ex: maxBatchSize=25000. If a normal operation-field is defined, the field is only expected to contain the value.

Configuration

Below is a description of the configuration parameters that can be used by the macro. Where the configuration parameters are found is defined by their corresponding macro parameter, explained above.

maxBatchSize
The parameter maxBatchSize defines the maximum batch size. If an operation has a maxBatchSize which is smaller than the operations quantity, the macro will start to split. maxBatchSize=n, where n is the desired maximum batch size

minBatchSize
The parameter minBatchSize defines the minimum batch size, this parameter is optional. This works together with the maxBatchSize to ensure that the size of the batches are within a certain range. minBatchSize=n, where n is the desired minimum batch size

rollingStrategy
The parameter rollingStrategy is optional, but can be used to tell the macro to place the batches on an alternative resource. The value of rollingStrategy tells the macro how the different batches should be connected. Using endToEnd will connect the batches in serial one after the other, while overlap will connect them in parallel.
rollingStrategy=x, where x is one of the following: endToEnd|overlap

rollingResourceCount
The parameter rollingResourceCount works together with the rollingStrategy, but is optional (default is 2, if not defined). It defines the number of alternative resources used by the rollingStrategy. This can never be more than the number of alternative resources of the operation.
rollingResourceCount=n, where n is the number of alternative resources.

maxColSize
The parameter maxColSize is somewhat the opposite of the maxBatchSize and hence the two can not be used on the same operation, maxColSize only works when used after maxBatchSize. If we meet an operation with a maxColSize we try to collect batches in collections no larger than the maxColSize. maxColSize=n, where n is the desired maximum collection size

setupTimeSplit
The parameter setupTimeSplit is optional, but can be used to tell the macro how to handle setup time. Using first will place all setup time on the first batch, repeat will copy the setup time to all batches, divide_equal will divide the setup time equally to all batches and divide_percent will divide the setup time to the batches based on the batches percentage of the original quantity
setupTimeSplit=x, where x is one of the following: first|repeat|divide_equal|divide_percent

switchoverTimeSplit
see setupTimeSplit.
see setupTimeSplit.

overlapTimeSplit
see setupTimeSplit.
see setupTimeSplit.

splitSizeStrategy
This parameter defines the strategy for deciding the split sizes. There are two strategies, MAX and EVEN, both of which can be forced. Adding the keyword forced to a strategy will force the macro to always give a split and never give an error message. Using forced can give split sizes that violate maxBatchSize or minBatchSize.
The EVEN strategy (default) will always split at maxBatchSize. If the quantity is not divisible with the maxBatchSize, we try to make sure that the remainder is over the minBatchSize by taking from the other split parts. This is done by taking even parts from the other split parts while making sure they do not violate their minBatchSize. If this is not possible we get an error, unless forced, then we will even the split parts out.

The MAX strategy will always split at maxBatchSize. If the quantity is not divisible with the maxBatchSize and the remainder is less than the minBatchSize, we get an error, unless forced, then the remainder will be a split part of its own.
splitSizeStrategy=x, where x is one of the following strategies:EVEN|MAX.
Optional: All strategies can have the .forced ending.

splitSIzeStrategy=EVEN.forced

splitSIzeStrategy=MAX

Simple splits

Splits occur when an operation, in the selected production order, has the maxBatchSize parameter defined. The operation and all following operations will then be split. If no further configuration is done then all the following operations will be split the same number of times and in the same percentages as the operation where the split started.

The macro will split the operation according to the splitSizeStrategy.

If a quantity factor can be found in the location defined by the quantityFactorLookupField, then this quantity factor will be applied to the operation quantity before calculating the number of split parts. The quantity factor must be larger than 0 (default 1).

Advanced splits

If the macro, while splitting operations, meet an operation that has a new maxBatchSize, then the batches that we would otherwise have create, will also have to be smaller than this maxBatchSize, if they are not we will split into smaller batches. Ex. we have an operation that has a maxBatchSize, this then starts a split causing the operation to be split into two batches of equal size (50/50). Now the next operation would also have to be split into two parts of equal size, but this operation has a maxBatchSize that is half the size of the one that started the split. The macro will then calculate that the two batches will have to be split into two batches each, for a total of four parts (25/25/25/25). Theses are then the new percentages that the rest of the operations will be split into.

A rolling split is when the batches are moved to alternative resources. A rolling split occurs when the operation has a rolling strategy defined. The number of alternative resources used can be defined by the rollingResourceCount variable.

While doing a rolling split, the alternative resource can have different maxBatchSizes which will give batches of uneven sizes. Ex. we have an operation (quantity=1000) on a resource with a maxBatchSize of 700 and a rolling strategy. The operation has one other alternative resource and this resource has a maxBatchSize of 300. The macro will then calculate that the operation should be split into two batches of 700 and 300 equal to 70 and 30 percent. These percentages are then what the next operations are split into. The next operation (quantity=1000) could then be located on a resource with a maxBatchSize of 300 which will the make the macro calculate that the 70% part will have to be further split into 3 batches. The resource could also have an rolling strategy causing the new batches to be moved to alternative resources and so on.

When doing rolling splits the macro will always even out the batches located on the same resource, such that if we somehow have generated three batches of size 300, 500 and 100 and we are doing a rolling split with rollingResourceCount=2, they would get changed to 200, 500 and 200 since the batches of 300 and 100 would be located on the same resource.

If the macro during a rolling split meet an alternative resource with no maxBatchSize then the macro will place whatever remaining of the batch on that resource.

The splitSizeStrategy can also be defined on each resource an can hence alter the way the split parts is calculated.

Collecting

The macro can also collect batches that have already been split. A collection occur when an operation is located on a resource that has the maximum collection size variable defined. The macro will try to collect from the first batch and then as many adjacent batches as long as the total size of the batches is ≤ maxColSize.

Ex. If we have split a previous operation into batches of size 300, 400 and 300 and the current operation is of the same size but located on a resource with a maxColSize=800, then the macro will calculate that the first two batches would have to be collected into one batch, resulting in only two batches of 700 and 300 which is 70 and 30 percent. These percentages are then what is passed along to the new operation which will be split into 70 and 30 percent unless another maxColSize or a maxBatchSize is defined on the resource.

Time Split

It is possible to define what should happen to setup time, switchover time and overlap time, on a per-resource-basis. For a description, see the setupTimeSplit configuration parameter.

Resplit

It is possible to resplit an order with a new quantity. To do this, the order must have been split with a orderSplitLookupField set on the macro and the revertToMasterRouteForExistingOrder must be set to true.

The user can then set a new quantity on the order. The macro will then save this new order quantity, revert the order back to the alternative route with the same name, set the new order quantity on all operations in the order and then resplit the order.

Feedback

Was this helpful?

Yes No
You indicated this topic was not helpful to you ...
Could you please leave a comment telling us why? Thank you!
Thanks for your feedback.

Post your comment on this topic.

Post Comment