Les demandes et les limites de charge sont un type de contrainte que vous pouvez utiliser pour gérer la capacité. Cette contrainte spécifie la capacité requise d'un envoi 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 les limites de charge peuvent vous aider à atteindre des objectifs tels que :
- Évitez de surcharger les véhicules.
- Surveillez l'évolution des charges des véhicules à mesure que les envois sont récupérés et livrés.
- Priorisez l'association de véhicules lourds à des expéditions de charges lourdes.
Les demandes et les limites de charge sont spécifiées dans les propriétés suivantes :
loadDemandsspécifie la capacité requise par un envoi particulier.loadLimitsspécifie la capacité maximale d'un véhicule donné.
Structure
Comme le montre le diagramme, les demandes et les limites de charge sont structurées comme suit :
loadDemandsest une propriété deShipment. UnShipmentpeut avoir plusieurs demandes de charge.loadLimitsest une propriété deVehicle. UnVehiclepeut avoir plusieurs limites de charge.
Checklist Essentials
La checklist suivante décrit les connaissances essentielles qui permettent d'éviter les erreurs potentielles liées au chargement. Cette liste peut vous aider à valider votre requête et à résoudre les problèmes liés à votre réponse.
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.
LoadetLoadLimit: propriétés uniques présentes respectivement dans les demandes de charge et les limites de charge.
Type de chargement
Un type de chargement est une clé de chaîne que vous appliquez de la même manière aux envois et aux véhicules. Un seul type de charge s'applique à la demande de charge d'un envoi ainsi qu'à la limite de charge d'un véhicule.
Les types de charge utilisent la syntaxe de type de mappage des tampons de protocole. Lorsque vous nommez un type de charge, utilisez 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é des chargements et des 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 dans le type spécifié. |
LoadLimit |
loadLimits |
maxLoad |
string (format int64) | Définit la capacité de charge maximale du véhicule dans le type spécifié. |
Exemples
Cette section présente trois types d'exemples :
- Exemples de code illustrant la structure des propriétés de demandes et de limites de charge.
- Exemple de scénario illustrant une façon d'utiliser les demandes et les limites de charge dans une requête API.
- Un exemple de requête qui inclut les valeurs définies dans l'exemple de scénario.
Exemples de code
L'exemple suivant montre la structure d'une demande de charge où vous pouvez définir le type loadDemands sous forme de chaîne et la propriété amount sous forme de chaîne au format int64 :
{ "model": { "shipments": [ ... { "loadDemands": { "MATCHING_LOAD_TYPE": { "amount": "YOUR_LOAD_AMOUNT" } } } ], "vehicles": [ ... ] } }
L'exemple suivant montre la structure la plus simple d'une limite de charge, où vous pouvez définir le type loadLimits sous forme de chaîne et la propriété maxLoad sous forme de chaîne au format int64 :
{ "model": { "shipments": [ ... ], "vehicles": [ ... { "loadLimits": { "MATCHING_LOAD_TYPE": { "maxLoad": "YOUR_MAX_LOAD" } } } ] } }
Exemple de scénario
Cette section décrit un scénario dans lequel vous possédez une entreprise de garde de chiens et vous optimisez un itinéraire pour transporter quelques chiens dans un véhicule avec un nombre limité de cages.
Chaque envoi représente un arrêt où vous récupérez un certain nombre de chiens. Dans cet exemple, chaque envoi a un lieu de prise en charge différent, qui est le domicile des chiens dont vous vous occupez, et tous les envois ont le même lieu de livraison, le bâtiment de votre garderie pour chiens.
Dans cet exemple, les valeurs de propriété de votre requête sont les suivantes :
| Parent | Propriété | Type | Valeur | Scénario |
|---|---|---|---|---|
loadDemands |
type de chargement | chaîne | dogUnit |
Définit le type de chargement de l'envoi. Cet exemple utilise dogUnit, où chaque dogUnit représente un chien. |
loadDemands |
amount |
nombre | 1er envoi : 12e envoi : 3 |
Spécifie la quantité du type de charge défini. Dans cet exemple, vous définissez deux envois : dans le premier, vous récupérez un chien, et dans le second, vous en récupérez trois. |
loadLimits |
type de chargement | chaîne | dogUnit |
Définit le type de limite de charge appliquée au véhicule. Cette valeur doit correspondre au type de chargement de l'envoi pour que la limite soit pertinente. |
loadLimits |
maxLoad |
nombre | 6 |
Spécifie la quantité maximale du type de chargement que le véhicule peut transporter. Dans cet exemple, vous n'avez qu'un seul véhicule d'une capacité maximale de 6 dogUnit, où chaque dogUnit représente une cage pour chien. |
Le diagramme suivant illustre les limites de charge du véhicule, les demandes de charge de chaque envoi et la manière dont chaque envoi consomme les limites de charge du véhicule :

Dans cet exemple, les exigences de charge de chaque livraison et les limites de charge du véhicule ont les effets suivants :
L'optimiseur n'aura aucun problème à générer un itinéraire pour que le véhicule transporte les chiens, car il peut transporter jusqu'à six chiens et vous n'en récupérez que quatre.
La limite de charge de 6
dogUnitsur le véhicule signifie également que vous ne pouvez transporter que deux chiens de plus dans ce véhicule spécifique.Si le nombre de chiens était supérieur à la limite de charge, l'optimiseur ignorerait l'une des prises en charge ou l'attribuerait à un véhicule adapté.
N'oubliez pas qu'il n'existe pas d'ensemble de types prédéfinis. Dans cet exemple, vous pouvez remplacer le type de charge "unités de chien" par "unités de poids" pour limiter le poids des chiens, ou par "mesures linéaires" pour limiter leur largeur ou leur hauteur. Cette flexibilité vous permet d'adapter les demandes et les limites de charge à vos besoins spécifiques.
Exemple de requête
L'exemple suivant montre la structure d'une requête optimizeTours de base intégrant les valeurs de l'exemple de scénario :
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ], "label": "One bernese mountain dog", "loadDemands": { "dogUnit": { "amount": "1" } } }, { "pickups": [ { "arrivalLocation": { "latitude": 37.7359, "longitude": -122.5011 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ], "label": "Three chihuahuas", "loadDemands": { "dogUnit": { "amount": "3" } } } ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "loadLimits": { "dogUnit": { "maxLoad": "6" } }, "costPerKilometer": 1.0 } ] } }
N'oubliez pas que, contrairement à cet exemple, un envoi peut avoir plusieurs demandes de chargement et un véhicule peut avoir plusieurs limites de chargement, ce qui vous permet de fournir des contraintes complexes à prendre en compte lors de l'optimisation des itinéraires de votre flotte.
Limites de charge souples
Vous pouvez définir des limites de charge en tant que contraintes souples en ajoutant softMaxLoad et costPerUnitAboveSoftMax sur le loadLimits d'un véhicule. Cela permet à l'optimiseur de dépasser la charge maximale du véhicule moyennant un coût, en donnant la priorité à l'achèvement de l'itinéraire plutôt qu'au respect strict de la limite de charge.
Vous pouvez utiliser maxLoad et softMaxLoad ensemble pour définir une limite de charge stricte et une limite de charge flexible. Dans ce cas, softMaxLoad définit la charge qui peut être dépassée, et maxLoad définit une limite stricte qui ne peut pas être dépassée. Lorsque les deux sont utilisés, maxLoad doit être supérieur à softMaxLoad.
Propriétés
Le tableau suivant décrit les propriétés de contrainte souple pour les demandes et les limites de charge.
| Parent | Nom de propriété | Type de propriété | Description de la propriété |
|---|---|---|---|
loadLimits |
softMaxLoad |
string (format int64) | Charge maximale préférée pour un véhicule. Si la charge du véhicule dépasse cette valeur, des frais sont facturés. |
loadLimits |
costPerUnitAboveSoftMax |
nombre | Coût par unité de charge au-dessus de softMaxLoad. Ce champ est obligatoire lorsque vous utilisez softMaxLoad. Pour en savoir plus sur les coûts, consultez le concept clé Modèle de coût. |
Exemple de code
L'exemple suivant montre la structure des propriétés de contrainte souple de loadLimits :
{ "loadLimits": { "LOAD_TYPE": { "softMaxLoad": "LOAD_AMOUNT", "costPerUnitAboveSoftMax": COST_PER_UNIT } } }