目標

目標屬性包括 `ShipmentModel` 中的 `objectives`,以及 `objectives` 中的 `type` 和 `weight`

目標是您可以使用的參數,用來指定高層級最佳化目標,而不是提供費用模式中的特定費用參數。

您可以在單一要求中使用多個目標,並為每個目標指定相對權重,藉此控制目標對整體最佳化的影響程度。目標會影響整個要求,進而影響所有車輛和貨運。最後,您也可以使用目標來開始開發自己的成本模型,詳情請參閱「產生成本模型」。

您可以透過目標控制對路線計畫的下列影響:

  • 路線的總行程時間或距離。
  • 所有車輛的總工作時間。
  • 使用的車輛總數。

屬性

objectives 屬性是 ShipmentModel 內的 Objective 訊息類型陣列。每個 Objective 都會定義特定最佳化目標,並包含下表列出的欄位:

欄位 類型 說明
type 列舉 指定預先定義的最佳化目標。可接受的值如下:
  • DEFAULT:使用預設費用組合來確保基本解決方案,也就是防止解決方案使用極端值來達成目標。如果要求包含目標,系統會自動加入 DEFAULT,並以 1.0 的 weight加入。如果您在要求中主動加入這項目標,解決方案就會使用您指定的 weight。
  • MIN_DISTANCE:盡量縮短總移動距離。
  • MIN_WORKING_TIME:盡量縮短所有車輛的總工作時間。
  • MIN_TRAVEL_TIME:盡量縮短所有車輛的總行程時間。
  • MIN_NUM_VEHICLES:盡量減少使用的車輛數量。
weight 雙人床 定義這個目標的相對重要性。使用多個目標時,weight 值會控制這個特定目標對整體路線最佳化的影響程度 (相較於其他目標)。可以是任何非負數,不一定要加總為 1。預設值為 1.0。

範例

本節將說明兩種範例:

程式碼範例

以下範例顯示 objectives 的結構:

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

要求範例

以下範例顯示包含多個目標的基本 optimizeTours 要求結構,其中 MIN_TRAVEL_TIME 的重要性是 MIN_WORKING_TIME 的 3 倍。

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

產生費用模型

目標是設定最佳化目標的快速方式,但在某些情況下,目標可能不夠具體。如要達成精確的路由目標,您可能需要透過費用模型參數進行精細控制。

您可以先在要求中加入目標,然後使用 TRANSFORM_AND_RETURN_REQUEST 解決模式,將要求中的目標轉換為成本模型參數,開始開發自己的成本模型。

使用這個解決模式傳送要求時,會發生下列情況:

  • API 會將目標轉換為費用模型參數,並在 processedRequest 中傳回這些參數。然後視需要調整成本模型參數,微調路線規劃。
  • 使用多個目標時,API 會合併所有目標的費用,並依據各自的權重調整費用。
  • 由於 API 不會提供最佳化路線,只會將目標轉換為費用模式參數,因此這項要求不會產生費用。

要求範例

以下範例顯示使用 MIN_TRAVEL_TIME 目標和 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"
}

回應範例

以下是與上一個要求相應的回應。這項回應包含產生的成本模型參數和原始目標,以供參考。

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