Maps SDK for C++ 1.0.0
Loading...
Searching...
No Matches
Vehicle Routing Problem

Vehicle routing problem related interfaces. More...

Classes

struct  gem::vrp::dlv::DriverPreferences
 Driver preferences. More...
class  gem::vrp::dlv::IDriverListener
 Driver listener. More...
class  gem::vrp::dlv::IFleetListener
 Fleet management listener. More...
class  gem::vrp::dlv::Ride
 Ride object. More...
class  gem::vrp::dlv::Driver
 Driver object. More...
class  gem::vrp::dlv::Fleet
 Fleet object. More...
struct  gem::vrp::rs::DriverPreferences
 Driver preferences. More...
class  gem::vrp::rs::IDriverListener
 Driver listener. More...
class  gem::vrp::rs::IRiderListener
 Rider listener. More...
class  gem::vrp::rs::Ride
 Ride object. More...
class  gem::vrp::rs::Driver
 Driver object. More...
class  gem::vrp::rs::Rider
 Rider object. More...
class  gem::vrp::rs::Fleet
 Fleet object. More...
struct  gem::vrp::OrderPair
 Defines a pickup-delivery pair of order IDs used to enforce sequential visitation constraints. More...
struct  gem::vrp::CustomData
 Used to set custom data for Order and Customer. More...
struct  gem::vrp::FuelPricePair
 Pair of fuel type - price. More...
struct  gem::vrp::VRPAvailableBreak
 Defines an available break window for a vehicle during a route. More...
struct  gem::vrp::VRPActualBreak
 Represents an actual break that was taken by a vehicle during a route. More...
class  gem::vrp::Customer
 Defines a customer. More...
class  gem::vrp::MiscLocation
 Defines a MiscLocation. More...
class  gem::vrp::Order
 Defines an order that will be visited. More...
class  gem::vrp::RouteOrder
 Defines an order that was visited. More...
class  gem::vrp::Vehicle
 Defines a vehicle. More...
class  gem::vrp::Territory
 Defines a territory. More...
class  gem::vrp::VehicleConstraints
 Defines the set of constraints which can be applied over a vehicle. More...
class  gem::vrp::ConfigurationParameters
 Defines the configuration of the optimization and the route. More...
class  gem::vrp::Departure
 Defines a departure of an optimization or route. More...
class  gem::vrp::Destination
 Defines a destination of an optimization or route. More...
class  gem::vrp::Route
 A route is a part of the optimization's solution. More...
class  gem::vrp::Optimization
 Defines a vehicle routing problem that has to be optimized. More...
struct  gem::vrp::CustomerOrder
 Struct which defines a customer's order. More...
class  gem::vrp::Service
 VRP Service. More...

Typedefs

using gem::vrp::dlv::RideRef = ApiRef<Ride>
 Reference to Ride.
using gem::vrp::dlv::RideList = List<Ride>
 List of Ride objects.
using gem::vrp::rs::RideRef = ApiRef<Ride>
 Reference to Ride.
using gem::vrp::rs::RideList = List<Ride>
 List of Ride objects.
using gem::vrp::OrdersSequenceMap = std::map<vrp::EOrdersSequenceOption, LargeIntListList>
 It is used to set orders sequence in ConfigurationParamaters::setOrdersSequenceOptions().
using gem::vrp::FuelPricePairList = List<FuelPricePair>
 List of FuelPricePair structures.
using gem::vrp::FuelPricesList = List<FuelPrices>
 List of FuelPrices structures.
using gem::vrp::RequestList = List<Request>
 List of FuelPrices structures.
using gem::vrp::OrderPairList = List<OrderPair>
 List of OrderPair structures.
using gem::vrp::OrderPairListRef = ApiRef<OrderPairList>
 Reference to OrderPairList.
using gem::vrp::CustomDataList = List<CustomData>
 List of CustomData structures.
using gem::vrp::CustomDataListRef = ApiRef<CustomDataList>
 Reference to CustomDataList.
using gem::vrp::RequestListRef = ApiRef<RequestList>
 Reference to CustomDataList.
using gem::vrp::CustomerOrderList = List<CustomerOrder>
 List of CustomerOrder structures.
using gem::vrp::CustomerRef = ApiRef<Customer>
 Reference to Customer.
using gem::vrp::CustomerList = List<Customer>
 List of Customer objects.
using gem::vrp::CustomerListRef = ApiRef<CustomerList>
 Reference to CustomerList.
using gem::vrp::MiscLocationRef = ApiRef<MiscLocation>
 Reference to MiscLocation.
using gem::vrp::MiscLocationList = List<MiscLocation>
 List of MiscLocation objects.
using gem::vrp::MiscLocationListRef = ApiRef<MiscLocationList>
 Reference to MiscLocationList.
using gem::vrp::OrderRef = ApiRef<Order>
 Reference to Order.
using gem::vrp::OrderList = List<Order>
 List of Order objects.
using gem::vrp::OrderListRef = ApiRef<OrderList>
 Reference to OrderList.
using gem::vrp::RouteOrderList = List<RouteOrder>
 List of RouteOrder objects.
using gem::vrp::RouteOrderListRef = ApiRef<RouteOrderList>
 Reference to RouteOrderList.
using gem::vrp::VehicleList = List<Vehicle>
 List of Vehicle objects.
using gem::vrp::VehicleListRef = ApiRef<VehicleList>
 Reference to VehicleList.
using gem::vrp::VehicleRef = ApiRef<Vehicle>
 Reference to Vehicle.
using gem::vrp::TerritoryList = List<Territory>
 List of Territory objects.
using gem::vrp::VehicleConstraintsRef = ApiRef<VehicleConstraints>
 Reference to VehicleConstraints.
using gem::vrp::VehicleConstraintsList = List<VehicleConstraints>
 List of VehicleConstraints objects.
using gem::vrp::VehicleConstraintsListRef = ApiRef<VehicleConstraintsList>
 Reference to VehicleConstraintsList.
using gem::vrp::ConfigurationParametersRef = ApiRef<ConfigurationParameters>
 Reference to ConfigurationParameters.
using gem::vrp::DepartureRef = ApiRef<Departure>
 Reference to Departure.
using gem::vrp::DepartureList = List<Departure>
 List of Departure objects.
using gem::vrp::DepartureListRef = ApiRef<DepartureList>
 Reference to OrderList.
using gem::vrp::DestinationRef = ApiRef<Destination>
 Reference to Departure.
using gem::vrp::DestinationList = List<Destination>
 List of Departure objects.
using gem::vrp::DestinationListRef = ApiRef<DestinationList>
 Reference to OrderList.
using gem::vrp::RouteList = List<Route>
 List of Route objects.
using gem::vrp::OptimizationList = List<Optimization>
 List of Optimization objects.

Enumerations

enum  gem::vrp::dlv::EDriverStatus {
  gem::vrp::dlv::DS_Logout , gem::vrp::dlv::DS_Preparing , gem::vrp::dlv::DS_Idle , gem::vrp::dlv::DS_WaitingInternetConnection ,
  gem::vrp::dlv::DS_Configuring , gem::vrp::dlv::DS_Delivering , gem::vrp::dlv::DS_ReturningToDestination , gem::vrp::dlv::DS_Error
}
 Driver status. More...
enum  gem::vrp::rs::EDriverStatus {
  gem::vrp::rs::DS_Logout , gem::vrp::rs::DS_Preparing , gem::vrp::rs::DS_Idle , gem::vrp::rs::DS_WaitingInternetConnection ,
  gem::vrp::rs::DS_Configuring , gem::vrp::rs::DS_Picking , gem::vrp::rs::DS_Delivering , gem::vrp::rs::DS_Error
}
 Driver status. More...
enum  gem::vrp::EFuelType {
  gem::vrp::FT_None = -1 , gem::vrp::FT_DieselStandard = 0 , gem::vrp::FT_DieselPremium = 1 , gem::vrp::FT_GasolineStandard = 2 ,
  gem::vrp::FT_GasolinePremium = 3 , gem::vrp::FT_Electric = 4 , gem::vrp::FT_LPG = 5
}
 Fuel type. More...
enum  gem::vrp::EOptimizationQuality { gem::vrp::OQ_Unoptimized = 0 , gem::vrp::OQ_Fast = 1 , gem::vrp::OQ_Optimized = 2 , gem::vrp::OQ_Best = 3 }
 The quality of the resulted solution after optimization. More...
enum  gem::vrp::EOptimizationCriterion { gem::vrp::OC_Distance = 0 , gem::vrp::OC_Time = 1 }
 The optimization criterion. More...
enum  gem::vrp::ERoadRestrictions { gem::vrp::RR_None = 0 , gem::vrp::RR_Tolls = 1 , gem::vrp::RR_Highways = 2 }
 Options which let the user choose which road to avoid. More...
enum  gem::vrp::EBalanceRoutesOption { gem::vrp::EB_None = 0 , gem::vrp::EB_ByTime = 1 , gem::vrp::EB_ByNumberOfOrders = 2 }
 Option to balance the routes of an optimization. More...
enum  gem::vrp::ERouteType { gem::vrp::RT_RoundRoute = 0 , gem::vrp::RT_EndAnywhere = 1 , gem::vrp::RT_CustomEnd = 2 }
 The type of the route. More...
enum  gem::vrp::EOrderType { gem::vrp::OT_PickUp = 0 , gem::vrp::OT_Delivery = 1 }
 The type of the order. More...
enum class  gem::vrp::EOrderStatus { EOrderStatus::OS_Unscheduled = 0 , EOrderStatus::OS_Scheduled = 1 }
 The status of the order. More...
enum class  gem::vrp::EOrderState {
  EOrderState::OS_Failed = -2 , EOrderState::OS_Rejected = -1 , EOrderState::OS_Completed = 0 , EOrderState::OS_New = 1 ,
  EOrderState::OS_OnRoute = 2 , EOrderState::OS_Servicing = 3 , EOrderState::OS_Skipped = 4
}
 The state of the order. More...
enum  gem::vrp::EOrderPriority { gem::vrp::OP_Low = 0 , gem::vrp::OP_High = 1 }
 The priority of the order. More...
enum  gem::vrp::EVehicleType {
  gem::vrp::VT_Car = 0 , gem::vrp::VT_Pedestrian = 1 , gem::vrp::VT_EBike = 2 , gem::vrp::VT_Truck = 3 ,
  gem::vrp::VT_Bike = 4
}
 Defines the supported vehicle types. More...
enum  gem::vrp::EVehicleStatus { gem::vrp::VS_Unavailable = -1 , gem::vrp::VS_Available = 0 , gem::vrp::VS_EnRoute = 1 }
 Defines the supported vehicle types. More...
enum  gem::vrp::EMatrixBuildType { gem::vrp::MBT_Set = 0 , gem::vrp::MBT_Real = 1 }
 How to build the matrix(or matrices). More...
enum  gem::vrp::ERideStatus {
  gem::vrp::RS_Finished = 0 , gem::vrp::RS_New = 1 , gem::vrp::RS_Started = 2 , gem::vrp::RS_CanceledByDriver = 3 ,
  gem::vrp::RS_CanceledByFleet = 4
}
 What is the status of the ride. More...
enum  gem::vrp::EArrangeCriterion {
  gem::vrp::AC_Matrix = 0 , gem::vrp::AC_Euclidian = 1 , gem::vrp::AC_ExactEuclidian = 2 , gem::vrp::AC_Geodesic = 3 ,
  gem::vrp::AC_Manhattan = 4
}
 The criterion according to which the orders are arranged. More...
enum  gem::vrp::EDistanceUnit { gem::vrp::DU_Kilometers = 0 , gem::vrp::DU_Miles = 1 }
 Defines the distance units. More...
enum  gem::vrp::ETerritoryType { gem::vrp::TT_Polygon = 0 , gem::vrp::TT_Circle = 1 , gem::vrp::TT_Rectangle = 2 }
 The type of the territory. More...
enum  gem::vrp::EOrdersSequenceOption { gem::vrp::OSO_InSameRoute = 0 , gem::vrp::OSO_InSequence = 1 , gem::vrp::OSO_InFixedSequence = 2 , gem::vrp::OSO_InPairs = 3 }
 Defines the sequencing and grouping constraints that can be applied to a set of orders. More...

Detailed Description

Vehicle routing problem related interfaces.

Typedef Documentation

◆ RequestList

List of FuelPrices structures.

List of CustomData structures.

Enumeration Type Documentation

◆ EArrangeCriterion

The criterion according to which the orders are arranged.

It is used only if EOptimizationCriterion = OC_Distance

Enumerator
AC_Matrix 

The orders are arranged based on the matrix distance.

AC_Euclidian 

The distance between 2 orders is calculated with Euclidean distance formula(in straight line) and the result is rounded.

AC_ExactEuclidian 

The distance between 2 orders is calculated with Euclidean distance formula(in straight line) and the result is decimal.

AC_Geodesic 

The distance between 2 orders is calculated in straight line taking into consideration the curve of the Earth.

AC_Manhattan 

The distance between 2 orders is calculated with the Manhattan distance formula.

◆ EBalanceRoutesOption

Option to balance the routes of an optimization.

Enumerator
EB_None 

Disable.

EB_ByTime 

Balance route by time.

EB_ByNumberOfOrders 

Balance route by number of orders.

◆ EDistanceUnit

Defines the distance units.

Enumerator
DU_Kilometers 

Kilometers unit.

DU_Miles 

Miles unit.

◆ EDriverStatus [1/2]

Driver status.

Enumerator
DS_Logout 

Logged out, wait for login.

DS_Preparing 

Preparing driver ( registering, resuming previously aborted sessions, etc ).

DS_Idle 

Idle, waiting rides.

DS_WaitingInternetConnection 

Waiting an internet connection needed for getting / configuring trip.

DS_Configuring 

Configuring trip.

DS_Delivering 

Delivering.

DS_ReturningToDestination 

Deliveries done, returning to destination point.

DS_Error 

Driver is stopped due to a fatal error.

◆ EDriverStatus [2/2]

Driver status.

Enumerator
DS_Logout 

Logged out, wait for login.

DS_Preparing 

Preparing driver ( registering, resuming previously aborted sessions, etc ).

DS_Idle 

Idle, waiting rides.

DS_WaitingInternetConnection 

Waiting an internet connection needed for preparing / accepting / configuring trip.

DS_Configuring 

Configuring trip.

DS_Picking 

Picking rider.

DS_Delivering 

Delivering rider.

DS_Error 

Driver is stopped due to a fatal error.

◆ EFuelType

Fuel type.

Enumerator
FT_None 

Used for EVehicleType::VT_Pedestrian and EVehicleType::VT_Bike.

FT_DieselStandard 

Standard diesel fuel type.

FT_DieselPremium 

Premium diesel fuel type.

FT_GasolineStandard 

Standard gasoline fuel type.

FT_GasolinePremium 

Premium gasoline fuel type.

FT_Electric 

Electric fuel type.

FT_LPG 

LPG (Liquid Petroleum Gas) fuel type.

◆ EMatrixBuildType

How to build the matrix(or matrices).

Enumerator
MBT_Set 

The distance and time matrices are set by the user.

MBT_Real 

The distance and time values are real (by car).

◆ EOptimizationCriterion

The optimization criterion.

Enumerator
OC_Distance 

The problem will be optimized by distance. (the route with the shortest distance).

OC_Time 

The problem will be optimized by time. (the route with the shortest time).

◆ EOptimizationQuality

The quality of the resulted solution after optimization.

Enumerator
OQ_Unoptimized 

The algorithm will return an unoptimized solution.

OQ_Fast 

The algorithm will return the first solution found. (Not an accurate solution).

OQ_Optimized 

The algorithm will return an optimized solution.

OQ_Best 

The algorithm will return the best solution found in the specified time.

◆ EOrderPriority

The priority of the order.

Enumerator
OP_Low 

Low priority order.

OP_High 

High priority order.

◆ EOrdersSequenceOption

Defines the sequencing and grouping constraints that can be applied to a set of orders.

Used in conjunction with OrdersSequenceMap and ConfigurationParameters::setOrderSequenceOptions() to enforce specific visitation patterns during route optimization.

Example usage:

vrp::OrdersSequenceMap sequenceOptions;
// Force orders 1, 2, 3 to be on the same route
sequenceOptions[vrp::EOrdersSequenceOption::OSO_InSameRoute].push_back({ 1, 2, 3 });
// Force orders 4, 5, 6 to be visited in that exact order (other orders may be inserted between them)
sequenceOptions[vrp::EOrdersSequenceOption::OSO_InSequence].push_back({ 4, 5, 6 });
configParams.setOrderSequenceOptions(sequenceOptions);
std::map< vrp::EOrdersSequenceOption, LargeIntListList > OrdersSequenceMap
It is used to set orders sequence in ConfigurationParamaters::setOrdersSequenceOptions().
Definition GEM_VRP.h:291
@ OSO_InSameRoute
All the orders used in this type of relation will be part of the same route.
Definition GEM_VRP.h:273
@ OSO_InSequence
All the orders in this relation will be visited in the specified sequence, but the optimizer may inse...
Definition GEM_VRP.h:277
See also
OrdersSequenceMap, ConfigurationParameters::setOrderSequenceOptions(), OrderPair
Enumerator
OSO_InSameRoute 

All the orders used in this type of relation will be part of the same route.

The optimizer is free to determine the visitation order within the route.

OSO_InSequence 

All the orders in this relation will be visited in the specified sequence, but the optimizer may insert other orders between them if feasible.

Use this option when relative order matters but strict adjacency is not required.

OSO_InFixedSequence 

All the orders in this relation will be visited in the specified sequence, and no other orders will be inserted between them by the solver.

Use this option when orders must be visited consecutively in the given order, with no intermediate stops allowed.

OSO_InPairs 

The orders in this relation are treated as pickup-delivery pairs.

This enforces the optimizer to plan routes where each pickup order is visited before its corresponding delivery order. The pairs are defined as OrderPair objects and passed via OrdersSequenceMap.

See also
OrderPair

◆ EOrderState

enum class gem::vrp::EOrderState
strong

The state of the order.

Enumerator
OS_Failed 

The order has encountered a failure or error during the delivery or pick-up process.

OS_Rejected 

The order has been rejected and will not be processed.

OS_Completed 

The order has been successfully completed.

OS_New 

The order has not yet been assigned to any route (default).

OS_OnRoute 

The order is currently in transit or en route to its destination.

OS_Servicing 

The order is in the process of being serviced or fulfilled.

OS_Skipped 

The order has been skipped by the driver.

◆ EOrderStatus

enum class gem::vrp::EOrderStatus
strong

The status of the order.

Enumerator
OS_Unscheduled 

The order is not part of a route (default).

OS_Scheduled 

The order is part of a route.

◆ EOrderType

The type of the order.

Enumerator
OT_PickUp 

The number of packages, weight and cubic volume of this order will be picked-up.

OT_Delivery 

The number of packages, weight and cubic volume of this order will be dropped-off.

◆ ERideStatus

What is the status of the ride.

Enumerator
RS_Finished 

The ride is finished.

RS_New 

The ride is ready to start.

RS_Started 

The ride has started.

RS_CanceledByDriver 

The ride is cancelled.

RS_CanceledByFleet 

The ride is on pause.

◆ ERoadRestrictions

Options which let the user choose which road to avoid.

Enumerator
RR_None 

Disable.

RR_Tolls 

Avoid toll road restriction.

RR_Highways 

Avoid highways restriction.

◆ ERouteType

The type of the route.

Enumerator
RT_RoundRoute 

The route will return at the first order (circuit).

RT_EndAnywhere 

The route will end at the most efficient order selected by the algorithm.

RT_CustomEnd 

The route will end at the specified order.

◆ ETerritoryType

The type of the territory.

Enumerator
TT_Polygon 

Polygon shape.

TT_Circle 

Circle shape.

TT_Rectangle 

Rectangle shape.

◆ EVehicleStatus

Defines the supported vehicle types.

Enumerator
VS_Unavailable 

Vehicle is unavailable.

VS_Available 

Vehicle is available.

VS_EnRoute 

Vehicle is en route.

◆ EVehicleType

Defines the supported vehicle types.

Enumerator
VT_Car 

Car vehicle type.

VT_Pedestrian 

Pedestrian vehicle type.

VT_EBike 

Electric bike vehicle type.

VT_Truck 

Truck vehicle type.

VT_Bike 

Regular bike vehicle type.