求解车辆配送 (VRP) 的输出
求解车辆配送 (VRP) 地理处理工具生成以下表和要素类作为输出:停靠点、未分配停靠点、路径、方向。下面各小节描述了输出表和要素类及其对应字段属性。
路径要素类
路径线要素类表示车辆配送中的司机、车辆及车辆路径。此输出要素类的默认名称为 Routes,但是可以在求解之前通过更改输出路径名称参数(Python 的 output_routes_name)更改其名称。
ArcGIS 分配的坐标系与基础网络数据集用于 Routes 要素类的坐标系相同。这可以通过为输出坐标系地理处理环境指定一个数值来控制。
下面列出并描述了 Routes 要素类的字段名称。
字段名 | 描述 |
---|---|
ObjectID | 系统管理的 ID 字段。 |
名称 | 路径的名称。 |
形状 | 指示路径形状的几何字段。 使用填充路径线参数(Python 的populate_route_lines)可选择是否填充此字段。 执行求解车辆配送 (VRP) 期间,总是用数据创建和填充 Routes 要素类。不过,填充路径线参数(Python 的 populate_route_lines)允许您选择是否为线要素生成和保存 Shape 字段值。不填充 Shape 字段值能够更快进行求解运算并减小服务器与客户端之间的数据交换量;但是人们通常想在地图上显示路径,因此可能需要填充 Shape 字段。 |
ViolatedConstraints | 该字段包含约束冲突的汇总,并在求解操作之后进行设置。如果因某条路径而导致与约束发生冲突,则可将下列一个冲突或多个冲突的组合分配给该字段。 开始行动: 表示文本描述的编码值以加括号的形式显示在以下列表中。请注意,编码值是通过将最后一个值增加一倍来增加的几何序列的一部分。可以对要编码的冲突进行各种组合。例如,将“超出容量 (2)”和“硬性路径区 (128)”的组合编码为 130 (2 +128)。
|
OrderCount | 分配给路径的停靠点数。 |
TotalCost | 路径的总运行成本,它是下列字段值的总和:
|
RegularTimeCost | 除任何不需支付酬金的休息时间外的规定工作时间的成本。 |
OvertimeCost | 除任何不需支付酬金的休息时间外的加班时间的成本。 |
DistanceCost | 通过将 TotalDistance 和 CostPerUnitDistance 字段值相乘得出的距离成本部分。如果求解之前未指定距离属性,那么此字段值将设置为零。 |
TotalTime | 路径总持续时间。该持续时间包括行驶时间以及在停靠点、站点和中断的服务和等待时间。TotalTime 值是下列字段值的总和:
该字段值的单位由时间字段单位参数(Python 的 time_units)指定。 |
TotalOrderServiceTime | 在路径上的所有停靠点处所用的总服务时间。 该字段值的单位由时间字段单位参数(Python 的 time_units)指定。 |
TotalBreakServiceTime | 在路径上的所有休息点处所用的总服务时间。 该字段值的单位由时间字段单位参数(Python 的 time_units)指定。 |
TotalTravelTime | 路径的总行驶时间。 该字段值的单位由时间字段单位参数(Python 的 time_units)指定。 |
TotalDistance | 路径的总行驶距离。 该字段值的单位由“距离字段单位”参数(Python 的 distance_units)指定。 如果求解之前未指定距离属性,那么此字段值将设置为零。 |
StartTime | 路径的开始时间。路径可能会在起始站点的时间窗打开之前开始,在这种情况下,起始站点处存在一个等待时间。 使用跨越多个时区的流量数据时,该时刻的时区将采用起始站点所处网络元素所在的时区。 |
EndTime | 路径的结束时间。路径在终止站点处完成服务后结束。 使用跨越多个时区的流量数据时,该时刻的时区将采用终止站点所处网络元素所在的时区。 |
TotalWaitTime | 在路径上的所有停靠点、站点和中断处的总等待时间。 该字段值的单位由时间字段单位参数(Python 的 time_units)指定。 |
TotalViolationTime | 在路径上的所有停靠点和中断处的总冲突时间。 该字段值的单位由时间字段单位参数(Python 的 time_units)指定。 |
RenewalCount | 对于具有货物补给点的路径,该字段相当于车辆为了进行货物补给(即车辆装卸)而在站点停靠的次数。 |
TotalRenewalServiceTime | 对于具有货物补给点的路径,该字段表示在路径上所有货物补给点所用的总服务时间。 该字段值的单位由时间字段单位参数(Python 的 time_units)指定。 |
Directions 要素类
Directions 是一个表示转弯说明的线要素类,帮助司机按照指定的路径驾驶车辆。此输出要素类的默认名称为 Directions,但是可以在求解之前通过更改“输出方向名称”参数(Python 的 output_directions_name)更改其名称。而且,求解车辆配送 (VRP) 工具总是创建 Directions 要素类;不过,您可以使用“填充方向”参数(Python 的 populate_directions)选择是否在求解期间使用要素填充要素类。默认情况下不填充。如果您不需要方向指引,则可以大幅减少求解时间及服务器与客户端之间传输的数据量。
ArcGIS 分配的坐标系与基础网络数据集用于 Directions 要素类的坐标系相同。这可以通过为输出坐标系地理处理环境指定一个数值来控制。
下面列出并描述了 Directions 要素类的字段名称。
字段名 | 描述 |
---|---|
ObjectID | 系统管理的 ID 字段。 |
形状 | 指示线形状的几何字段。 |
RouteName | 驾驶操作所应用到的路径的名称。 |
ArriveTime | 每天启动给定驾驶操作的时间。如果路径跨越多天,将显示日期和时间。 |
类型 | 此字段适用想要自定义行使方向文本的高级用户。大多数用户可通过忽略此字段并参考“文本”字段来满足其要求。 “类型”是指下列两个枚举其中一个中的常量:esriDirectionsManueverType 或 esriDirectionsStringType。(参见 SubItemType 字段描述,了解“类型”值指代的枚举。)您可以通过搜索选择的 SDK 查找枚举名称来查看常量值列表。 |
SubItemType | 此字段适用想要自定义行使方向文本的高级用户。大多数用户可通过忽略此字段并参考“文本”字段来满足其要求。 SubItemType 与“类型”配合,可创建“Text”字段中显示的行驶方向。SubItemType 字段指定“类型”字段是指 esriDirectionsManueverType 枚举中的常量值或 esriDirectionsStringType 枚举中的常量值。
|
文本 | 行驶方向的文本描述。 |
ElapsedTime | 当前行驶方向开始到下一行驶方向开始之时,或到上一行驶方向的路径结束之时所经历的时间。 某些行使方向还额外记录了服务时间、冲突时间,等等。在这种情况下,每条记录的经历时间是重复的。如果想要对总经历时间求和,请选择“类型”值为 1 的记录,然后对这些记录求和。 该字段值的单位由时间字段单位参数(Python 的 time_units)指定。 |
DriveDistance | 当前行驶方向开始到下一行使方向开始,或到上一行驶方向的路径结束之时所行使的距离。 如果行驶方向与下一次行驶方向开始的位置相同,则此值为零。 |
停靠点表
停靠点表提供了有关在站点、停靠点及休息点停靠的信息。这些信息包括哪些路径包含停靠,到达和离开时间以及停靠顺序。
此输出表的默认名称为 Stops,但是可以在求解之前通过更改“输出停靠点名称”参数(Python 的 output_stops_name)更改其名称。
下面列出并描述了“停靠点”表中的字段名。
字段名 | 描述 |
---|---|
ObjectID | 系统管理的 ID 字段。 |
名称 | 停靠点的名称。这是输入要素集和记录集中站点、停靠点或休息点的名称的外键。输入要素或记录集由 StopType 字段指定。 |
PickupQuantities | 从停靠点接收的货物量或人员数量。如果停靠点接收多个维度,请用空格分隔每个数量。 此字段的单位不作保存。应当根据输入输入路径的“数量”字段及输入停靠点的 PickupQuantities 和 DeliveryQuantities 字段的方式来解释这些单位。(所有这些字段都应当使用相同的维度单位和数量进行输入。) |
DeliveryQuantities | 停靠点接收的货物量或人员数量。如果停靠点接收多个维度,请用空格分隔每个数量。 此字段的单位不作保存。应当根据输入输入路径的“数量”字段及输入停靠点的 PickupQuantities 和 DeliveryQuantities 字段的方式来解释这些单位。(所有这些字段都应当使用相同的维度单位和数量进行输入。) |
StopType | 指示停靠点表示站点、停靠点或休息点。 此字段保存编码值,可用以下方式解释:
|
RouteName | 包含停靠的路径的名称。 |
Sequence | 指定路径访问停靠点的相对顺序。 按 RouteName 和“顺序”字段排序可创建每个路径的有序停靠点列表。 |
FromPreviousTravelTime | 从路径的上一个停靠点到当前停靠点所经历的行程时间。 该字段值的单位由时间字段单位参数(Python 的 time_units)指定。 |
FromPreviousDistance | 沿着路径从上一个停靠点到当前停靠点的距离。 该字段值的单位由“距离字段单位”参数(Python 的 distance_units)指定。 |
ArriveCurbApproach | 指示车辆到达停靠点时路边通道位于车辆哪一侧。 |
DepartCurbApproach | 指示车辆离开停靠点时路边通道位于车辆哪一侧。 |
ArriveTime | 路径每天到达停靠点的时间。 使用时区配置网络数据集时,时间值对应于停靠点所在的时区;否则,其将与求解分析的电脑上配置的时区对应。 |
DepartTime | 路径每天离开停靠点的时间。 使用时区配置网络数据集时,时间值对应于停靠点所在的时区;否则,其将与求解分析的电脑上配置的时区对应。 |
ArriveTimeUTC | 路径每天到达停靠点的时间。时间值以协调世界时间 (UTC) 形式给出。 如果未在网络数据集中配置时区,此字段为空。 |
DepartTimeUTC | 路径每天离开停靠点的时间。时间值以协调世界时间 (UTC) 形式给出。 如果未在网络数据集中配置时区,此字段为空。 |
WaitTime | 在停靠点的等待时间或短暂停留时间。例如,如果路径必须在停靠点等待时间窗打开,将会产生一个等待时间。 |
ViolationTime | 从停靠点的时间窗结束到路径车辆到达所经历的时间间隔。 |
显示停靠点
很明显,“停靠点”表不是要素类,这就是说无法通过在地图中添加此表来查看停靠点的位置。相反,需要采取额外的步骤才能在地图上显示停靠点。(下面提供了相关操作指导。)如果需要在地图上显示路径的停靠点,这种设计似乎并不必要而且困难;但是,请记住此工具的用途是创建 VRP web 服务。同样地,输出的设计也尽可能精细,从而最大程度减少服务器处理和数据传输。尽管如此,输出不会太精细;输出仍然提供了将停靠点显示为点要素所需的基本信息。
例如,要查看停靠点发生停靠的位置,将“停靠点”表与原始“停靠点”要素集(用作输入)链接。您可以通过“停靠点”表的 StopType 和“名称”字段及“停靠点”要素集的“名称”字段来选择和合并这些数据集。您可以使用类似方法查看在站点发生停靠的位置。
求解车辆配送 (VRP) 创建多个输入要素集,包括停靠点要素集和站点要素集。随着工具的求解,这些内存中的要素集将从 ArcMap 移除。不过,您也可以将它们添加回来。为此,请按以下步骤操作:
- 从地理处理菜单中打开结果 窗口。
- 在结果 窗口中,导航到您希望的要素集操作的结果。
- 展开合适的求解车辆配送 (VRP) 结果。
- 展开输入。
- 右键单击您想要查看的要素集,然后选择添加至显示。要素集将显示在地图及内容列表中。
- 或者,单击内容列表 窗口上的按源列出,查看数据存储的位置。
与停靠点和站点不同,休息点并不与输入要素集关联。所以,您需要使用不同方法来显示它们。可以在分析中生成方向,选择表示要素的线,然后使用要素折点转点工具将其转换成点。
UnassignedStops 表
UnassignedStops 表列出了任何路径都无法访问的停靠点。此表还说明了停靠点无法访问的原因,以便进行必要的更改来修复这一问题。
此输出表的默认名称为 Stops,但是可以在求解之前通过更改输出未分配的停靠点名称参数 (output_unassigned_stops_name) 更改其名称。
下面列出并描述了“停靠点”表中的字段名。
字段名 | 描述 |
---|---|
ObjectID | 系统管理的 ID 字段。 |
StopType | 指示停靠点表示站点、停靠点或休息点。此字段保存编码值,可用以下方式解释:
|
名称 | 停靠点的名称。 这是输入要素集和记录集中站点、停靠点或休息点的名称的外键。输入要素或记录集由 StopType 字段指定。 |
ViolatedConstraints | 该字段包含约束冲突的汇总,并在求解操作之后进行设置。如果某个约束存在冲突,则可将下列一个或多个冲突的组合分配给该字段。 开始行动: 表示文本描述的编码值以加括号的形式显示在以下列表中。请注意,编码值是通过将最后一个值增加一倍来增加的几何序列的一部分。可以对要编码的冲突进行各种组合。例如,将“超出容量 (2)”和“硬性路径区 (128)”的组合编码为 130 (2 +128)。
|
状态 | 该字段受到下面列出值的属性域的约束(括号中是它们的编码值)。
|