Richieste e limiti di carico

La proprietà loadDemands è definita in ShipmentModel.shipments.Shipment e la proprietà loadLimits in ShipmentModel.vehicles.Vehicle.

Le richieste e i limiti di carico sono un tipo di vincolo che puoi utilizzare per gestire la capienza. Specificano la capacità richiesta di un carico e la capacità massima di un veicolo, il che ti consente di ottimizzare le assegnazioni dei percorsi in base a questi vincoli.

Le richieste e i limiti di carico possono supportare obiettivi quali:

  • Evitare il sovraccarico dei veicoli.
  • Monitora la variazione dei carichi dei veicoli man mano che le spedizioni vengono ritirate e consegnate.
  • Limita il numero di volte in cui un veicolo può visitare una determinata località.

Le richieste e i limiti di carico sono specificati in queste proprietà:

  • loadDemands specifica la quantità di capacità necessaria per una determinata spedizione.
  • loadLimits specifica la capacità massima per un determinato veicolo.

Struttura

Come mostrato nel diagramma, le richieste e i limiti di carico sono strutturati come segue:

Proprietà

Questa sezione descrive le proprietà per le richieste e i limiti di carico, che sono:

  • Tipo di carico:una proprietà condivisa tra richieste e limiti di carico.
  • Load e LoadLimit: proprietà uniche presenti rispettivamente nelle richieste di carico e nei limiti di carico.

Tipo di carico

I tipi di carico sono chiavi di stringa che identificano il tipo di richieste di carico per una spedizione e i limiti di carico per un veicolo. I tipi di caricamento hanno le seguenti caratteristiche importanti:

  • Definito dall'utente:i tipi di caricamento sono quelli che definisci. Non sono predefinite variabili di sistema per i tipi di caricamento.
  • Condiviso: i tipi di carico sono destinati a essere condivisi tra spedizioni e veicoli. Ciò significa che una spedizione utilizzerà la capacità di un veicolo fino al limite solo quando i tipi di carico corrispondono. Se un veicolo non specifica alcun limite di carico per un determinato tipo, può trasportare una quantità illimitata di quel tipo di carico.

Le chiavi di stringa che rappresentano i tipi di caricamento utilizzano la sintassi del tipo di mappa Protocol Buffers. Per evitare problemi, queste chiavi di stringa non devono essere nulle. Quando assegni un nome a un tipo di carico, ti consigliamo di utilizzare identificatori che descrivono il tipo di carico e la relativa unità. Ad esempio: weightKg, volume_gallons, palletcount o frequencyDaily.

Load e LoadLimit

Gli oggetti Load e LoadLimit contengono proprietà specifiche per definire i requisiti di capacità per spedizioni e veicoli. La tabella seguente descrive queste proprietà:

Oggetto Genitore Proprietà Property type Descrizione della proprietà
Load loadDemands amount stringa (formato int64) Definisce il requisito di capacità della spedizione nel tipo specificato.
LoadLimit loadLimits maxLoad stringa (formato int64) Definisce la capacità di carico massima del veicolo nel tipo specificato.

Esempi

L'esempio seguente mostra la struttura di una richiesta di carico in cui puoi impostare il tipo loadDemands come stringa e la proprietà amount come stringa nel formato int64:

"loadDemands": {
  "MATCHING_LOAD_TYPE": {
    "amount": "YOUR_LOAD_AMOUNT"
  }
}

L'esempio seguente mostra la struttura di base di un limite di caricamento, in cui puoi impostare il tipo loadLimits come stringa e la proprietà maxLoad come stringa nel formato int64:

"loadLimits": {
  "MATCHING_LOAD_TYPE": {
    "maxLoad": "YOUR_MAX_LOAD"
  }
}

Prova

Utilizza gli esempi di codice riportati sopra per creare uno scenario immaginario. In questo scenario, hai una spedizione che pesa 10 chilogrammi e un veicolo che può trasportare 100 chilogrammi:

  1. Nell'esempio loadDemands, definisci il tipo di caricamento come weightKg.

    A questo punto, verrà compilato anche il tipo di caricamento nell'esempio loadLimits, condividendo il tipo di caricamento. Ricorda che i tipi di loadDemands e loadLimits devono corrispondere affinché la spedizione consumi i limiti del veicolo.

  2. Nello stesso esempio loadDemands, imposta la proprietà amount su 10.

    Ciò significa che il pacco pesa 10 chilogrammi.

  3. Nell'esempio loadLimits, imposta la proprietà maxLoad su 100.

    Ciò significa che il veicolo può trasportare un massimo di 100 chilogrammi.

Ricorda che non esiste un insieme di tipi predefiniti. In questo esempio, potresti cambiare i chilogrammi in punti o passare a misurazioni lineari anziché al peso. Questa flessibilità ti consente di personalizzare le richieste di carico e i limiti in base alle tue esigenze specifiche.

Esempio di richiesta

L'esempio seguente mostra la struttura di una richiesta optimizeTours di base con loadDemands in una spedizione e loadLimits in un veicolo:

{
  "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"
          }
        }
      }
    ]
  }
}

Ricorda che una spedizione può avere più richieste di carico e un veicolo può avere più limiti di carico, il che ti consente di fornire vincoli complessi da prendere in considerazione durante l'ottimizzazione dei percorsi del tuo parco veicoli.