單一非阻斷最佳化 API 方法

本指南將介紹 OptimizeToursLongRunningOptimizeToursUri API 方法的實驗性發布,使用者可透過這些方法提出單一非封鎖最佳化要求。在非封鎖最佳化中,使用者會從方法快速收到 Operation proto,可用於呼叫 GetOperation,藉此參照最佳化狀態。詳情請參閱「長時間執行的作業」。

相較於封鎖 OptimizeTours 方法,這些非封鎖方法可提供可靠性優勢,因為用戶端在執行最佳化作業時,不需要維持與伺服器的連線。此外,與 BatchOptimizeTours 相比,這些新方法更容易偵錯失敗情形,因為每項最佳化作業都與單一長時間執行的作業 (LRO) 相關聯。

如要內嵌最佳化要求,請使用 OptimizeToursLongRunning 方法;如要上傳要求並使用 Google Cloud Storage 讀取回應,請使用 OptimizeToursUri 方法。

OptimizeToursLongRunning

範例:發出 OptimizeToursLongRunning 要求

提出要求前,請將下列參數替換為適合您環境的值:

  • 請確認您已按照「使用 OAuth」一文所述,設定應用程式預設憑證
  • PROJECT_NUMBER_OR_ID 設為 Cloud 專案編號或 ID。

    下列指令會將 OptimizeToursLongRunning 要求傳送至 Route Optimization API,並接收與該要求相關聯的作業 ID。GetOperation 方法可用於查詢作業狀態。作業完成後,中繼資料也會包含最終的 OptimizeToursResponse

    curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeToursLongRunning' \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    --data @- <<EOM
    {
      "model": {
        "shipments": [
          {
            "pickups": [
              {
                "arrivalLocation": {
                  "latitude": 37.42506261000996,
                  "longitude": -122.09535511930135
                }
              }
            ],
            "deliveries": [
              {
                "arrivalLocation": {
                  "latitude": 37.42421503206021,
                  "longitude": -122.09526063135228
                }
              }
            ]
          }
        ],
        "vehicles": [
          {
            "travelMode": "DRIVING",
            "costPerKilometer": 1.0
          }
        ],
      }
    }
    EOM

OptimizeToursUri

BatchOptimizeTours 類似,您可以使用 OptimizeToursUri,繼續在 Google Cloud Storage 中儲存最佳化要求和回應。Cloud Storage URI 必須在 OptimizeToursUri 要求訊息中指定。傳回的 Operation 狀態只與單一提交的 OptimizeToursRequest 相關聯。

範例:發出 OptimizeToursUri 要求

提出要求前,請將下列參數替換為適合您環境的值:

  • 請確認您已按照「使用 OAuth」一文所述,設定應用程式預設憑證
  • PROJECT_NUMBER_OR_ID 設為 Cloud 專案編號或 ID。

    下列指令會將 OptimizeToursUri 要求傳送至 Route Optimization API,並接收與該要求相關聯的作業 ID。使用 GetOperation 方法查詢作業狀態。作業完成後,OptimizeToursResponse 會遠端儲存在要求中提供的輸出 URI 路徑。

    curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeToursUri' \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    --data @- <<EOM
    {
      "input": {
        "uri": "gs://bucket/path/input/object.json"
      },
      "output": {
        "uri": "gs://bucket/path/output/object.json"
      }
    }
    EOM