目的

目標は、移動距離や移動時間の最短化、時間どおりの配送、ドライバー間の負荷のバランス調整など、一般的な最適化の目標を事前に定義するパラメータです。これにより、費用パラメータの複雑さや完全なカスタマイズを学ぶ前に、デベロッパーが Route Optimization API に簡単にオンボーディングできるようになります。(さまざまな目標を完全にカスタマイズする方法については、「cost model 」をご覧ください)

設定すると、ShipmentModel.objectives は費用モデル を完全に上書きするため、既存の費用とは互換性がありません。各 Objective は、車両、配送、移行属性の事前定義された費用にマッピングされます。

TRANSFORM_AND_RETURN_REQUEST 解決モードを指定すると、 リクエストは解決されず、検証のみが行われ、指定された目標に対応する費用が入力されます。変更されたリクエストは OptimizeToursResponse.processed_request として返されます。他のすべての解決モードでは、解決されたリクエストが返されます。

TRANSFORM_AND_RETURN_REQUEST 解決モードは OptimizeTours リクエストでのみ有効で、他の Route Optimization API リクエストでは使用できません。

例: ShipmentModel.objectives リクエストを作成する

リクエストを行う前に、次の手順を完了します。

  • OAuth の使用の説明に従って、アプリケーションのデフォルト認証情報が構成されていることを確認します。
  • PROJECT_NUMBER_OR_ID を Cloud プロジェクト番号または ID に設定します。

    次のコマンドは、OptimizeToursRequest を Route Optimization API に送信し、OptimizeToursResponse を返します。

    curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \
    -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",
          }
        ],
        "objectives": [
          {
            "type": "MIN_TRAVEL_TIME"
          }
        ],
      }
    }
    EOM

例: TRANSFORM_AND_RETURN_REQUEST リクエストを作成する

リクエストを行う前に、次の手順を完了します。

  • OAuth の使用の説明に従って、アプリケーションのデフォルト認証情報が構成されていることを確認します。
  • PROJECT_NUMBER_OR_ID を Cloud プロジェクト番号または ID に設定します。

    次のコマンドは、OptimizeToursRequest を Route Optimization API に送信し、OptimizeToursResponseProcessedRequest フィールドを返します。

    curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \
    -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",
          }
        ],
        "objectives": [
          {
            "type": "MIN_TRAVEL_TIME"
          }
        ]
      },
      "solvingMode": "TRANSFORM_AND_RETURN_REQUEST"
    }
    EOM
    前のコマンドを実行すると、次のようなレスポンスが生成されます。
    {
      "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"
      }
    }