Picking optimisation

Input

The goal of the picking optimisation solver is to find the best picklist and route for each picker.
To do so, the characteristics of each picker and item to pick need to be provided in the request.

Pick solve request

Here is the general structure of the solve request.

Property

Type

Description

graph

string (UUID)

The graph id returned by OnPick platform when uploaded.

pickers

array of pickers

The list of pickers that will retrieve the items in the warehouse.

picks

array of picks

The list of picks.

Pickers

Pickers are specified as a list of objects with the following properties

Property

Type

Description

name

string

Unique name identifier for the picker.

position

string

Node name for the initial position of the picker in the graph.

capacity

integer

Capacity of the picker

timeCapacity

string (duration iso8601)

The time the picker has to complete his picklist, expressed as a duration.

speed

double

The speed of the picker expressed in meters per second. If not specified it is assumed to be the one specified in the routing options for the graph which has a default value of 1.6 m/s

blocking

boolean

If true it signals the solver that other pickers cannot walk around this picker. For instance they may operate a vehicle (e.g. a forklift) or large picking device and walking around them may be dangerous or unfeasible.

dropOff

string

The position where the pickers should drop off the picks.

Picks

Picks have the following properties

Property

Type

Description

name

string

Unique name identifying the item

position

string

Name of the node corresponding to the position of the item.

pickHandlingDuration

string (duration iso8601)

The time needed to pick the item from the shelf.

load

integer

How much picker capacity the item is going to use.

picker

string

If specified indicates the Picker that is assigned to pick this item.

customer

string

If specified indicates the unique identifier of the customer order linked to this item.

Example

For the example we are using the demo graph with id="00000000-0000-0000-0000-000000000000"

curl --request POST --url https://onpick.solvice.io/pick/solve \
         -H "Authorization: <<apiKey>>" \
     --data '
{
     "graph": "00000000-0000-0000-0000-000000000000",
     "pickers": [
          {
               "name": "John",
               "position": "node-1-1"
          }
     ],
     "picks": [
          {
               "name": "p1",
               "position": "node-4-3",
               "pickHandlingDuration": "PT1S"
          },
          {
               "name": "p2",
               "position": "node-5-2",
               "pickHandlingDuration": "PT1S"
          }
     ]
}
'
{
    "solution": [
      {
        "picker" : "John",
        "visits" : [
            {
                "position": "node-1-1",
                "pick": null,
                "arrival": 0.0,
                "arrivalInSeconds": 0,
                "nextPosition": "node-4-3",
                "path": [
                    "node-1-1",
                    "node-1-2",
                    "node-1-3",
                    "node-2-3",
                    "node-3-3",
                    "node-4-3"
                ]
            },
            {
                "position": "node-4-3",
                "pick": "p1",
                "arrival": 125.000000000,
                "arrivalInSeconds": 125,
                "nextPosition": "node-5-2",
                "path": [
                    "node-4-3",
                    "node-3-3",
                    "node-2-3",
                    "node-1-3",
                    "node-1-2",
                    "node-2-2",
                    "node-3-2",
                    "node-4-2",
                    "node-5-2"
                ]
            },
            {
                "position": "node-5-2",
                "pick": "p2",
                "arrival": 394.000000000,
                "arrivalInSeconds": 394,
                "nextPosition": null,
                "path": null
            }
        ]
    }],
    "totalDistance": 361,
    "unassigned" : []
}

Pick response

The solution returned by OnPick is structured as follows:

Property

Type

Description

solution

array of PickerRoute objects

The solution contains the detailed route for each picker

totalDistance

integer

The total distance travelled by the pickers

unassigned

array of picks

If the solver was unable to assign all the picks it will report the unassigned picks in this array.3

As shown in the table, the solution property contains an array of PickerRoute objects. Each PickerRoute contains two properties, picker and visits. Picker returns the name of the picker and visits is an array of Position objects. Each Position contains information on the current position (if there is a pick or not) and how to reach the next position until all the picks are collected.

Property

Type

Description

position

string

The node in the graph that represents the current position of the picker

pick

string

If not null, it specifies the item the picker should collect in this position

arrival

float

Estimated arrival time in this position

arrivalInSeconds

integer

Estimated arrival time in seconds

nextPosition

string

The next node in the route of the Picker

path

array of string

The nodes that the Picker should go through to arrive to nextPosition