Les demandes et limites de charge sont un type de contrainte que vous pouvez utiliser pour gérer la capacité. Elles spécifient la capacité requise pour une expédition et la capacité maximale d'un véhicule, ce qui vous permet d'optimiser les attributions d'itinéraires en fonction de ces contraintes.
Les demandes et limites de charge peuvent servir à atteindre des objectifs tels que:
- Empêcher les véhicules d'être surchargés
- Suivez l'évolution des chargements des véhicules à mesure que les envois sont collectés et livrés.
- Limitez le nombre de fois qu'un véhicule peut se rendre dans un emplacement spécifique.
Les demandes et limites de charge sont spécifiées dans les propriétés suivantes:
loadDemands
spécifie la quantité de capacité dont un envoi particulier a besoin.loadLimits
spécifie la capacité maximale d'un véhicule donné.
Structure
Comme le montre le schéma, les demandes et les limites de charge sont structurées comme suit:
loadDemands
est une propriété deShipment
. UnShipment
peut avoir plusieurs demandes de charge.loadLimits
est une propriété deVehicle
. UnVehicle
peut avoir plusieurs limites de charge.
Propriétés
Cette section décrit les propriétés des demandes et des limites de charge, qui sont les suivantes:
- Type de charge:propriété partagée entre les demandes de charge et les limites.
Load
etLoadLimit
:propriétés uniques présentes respectivement dans les demandes de charge et les limites de charge.
Type de chargement
Les types de charge sont des clés de chaîne qui identifient le type de demandes de charge pour un envoi et les limites de charge pour un véhicule. Les types de chargement présentent les caractéristiques importantes suivantes:
- Définie par l'utilisateur:types de charge que vous définissez. Il n'existe pas de variables système prédéfinies pour les types de charge.
- Partagé:les types de chargements sont destinés à être partagés entre les expéditions et les véhicules. Cela signifie qu'une expédition ne consommera la capacité d'un véhicule que jusqu'à sa limite uniquement lorsque les types de chargement correspondent. Si un véhicule ne spécifie aucune limite de charge pour un type particulier, il peut transporter une quantité illimitée de ce type de charge.
Les clés de chaîne qui représentent les types de charge utilisent la syntaxe de type de mappage Protocol Buffers. Pour éviter tout problème, ces clés de chaîne ne doivent pas être nulles. Lorsque vous nommez un type de charge, nous vous recommandons d'utiliser des identifiants décrivant le type de charge et son unité. Par exemple: weightKg, volume_gallons, palletcount ou frequencyDaily.
Load
et LoadLimit
Les objets Load
et LoadLimit
contiennent des propriétés spécifiques pour définir les exigences de capacité pour les envois et les véhicules. Le tableau suivant décrit ces propriétés:
Objet | Parent | Propriété | Type de propriété | Description de la propriété |
---|---|---|---|---|
Load |
loadDemands |
amount |
string (format int64) | Définit la capacité requise pour l'envoi du type spécifié. |
LoadLimit |
loadLimits |
maxLoad |
string (format int64) | Définit la capacité de charge maximale du véhicule du type spécifié. |
Exemples
L'exemple suivant montre la structure d'une demande de charge dans laquelle vous pouvez définir le type loadDemands
en tant que chaîne et la propriété amount
en tant que chaîne au format int64:
"loadDemands": {
"MATCHING_LOAD_TYPE ": {
"amount": "YOUR_LOAD_AMOUNT "
}
}
L'exemple suivant montre la structure la plus basique d'une limite de charge, où vous pouvez définir le type loadLimits
en tant que chaîne et la propriété maxLoad
en tant que chaîne au format int64:
"loadLimits": {
"MATCHING_LOAD_TYPE ": {
"maxLoad": "YOUR_MAX_LOAD "
}
}
Essayer
Utilisez les exemples de code ci-dessus pour créer un scénario fictif. Dans ce scénario, vous avez un colis pesant 10 kg et un véhicule pouvant transporter 100 kg:
Dans l'exemple
loadDemands
, définissez le type de charge surweightKg
.Une fois cette opération effectuée, le type de charge de l'exemple
loadLimits
sera également renseigné, partageant ainsi le type de charge. N'oubliez pas que les types deloadDemands
etloadLimits
doivent correspondre pour que l'envoi consomme les limites du véhicule.Dans le même exemple
loadDemands
, définissez la propriétéamount
sur10
.Cela signifie que le colis pèse 10 kg.
Dans l'exemple
loadLimits
, définissez la propriétémaxLoad
sur100
.Cela signifie que le véhicule peut transporter un maximum de 100 kg.
N'oubliez pas qu'il n'existe pas d'ensemble de types prédéfinis. Dans cet exemple, vous pouvez remplacer les kilogrammes par des points ou les mesures linéaires par le poids. Cette flexibilité vous permet d'adapter les demandes de charge et les limites à vos besoins spécifiques.
Exemple de requête
L'exemple suivant montre la structure d'une requête optimizeTours
de base avec loadDemands
dans un envoi et loadLimits
dans un véhicule:
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 00.000000, "longitude": 00.000000 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 00.000000, "longitude": 00.000000 } } ], "loadDemands": { "MATCHING_LOAD_TYPE ": { "amount": "YOUR_LOAD_AMOUNT " } } } ], "vehicles": [ { "startLocation": { "latitude": 00.000000, "longitude": 00.000000 }, "endLocation": { "latitude": 00.000000, "longitude": 00.000000 }, "costPerKilometer": 1.0, "loadLimits": { "MATCHING_LOAD_TYPE ": { "maxLoad": "YOUR_MAX_LOAD " } } } ] } }
N'oubliez pas qu'une livraison peut avoir plusieurs demandes de chargement et qu'un véhicule peut avoir plusieurs limites de chargement. Vous pouvez ainsi fournir des contraintes complexes à prendre en compte lors de l'optimisation des itinéraires de votre flotte.