目的

目標のプロパティには、`ShipmentModel` の `objectives`、`objectives` の `type` と `weight` が含まれます。

目標は、費用モデルから特定の費用パラメータを指定するのではなく、最適化の概要目標を指定するために使用できるパラメータです。

1 つのリクエストで複数の目標を使用し、各目標に相対的な重みを付けて、全体的な最適化にどの程度影響するかを制御できます。目標はリクエスト全体に影響し、すべての車両と配送に影響します。最後に、費用モデルを生成するで説明されているように、目標を使用して独自の費用モデルの開発を開始することもできます。

目標を使用して、ルートプランに対する次の影響を制御できます。

  • ルートの合計移動時間または距離。
  • すべての車両の合計稼働時間。
  • 使用された車両の総数。

プロパティ

objectives プロパティは、ShipmentModel 内の Objective メッセージ タイプの配列です。各 Objective は特定の最適化目標を定義し、次の表に示すフィールドを含みます。

フィールド タイプ 説明
type 列挙型 事前定義された最適化ターゲットを指定します。指定できる値は次のとおりです。
  • DEFAULT: デフォルトの費用セットを使用してベースライン ソリューションを確保します。つまり、極端な値を使用して目標を達成することを防ぎます。DEFAULT は、目標を含むリクエストに自動的に追加され、weight が 1.0 に設定されて追加されます。この目標をリクエストに明示的に含めると、ソリューションは指定した weight を使用します。
  • MIN_DISTANCE: 移動距離の合計を最小限に抑えます。
  • MIN_WORKING_TIME: すべての車両の合計作業時間を最小限に抑えます。
  • MIN_TRAVEL_TIME: すべての車両の合計移動時間を最小限に抑えます。
  • MIN_NUM_VEHICLES: 使用する車両の数を最小限に抑えます。
weight Double この目標の相対的な重要度を定義します。複数の目標を使用する場合、weight の値は、他の目標と比較して、この特定の目標がルートの全体的な最適化にどの程度影響するかを制御します。これは任意の非負の数値を指定でき、合計が 1 になる必要はありません。デフォルト値は 1.0 です。

例

このセクションでは、次の 2 種類の例について説明します。

  • objectives 配列の構造を示すコードサンプル。
  • objectives 配列を含むリクエストの例。

コードサンプル

次の例は、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"
  }
}