Le richieste e i limiti di carico sono un tipo di vincolo che puoi utilizzare per gestire la capacità. Questo vincolo specifica la capacità richiesta di una spedizione e la capacità massima di un veicolo, consentendoti di ottimizzare le assegnazioni dei percorsi in base a questi vincoli.
Le richieste e i limiti di carico possono supportare obiettivi quali:
- Evita di sovraccaricare i veicoli.
- Monitora come cambiano i carichi dei veicoli man mano che le spedizioni vengono ritirate e consegnate.
- Dai la priorità all'abbinamento di veicoli pesanti con spedizioni di carichi pesanti.
Le richieste e i limiti di carico sono specificati in queste proprietà:
loadDemandsspecifica la quantità di capacità richiesta da una determinata spedizione.loadLimitsspecifica la capacità massima per un determinato veicolo.
Struttura
Come mostrato nel diagramma, le richieste e i limiti di carico sono strutturati come segue:
loadDemandsè una proprietà diShipment. UnShipmentpuò avere più richieste di carico.loadLimitsè una proprietà diVehicle. UnVehiclepuò avere più limiti di carico.
Elenco di controllo di Essentials
Il seguente elenco di controllo descrive le conoscenze essenziali per evitare potenziali errori relativi al carico. Questo elenco può aiutarti a convalidare la richiesta e risolvere i problemi relativi alla risposta.
Proprietà
Questa sezione descrive le proprietà per le richieste e i limiti di carico, che sono i seguenti:
- Tipo di carico: una proprietà condivisa tra le richieste di carico e i limiti.
LoadeLoadLimit: proprietà uniche presenti rispettivamente nelle richieste di carico e nei limiti di carico.
Tipo di carico
Un tipo di carico è una chiave di stringa che applichi in modo uguale a spedizioni e veicoli. Un singolo tipo di carico si applica alla domanda di carico di una spedizione e al limite di carico di un veicolo.
I tipi di carico utilizzano la sintassi del tipo di mappa dei buffer di protocollo. Quando assegni un nome a un tipo di carico, utilizza identificatori che descrivono il tipo di carico e la sua 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
Questa sezione illustra tre tipi di esempi:
- Esempi di codice che illustrano la struttura delle proprietà delle richieste e dei limiti di carico.
- Uno scenario di esempio che mostra un modo per utilizzare le richieste di carico e i limiti in una richiesta API.
- Un esempio di richiesta che include i valori impostati nello scenario di esempio.
Esempi di codice
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:
{ "model": { "shipments": [ ... { "loadDemands": { "MATCHING_LOAD_TYPE": { "amount": "YOUR_LOAD_AMOUNT" } } } ], "vehicles": [ ... ] } }
L'esempio seguente mostra la struttura più semplice di un limite di carico, in cui puoi impostare il tipo loadLimits come stringa e la proprietà maxLoad come stringa nel formato int64:
{ "model": { "shipments": [ ... ], "vehicles": [ ... { "loadLimits": { "MATCHING_LOAD_TYPE": { "maxLoad": "YOUR_MAX_LOAD" } } } ] } }
Scenario di esempio
Questa sezione descrive uno scenario in cui hai un'attività di asilo per cani e stai ottimizzando un percorso per trasportare alcuni cani in un veicolo con un numero limitato di gabbie.
Ogni spedizione rappresenta una fermata in cui ritiri un certo numero di cani. In questo esempio, ogni spedizione ha un luogo di partenza diverso, ovvero la casa dei cani di cui ti prendi cura, e tutte le spedizioni hanno lo stesso luogo di consegna, l'edificio del tuo asilo per cani.
Per questo esempio, i valori delle proprietà nella richiesta sono i seguenti:
| Genitore | Proprietà | Tipo | Valore | Scenario |
|---|---|---|---|---|
loadDemands |
tipo di carico | stringa | dogUnit |
Definisce il tipo di carico per la spedizione. Questo esempio utilizza dogUnit, dove ogni dogUnit rappresenta un cane. |
loadDemands |
amount |
numero | 1ª spedizione: 12ª spedizione: 3 |
Specifica la quantità del tipo di carico definito. In questo esempio, stai definendo due spedizioni: nella prima ritiri un cane, nella seconda tre cani. |
loadLimits |
tipo di carico | stringa | dogUnit |
Definisce il tipo di limite di carico applicato al veicolo. Questo valore deve corrispondere al tipo di carico della spedizione affinché il limite sia pertinente. |
loadLimits |
maxLoad |
numero | 6 |
Specifica la quantità massima del tipo di carico che il veicolo può trasportare. In questo esempio, hai un solo veicolo con una capacità massima di 6 dogUnit, dove ogni dogUnit rappresenta un trasportino per cani. |
Il seguente diagramma illustra i limiti di carico del veicolo, le richieste di carico di ogni spedizione e il modo in cui ogni spedizione consuma i limiti di carico del veicolo:

In questo esempio, i requisiti di carico di ogni spedizione e i limiti di carico del veicolo hanno i seguenti effetti:
L'ottimizzatore non avrà problemi a generare un percorso per il veicolo per il trasporto dei cani, poiché il veicolo può trasportare fino a 6 cani e tu ne stai ritirando solo 4.
Il limite di carico di 6
dogUnitsul veicolo significa anche che potresti trasportare solo altri due cani su questo veicolo specifico.Se il numero di cani fosse superiore al limite di carico, l'ottimizzatore salterebbe uno dei ritiri o lo assegnerebbe a un veicolo adatto.
Ricorda che non esiste un insieme di tipi predefiniti. In questo esempio, potresti modificare il tipo di carico da unità di cani a unità di peso per limitare il peso dei cani oppure impostarlo su misure lineari per limitarne la larghezza o l'altezza. Questa flessibilità ti consente di personalizzare le richieste e i limiti di carico in base alle tue esigenze specifiche.
Esempio di richiesta
L'esempio seguente mostra la struttura di una richiesta optimizeTours di base che incorpora i valori dello scenario di esempio:
{ "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 } ] } }
Ricorda che, a differenza del caso di questo esempio, 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 della tua flotta.
Limiti di carico flessibili
Puoi impostare i limiti di carico come vincoli flessibili aggiungendo softMaxLoad e costPerUnitAboveSoftMax al loadLimits di un veicolo. In questo modo, l'ottimizzatore può superare il carico massimo del veicolo a un costo, dando la priorità al completamento del percorso rispetto al rispetto rigoroso del limite di carico.
Puoi utilizzare maxLoad e softMaxLoad insieme per impostare un limite di carico rigido e uno flessibile. In questo caso, softMaxLoad imposta il carico che può essere superato, mentre maxLoad imposta un limite fisso che non può essere superato. Quando vengono utilizzati entrambi, maxLoad deve essere maggiore di softMaxLoad.
Proprietà
La tabella seguente descrive le proprietà dei vincoli flessibili per le richieste e i limiti di carico.
| Genitore | Nome proprietà | Property type | Descrizione della proprietà |
|---|---|---|---|
loadLimits |
softMaxLoad |
stringa (formato int64) | Il carico massimo preferito per un veicolo. Se il carico del veicolo supera questo valore, viene addebitato un costo. |
loadLimits |
costPerUnitAboveSoftMax |
numero | Il costo per unità di carico superiore a softMaxLoad. Questo campo è obbligatorio quando utilizzi softMaxLoad. Per saperne di più sui costi, consulta il concetto chiave Modello di costo. |
Esempio di codice
L'esempio seguente mostra la struttura delle proprietà dei vincoli flessibili di loadLimits:
{ "loadLimits": { "LOAD_TYPE": { "softMaxLoad": "LOAD_AMOUNT", "costPerUnitAboveSoftMax": COST_PER_UNIT } } }