...
The first step before performing the splitting of an order is the selection of a splitting algorithm for a client. This can be done under the Primary Routing Algorithm tab in the Clients screen. The user can select from one of two splitting algorithms from this screen and the algorithm can be updated at any time. The two splitting algorithms available are:
An order received with the isSplitRequired flag as true is eligible for splitting based on the active splitting algorithm specified for the corresponding client.
Note |
---|
Reserved pools are not considered for split / route in Increff OMS. |
...
Figure 1: Primary Routing Algorithm selection popup in Primary Routing Algorithm tab of Clients screen
...
For setting up clusters, the following two steps are to be done
Specification of cluster name: From the Split / Route Settings section in OMS, select the Clusters option and upload the names of all clusters that are to be created. For a given client, the name of its clusters must be unique.
Specification of cluster definitions: For each created cluster, the list of locations that belong to the cluster must be uploaded from the Cluster Definition screen present under the Split / Route Settings section of OMS.
...
Figure 3: Example of clustering done to a group of locations based on proximity
...
Based on the delivery area-code, the locations are sorted in the following manner:
Find a previously unused area-cluster mapping whose pattern has the longest possible prefix match with the delivery area code out of all the patterns.
For the cluster found in the previous step, if more than one locations are present, run the minimize-shipments algorithms to decide which location to use
⚠️ Note: In case there are conflicting location after running both minimize-shipment and minimize-delivery algorithms, and one of the available locations will be picked for sub-order creation
The steps followed in the minimize distance algorithm are:
Select all SKUs from order where Inventory allocation is required
Select Cluster(s) mapped to Delivery area code in sorted order
Get all locations for selected cluster(s)
Select all locations whose Inventory is exposed on marketplace AND where selected SKUs are available
Sort all selected locations by count of Items
Create maximum Sub-Order from Top Location
Check if more allocation is needed, if yes then goto 1 else end
Example of execution:
Assuming that the clusters are set up in the manner described here, suppose an order is received with the delivery area code: 320311. If the minimize-delivery algorithm is executed for this order, based on area code mappings, the best match(es) of the cluster would be picked. In this case, the best match with the longest matching area-code prefix is the SOUTH_CLUSTER which is mapped to the area-code prefix 32.
...
The minimize-shipments algorithm attempts to split the order in such a way that the number of sub-orders or shipments created in different locations is minimized. This is done by greedily picking locations based on:
Total quantity allocatable from the location (the higher the better)
If two or more locations are conflicted after step 1, the count of distinct SKUs that are allocatable
If two or more locations are conflicted after step 2, the closest location based on minimize-delivery algorithm
⚠️ Note: The greedy selection algorithm used for minimizing shipments is an approximate algorithm which should generate results that are fairly accurate. Thus, some orders might be splitted in a non-ideal manner. Determining a completely accurate distribution for minimizing shipments is computationally very difficult and thus the approximate algorithm has been used.
The steps followed in the minimize shipments algorithm are:
Select all SKUs from the order where Inventory allocation is required
Select all locations whose Inventory is exposed on marketplace AND where selected SKUs are available
Rank Locations by Count of Items and SKUs available
Select Top Ranked Location(s)
If there are multiple top ranked locations, use Cluster Area Code mapping to find the closest location.
Create maximum Sub-Order from Top Ranked Location
Check if more allocation is needed, if yes then goto 1 else end
Example of execution:
Assume that the distribution of inventory for two SKUs across 3 warehouses is as follows:
...