Batching optimisation
Input
The goal of the batching optimisation is to divide the picks in groups that can be processed efficiently by the warehouse workers while ensuring that a subsequent picking optimisation can further minimise travel distances.
Batching request
A batching request is structured as a JSON object with two mandatory properties: the list of the picks and the maximum batch size.
Property | Type | Description |
---|---|---|
picks | array of Picks | The list of picks that should be divided in batches |
batchSize | integer | The maximum size a batch can have |
timeStampTolerance | float | Optional value that controls the size of the time interval of a batch. The bigger timeStampTolerance the bigger the interval. |
maxOrders | integer | Optional value that sets the maximum number of orders that should be in a batch |
minPicksPerArea | integer | Optional value that sets the minimum number of picks that should be in a batch that belong to the same area |
A pick has the following properties
Property | Type | Description |
---|---|---|
name | string | Unique name identifying the item |
area | string | Name of the area or the position of the pick. |
time | integer (Unix time format) | This timestamp is used to minimise order waiting times. If omitted the request time will be used. |
customer | string | If specified indicates the unique identifier of the customer order linked to this item. |
Batching response
The response to a batching request returns the batches as a list of batches where, for each batch, it reports the timestamp around which the batch (so that a batch with a lower timestamp should be processed before one with an higher timestamp) was created and the list of pick names in the batch.
{
"solution" : [
{
"timestamp" : 0,
"picks" : [ "Pick 1", "pick 3", "Pick 4" ]
},
{
"timestamp" : 0,
"picks" : [ "Pick 2", "pick 5", "Pick 6" ]
}
]
}
Example
curl --request POST --url https://onpick.solvice.io/batch/solve \
-H "Authorization: <<apiKey>>" \
--data '
{
"picks": [
{
"name": "Pick 1",
"area": "node-0",
"customer": "order 1"
},
{
"name": "Pick 2",
"area": "node-0",
"customer": "order 1"
},
{
"name": "Pick 3",
"area": "node-0",
"customer": "order 2"
},
{
"name": "Pick 4",
"area": "node-1",
"customer": "order 3"
},
{
"name": "Pick 5",
"area": "node-1",
"customer": "order 0"
},
{
"name": "Pick 6",
"area": "node-1",
"customer": "order 3"
},
{
"name": "Pick 7",
"area": "node-2",
"customer": "order 3"
},
{
"name": "Pick 8",
"area": "node-2",
"customer": "order 1"
},
{
"name": "Pick 9",
"area": "node-2",
"customer": "order 1"
},
{
"name": "Pick 10",
"area": "node-3",
"customer": "order 2"
},
{
"name": "Pick 11",
"area": "node-3",
"customer": "order 3"
},
{
"name": "Pick 12",
"area": "node-3",
"customer": "order 0"
}
],
"batchSize" : "6"
}
'
{
"solution": [
{
"timestamp": 0,
"picks": [
"Pick 1",
"Pick 2",
"Pick 3",
"Pick 8",
"Pick 9",
"Pick 10"
]
},
{
"timestamp": 0,
"picks": [
"Pick 4",
"Pick 5",
"Pick 6",
"Pick 7",
"Pick 11",
"Pick 12"
]
}
]
}
Updated over 2 years ago