PICKUP
(loading), DROP
(unloading)DROP_FROM_BOX
(unloading cargo that is already in the body), PICKUP_TO_BOX
(cargo pickup into the body without subsequent unloading), WORK
(working at the location without moving the cargo)Performer restrictions:
Transport restrictions:
Order restrictions:
Entities are compatible if the capabilities list of one entity corresponds to the list of restrictions of another entity (example: fleet parameters corresponds to cargo parameters to be delivered).
Supported compatibilities:
Name | Restrictions | Features |
---|---|---|
Order - Performer | order.performer_restrictions | performer.performer_features |
Order - Not a performer | order.performer_blacklist | performer.performer_features |
Cargo - Box | order.cargo.box_restrictions | transport.box.box_features |
Location - Transport | location.transport_restrictions | transport.transport_features |
Transport - Performer | transport.performer_restrictions | performer.performer_features |
Performer - Transport | performer.transport_restrictions | transport.transport_features |
Order - Order | order.order_restrictions | order.order_features |
Business rule examples:
Name | Business rule example |
---|---|
Order - Performer | The driver must have a special license to fulfil the order |
Order - Not a performer | The driver is in the blacklist |
Cargo - Box | For transportation of frozen products, a box with a special temperature profile is required |
Location - Transport | Restrictions on the transport height |
Transport - Performer | The truck driver must have the class C driving license |
Performer - Transport | The driver is allowed to work on a specific transport |
Order - Order | It is not allowed to transport fish and fruits in the same box |
List of possibilities of a object rotations (90 degree step):
ALL
- can rotate by any axisYAW
- can yawPITCH
- can pitchROLL
- can rollA trip is described by a list of states of the performer, while at the same time the performer can be in several states (for example, being inside the working time window of a location and fulfilling an order at the same location).
The meanings of the flags responsible for the geographical location:
AROUND_LOCATION
- the performer is located near the location - in the process of parking or leaving it.INSIDE_LOCATION
- the performer is located at the location.The values of the flags responsible for being in time windows:
INSIDE_WORKING_WINDOW
- the performer is inside the working time window.INSIDE_LOCATION_WINDOW
- the performer is located inside the location's operating time.INSIDE_EVENT_HARD_WINDOW
- the performer is inside a hard time window.INSIDE_EVENT_SOFT_WINDOW
- the performer is inside a soft time window.The values of the flags responsible for the actions:
ON_DEMAND
- the performer is working on the request.WAITING
- the performer is in standby mode.RELOCATING
- the performer moves to the next stop.BREAK
- the performer is on a break.REST
- the performer is on a long vacation.time | set of active flags | location / order / application / event | comment |
---|---|---|---|
10:00 | INSIDE_LOCATION AROUND_LOCATION |
2 / - / - / - | starting location |
10:10 | RELOCATING | - / - / - / - | we go to the first order |
10:20 | AROUND_LOCATION | 2 / - / - / - | arrived at the first order |
10:40 | AROUND_LOCATION INSIDE_LOCATION WAITING |
2 / - / - / - | parked |
11:00 | AROUND_LOCATION INSIDE_LOCATION INSIDE_LOCATION_WINDOW WAITING INSIDE_EVENT_HARD_WINDOW |
2 / - / - / - | waited for the start of the location window and at the same time the availability of the order |
11:25 | AROUND_LOCATION INSIDE_LOCATION INSIDE_LOCATION_WINDOW ON_DEMAND INSIDE_WORKING_WINDOW INSIDE_EVENT_HARD_WINDOW |
2 / 1 / 2 / 3 | waited for the change of artist |
11:30 | AROUND_LOCATION INSIDE_LOCATION INSIDE_LOCATION_WINDOW ON_DEMAND INSIDE_WORKING_WINDOW INSIDE_EVENT_HARD_WINDOW INSIDE_EVENT_SOFT_WINDOW |
2 / 1 / 2 / 3 | while working - a soft window happened |
11:40 | AROUND_LOCATION INSIDE_LOCATION INSIDE_LOCATION_WINDOW INSIDE_WORKING_WINDOW |
2 / - / - / - | finished working |
11:45 | AROUND_LOCATION INSIDE_WORKING_WINDOW |
2 / - / - / - | drove out of the parking lot |
11:45 | RELOCATING INSIDE_WORKING_WINDOW |
- / - / - / - | we go to the next order |
For each planning, it is possible to specify a planning configuration that defines the objective function, the desired quality of the routes, and the calculation speed.
The name of the scheduling configuration is passed in the trips_settings.configuration
field.
Main configurations:
Title | Task |
---|---|
optimize_distance | Arrange as many orders as possible, then optimize the total mileage (the number of vehicles is selected based on the mileage), used by default |
optimize_transports | Place as many orders as possible, while using as little transport as possible, ceteris paribus, optimize the work time of performers |
optimize_locality_grouping | Place as many orders as possible, while striving to optimize the visual grouping of routes, but not their number |
optimize_cars_then_distance | Arrange as many orders as possible, then optimize the number of vehicles, then the mileage |
optimize_time | Place as many orders as possible, then optimize the total work time of performers |
optimize_cars_then_time | Arrange as many orders as possible, then optimize the number of transport, then the total time of the performers |
optimize_money | Optimize the value of "profit - costs", consists of rewards for applications and costs for performers and transports (optimized value is non-negative) |
Additional configurations:
Title | Task |
---|---|
visual_grouping | Arrange as many orders as possible while using as little transport as possible and routes should be visually grouped |
optimize_visual_grouping | Arrange as many orders as possible, then evenly distribute orders taking into account transport accessibility zones (similar to visual_grouping, but visual grouping is calculated differently) |
optimize_cars_then_locality_grouping | Arrange as many orders as possible, then optimize the number of vehicles, then visually group the routes |
optimize_cars_then_single_location_grouping_sequenced | Place as many orders as possible, then optimize the number of machines, then reliability |
In addition to the existing planning options, it is possible to create an objective function directly for the client's business processes (request configuration).
For development, it is recommended to use optimize_cars_then_distance