解决巡回优化问题后的响应,其中包含每辆车行驶的路线、已跳过的运输以及解决方案的总费用。
JSON 表示法 |
---|
{ "routes": [ { object ( |
字段 | |
---|---|
routes[] |
为每辆车辆计算的路线;第 i 条路线对应于模型中的第 i 辆车辆。 |
request |
|
skipped |
所有已跳过的配送的列表。 |
validation |
我们能够独立检测到的所有验证错误的列表。请参阅 |
metrics |
此解决方案的时长、距离和使用情况指标。 |
OptimizeToursValidationError
描述验证 OptimizeToursRequest
时遇到的错误或警告。
JSON 表示法 |
---|
{
"code": integer,
"displayName": string,
"fields": [
{
object ( |
字段 | |
---|---|
code |
验证错误由始终存在的对 ( 此部分后面的字段提供了有关错误的更多背景信息。 MULTIPLE ERRORS:如果存在多个错误,验证流程会尝试输出其中的多个错误。与编译器类似,这并不是一个完美的流程。某些验证错误会是“严重”错误,这意味着它们会停止整个验证流程。 稳定性: |
display |
错误的显示名称。 |
fields[] |
错误上下文可能涉及 0、1(大多数情况下)或多个字段。例如,如需引用车辆 4 和运输 2 的首次上门取件,可以按如下方式操作:
不过,请注意,对于给定错误代码, |
error |
用于描述错误的直观易懂的字符串。 稳定性:不稳定:与给定 |
offending |
可能包含字段的值。此功能并不总是可用。您绝不应依赖它,只能将其用于手动模型调试。 |
FieldReference
为验证错误指定上下文。FieldReference
始终引用此文件中的给定字段,并遵循相同的层次结构。例如,我们可以使用以下代码指定车辆 #5 的 startTimeWindows
的元素 #2:
name: "vehicles" index: 5 subField { name: "endTimeWindows" index: 2 }
不过,我们会省略 OptimizeToursRequest
或 ShipmentModel
等顶级实体,以免消息过于拥挤。
JSON 表示法 |
---|
{ "name": string, "subField": { object ( |
字段 | |
---|---|
name |
字段的名称,例如“vehicles”。 |
sub |
递归嵌套的子字段(如有必要)。 |
联合字段
|
|
index |
如果重复,则为字段的索引。 |
key |
如果字段是映射,则为键。 |
指标
汇总所有路线的整体指标。
JSON 表示法 |
---|
{
"aggregatedRouteMetrics": {
object ( |
字段 | |
---|---|
aggregated |
按路线汇总。每个指标都是所有同名 |
skipped |
跳过的强制性发货数量。 |
used |
使用的车辆数量。注意:如果车辆路线为空且 |
earliest |
二手车的开始时间最早,计算方法为所有二手车的 时间戳采用 RFC3339 世界协调时间(UTC,即“祖鲁时”)格式,精确到纳秒,最多九个小数位。示例: |
latest |
二手车的最新结束时间,计算方式为所有二手车的 时间戳采用 RFC3339 世界协调时间(UTC,即“祖鲁时”)格式,精确到纳秒,最多九个小数位。示例: |
costs |
解决方案的费用,按与费用相关的请求字段细分。键是相对于输入 OptimizeToursRequest 的 proto 路径,例如“model.shipments.pickups.cost”,值是相应费用字段生成的总费用,涵盖整个解决方案。换句话说,costs["model.shipments.pickups.cost"] 是解决方案的所有上门取件费用的总和。此处会详细报告模型中定义的所有费用,但与 TransitionAttributes 相关的费用除外,自 2022 年 1 月起,这些费用仅以汇总方式报告。 |
total |
解决方案的总费用。费用映射中所有值的总和。 |