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 |
Updated over 2 years ago