Demandes et limites de charge

La propriété loadDemands est définie sous ShipmentModel.shipments.Shipment, et la propriété loadLimits sous ShipmentModel.vehicles.Vehicle.

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:

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 et LoadLimit: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:

  1. Dans l'exemple loadDemands, définissez le type de charge sur weightKg.

    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 de loadDemands et loadLimits doivent correspondre pour que l'envoi consomme les limites du véhicule.

  2. Dans le même exemple loadDemands, définissez la propriété amount sur 10.

    Cela signifie que le colis pèse 10 kg.

  3. Dans l'exemple loadLimits, définissez la propriété maxLoad sur 100.

    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.