Layout creation
Input
The goal of the picking optimisation solver is to create optimal routes and picking list for the workers in a warehouse. Consequently the first to do is to define the layout of the warehouse at the base of the problem.
Layout
Layouts of a warehouse are converted to graphs so that they can be used by routing algorithms .
Graph creation request
The graph creation request is structured as follows
Property | Type | Description |
---|---|---|
name | String | Name that describes the graph |
edges | array of Edges | List of edges composing the graph |
routingOptions | RoutingOptions | Object containing parameters used to tune how the Solver will handle the graph. If not specified the graph will be setup with the default values |
Edges
The graph is uploaded as a list of edges where each edges contains information on the origin, destination and the weight.
Property | Type | Description |
---|---|---|
from | String | Source node of edge in the graph |
to | String | Destination node of edge in the graph |
weight | Number | Weight of the weighted directed edge. Usually the distance in meters |
RoutingOptions
These parameters tell the Solver how to manage the congestion forecasting and the default speed of the pickers.
Property | Type | Description |
---|---|---|
lookaheadTime | String (duration iso8601) | How much the solver should look ahead to manage congestion |
timeSegmentSize | String (duration iso8601) | Duration of the time segments in which the look ahead time is divided |
graphUpdateMultiplier | Number | This parameter controls how non-blocking pickers influence the congestion on the graph |
speedInMeterPerSecond | Number | Default speed for each picker |
Example
Let's take the simple layout shown in the following image and let's see how it can be coded and uploaded.
The graph is composed of 9 nodes and 18 edges (since it can be navigated in both directions).
curl --request POST \
--url https://onpick.solvice.io/graph/create \
--header 'Accept: application/json' \
--header 'Authorization: <<apiKey>>' \
--header 'Content-Type: application/json' \
--data '
{
"name" : "test",
"edges" : [
{"from":"AA","to":"BA","weight":1.0},
{"from":"BA","to":"AA","weight":1.0},
{"from":"BA","to":"CA","weight":1.0},
{"from":"CA","to":"BA","weight":1.0},
{"from":"CA","to":"CB","weight":1.0},
{"from":"CB","to":"CA","weight":1.0},
{"from":"CB","to":"CC","weight":1.0},
{"from":"CC","to":"CB","weight":1.0},
{"from":"CC","to":"BC","weight":1.0},
{"from":"BC","to":"CC","weight":1.0},
{"from":"BC","to":"BB","weight":1.0},
{"from":"BB","to":"BC","weight":1.0},
{"from":"BA","to":"BB","weight":1.0},
{"from":"BB","to":"BA","weight":1.0},
{"from":"BC","to":"AC","weight":1.0},
{"from":"AC","to":"BC","weight":1.0},
{"from":"AC","to":"AB","weight":1.0},
{"from":"AB","to":"AC","weight":1.0}
]
}
'
{
"id":"6568e4d6-e3cf-4eec-8694-0ea7db75cebe",
"createdAt":"2022-03-02T10:47:14.582766",
"name": "test",
"updatedAt":"2022-03-02T10:47:14.582838",
"edges":18,
"nodes":9,
"username": "test",
"routingOptions":{
"lookaheadTime":900.000000000,
"timeSegmentSize":300.000000000,
"speedInMeterPerSecond":1.6,
"graphUpdateMultiplier":1.5
}
}
Response
The response provided for a successful upload presents some useful information regarding the uploaded graph.
Property | Type | Description |
---|---|---|
id | string (UUID) | The unique identifier that must be used to select this graph in a PickRequest |
name | string | A name for the graph (currently unused) |
edges | integer | The number of edges in the graph |
nodes | integer | The number of nodes in the graph |
createdAt | string (date) | The date when the graph was uploaded |
updatedAt | string (date) | The date of the last update |
username | string | Username of the user uploading the graph |
routingOptions | RoutingOptions | If not specified in the request it will report the default values. |
Updated over 2 years ago