目标是您可用于指定高级别优化目标的参数,而不是提供费用模型中的具体费用参数。
您可以在单个请求中使用多个目标,并为每个目标指定相对权重,以控制其对整体优化的影响程度。目标会影响您的整个请求,从而影响您的所有车辆和货件。最后,您还可以使用目标来开始开发自己的费用模型,如生成费用模型中所述。
您可以使用目标来控制对路线规划的以下影响:
- 路线的总行程时间或距离。
- 所有车辆的总工作时间。
- 使用的车辆总数。
属性
objectives 属性是 ShipmentModel 中的 Objective 消息类型数组。每个 Objective 都定义了一个特定的优化目标,并包含下表中列出的字段:
| 字段 | 类型 | 说明 |
|---|---|---|
type |
枚举 |
指定预定义的优化目标。接受的值如下:
|
weight |
双精度 |
定义相应目标的相对重要性。使用多个目标时,weight 值用于控制此特定目标对整体路线优化的影响程度,与其他目标相比,此值越高,影响程度越大。可以是任何非负数,无需总和为 1。默认值为 1.0。 |
示例
本部分包含两种类型的示例:
- 一个代码示例,用于说明
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" } }