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.

PropertyTypeDescription
picksarray of PicksThe list of picks that should be divided in batches
batchSizeintegerThe maximum size a batch can have
timeStampTolerancefloatOptional value that controls the size of the time interval of a batch. The bigger timeStampTolerance the bigger the interval.
maxOrdersintegerOptional value that sets the maximum number of orders that should be in a batch
minPicksPerAreaintegerOptional 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

PropertyTypeDescription
namestringUnique name identifying the item
areastringName of the area or the position of the pick.
timeinteger (Unix time format)This timestamp is used to minimise order waiting times. If omitted the request time will be used.
customerstringIf 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"
            ]
        }
    ]
}

What’s Next