本指南將介紹 OptimizeToursLongRunning 和 OptimizeToursUri 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 中儲存最佳化要求和回應。OptimizeToursUri 要求訊息中必須指定 Cloud Storage URI。傳回的 Operation 狀態僅與提交的單一 OptimizeToursRequest 相關。
範例:提出 OptimizeToursUri 要求
提出要求前,請將下列參數替換為環境適用的值:
- 請確認您已按照「使用 OAuth」一節所述,設定應用程式預設憑證。
將 PROJECT_NUMBER_OR_ID 設為 Cloud 專案編號或 ID。
以下指令會將
OptimizeToursUri要求傳送至 Route Optimization API,並接收與之相關聯的作業 ID。使用GetOperation方法查詢作業狀態。作業完成後,系統會在要求中提供的輸出 URI 路徑上,以遠端方式儲存OptimizeToursResponse。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