Scopi

Le proprietà degli obiettivi includono "objectives" in "ShipmentModel" e "type" e "weight" in "objectives".

Gli obiettivi sono parametri che puoi utilizzare per specificare obiettivi di ottimizzazione di alto livello anziché fornire parametri di costo specifici dal modello di costo.

Puoi utilizzare più obiettivi in una singola richiesta e assegnare a ciascun obiettivo un peso relativo per controllare la sua influenza sull'ottimizzazione complessiva. Gli obiettivi influiscono sull'intera richiesta, influenzando tutti i tuoi veicoli e le tue spedizioni. Infine, puoi utilizzare gli obiettivi anche per iniziare lo sviluppo del tuo modello di costi, come descritto in Generare un modello di costi.

Puoi utilizzare gli obiettivi per controllare i seguenti impatti sul tuo piano di itinerario:

  • Tempo di percorrenza o distanza totale dei tuoi itinerari.
  • Tempo di lavoro totale per tutti i veicoli.
  • Numero totale di veicoli utilizzati.

Proprietà

La proprietà objectives è un array di tipi di messaggio Objective all'interno di ShipmentModel. Ogni Objective definisce un obiettivo di ottimizzazione specifico e contiene i campi elencati nella tabella seguente:

Campo Tipo Descrizione
type Enum Specifica il target di ottimizzazione predefinito. I valori accettati sono i seguenti:
  • DEFAULT: utilizza un insieme predefinito di costi per garantire una soluzione di base, il che significa che impedisce alla soluzione di utilizzare valori estremi per raggiungere un obiettivo. DEFAULT viene aggiunto automaticamente alle richieste che contengono un obiettivo e viene aggiunto con un weight di 1.0. Se includi attivamente questo obiettivo nella richiesta, la soluzione utilizza il weight che specifichi.
  • MIN_DISTANCE: riduce al minimo la distanza totale percorsa.
  • MIN_WORKING_TIME: riduce al minimo il tempo di lavoro totale, sommato per tutti i veicoli.
  • MIN_TRAVEL_TIME: riduce al minimo il tempo di percorrenza totale, sommato per tutti i veicoli.
  • MIN_NUM_VEHICLES: riduce al minimo il numero di veicoli utilizzati.
weight Doppio Definisce l'importanza relativa di questo obiettivo. Quando utilizzi più obiettivi, il valore weight controlla l'influenza di questo obiettivo specifico sull'ottimizzazione complessiva del percorso rispetto agli altri. Può essere qualsiasi numero non negativo e non deve dare come somma 1. Il valore predefinito è 1.0.

Esempi

Questa sezione tratta due tipi di esempi:

  • Un esempio di codice che illustra la struttura dell'array objectives.
  • Un esempio di richiesta che include l'array objectives.

Esempi di codice

L'esempio seguente mostra la struttura di objectives:

"objectives": [
  {
    "type": "OBJECTIVE_TYPE",
    "weight": WEIGHT
  }
]

Esempio di richiesta

L'esempio seguente mostra la struttura di una richiesta optimizeTours di base che incorpora più obiettivi, in cui MIN_TRAVEL_TIME è tre volte più importante di MIN_WORKING_TIME.

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.42506261000996,
              "longitude": -122.09535511930135
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.42421503206021,
              "longitude": -122.09526063135228
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "travelMode": "DRIVING"
      }
    ],
    "objectives": [
      {
        "type": "MIN_TRAVEL_TIME",
        "weight": 3.0
      },
      {
        "type": "MIN_WORKING_TIME"
      }
    ]
  }
}

Generare un modello di costi

Gli obiettivi sono un modo rapido per impostare i target di ottimizzazione, ma in alcuni casi potrebbero non essere sufficientemente specifici. Per raggiungere i tuoi obiettivi di routing esatti, potresti aver bisogno del controllo granulare disponibile solo tramite i parametri del modello di costo.

Puoi iniziare a sviluppare il tuo modello di costi aggiungendo obiettivi alla richiesta, quindi convertendo gli obiettivi della richiesta in parametri del modello di costi utilizzando la modalità di risoluzione TRANSFORM_AND_RETURN_REQUEST.

Quando invii una richiesta utilizzando questa modalità di risoluzione, si verifica quanto segue:

  • L'API converte i tuoi obiettivi in parametri del modello di costo e li restituisce in un processedRequest. Puoi quindi modificare i parametri del modello di costo in base alle tue esigenze per perfezionare il piano del percorso.
  • Quando utilizzi più obiettivi, l'API combina i costi di tutti gli obiettivi e li ridimensiona in base ai rispettivi pesi.
  • Non ti viene addebitato alcun costo per questa richiesta, poiché l'API non ti fornisce un percorso ottimizzato, ma converte solo gli obiettivi in parametri del modello di costo.

Esempio di richiesta

L'esempio seguente mostra una richiesta che utilizza l'obiettivo MIN_TRAVEL_TIME e la modalità di risoluzione TRANSFORM_AND_RETURN_REQUEST:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.42506261000996,
              "longitude": -122.09535511930135
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.42421503206021,
              "longitude": -122.09526063135228
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "travelMode": "DRIVING"
      }
    ],
    "objectives": [
      {
        "type": "MIN_TRAVEL_TIME"
      }
    ]
  },
  "solvingMode": "TRANSFORM_AND_RETURN_REQUEST"
}

Esempio di risposta

Di seguito è riportata la risposta corrispondente alla richiesta precedente. Questa risposta include sia i parametri del modello di costo generato sia l'obiettivo originale come riferimento.

{
  "processedRequest": {
    "model": {
      "shipments": [
        {
          "pickups": [
            {
              "arrivalLocation": {
                "latitude": 37.425062610009959,
                "longitude": -122.09535511930135
              }
            }
          ],
          "deliveries": [
            {
              "arrivalLocation": {
                "latitude": 37.424215032060211,
                "longitude": -122.09526063135228
              }
            }
          ]
        }
      ],
      "vehicles": [
        {
          "travelMode": "DRIVING",
          "costPerHour": 30,
          "costPerTraveledHour": 330,
          "costPerKilometer": 0.2
        }
      ],
      "objectives": [
        {
          "type": "MIN_TRAVEL_TIME"
        }
      ]
    },
    "solvingMode": "TRANSFORM_AND_RETURN_REQUEST"
  }
}