多路径配送 (VRP) 分析

各种组织都会使用一支车队来为各停靠点提供服务。例如,大型家具商场可能使用多辆货车将家具配送到各家各户。某专业化公司可能会从一个设施点发出几辆货车到各饭店接收用过的油脂。卫生部门可能会为每位卫生监督员制定日常监督访问计划。

多路径配送 (VRP) 分析

以上示例所面对的共同问题就是多路径配送 (VRP)。每个组织都需要确定各路径(货车或监督员)所应服务的停靠点(住所、饭店或监督地点)以及对停靠点的访问顺序。主要目标就是为停靠点提供服务并使车队的总体运营成本最低。因此,尽管 Network Analyst 路径求解程序可找出单一车辆访问多个停靠点的最佳路径,但是,VRP 求解程序却可找出一支车队为多个停靠点提供服务的最佳路径。此外,VRP 求解程序还可解决更多具体的问题,因为有许多功能可供选择,例如,将车辆容量与停靠点数量相匹配、为驾驶员指定休息点,以及为停靠点配对以使它们能够由同一路径提供服务。

求解多路径配送 (VRP) 与其他网络分析遵循相同的工作流。

了解有关网络分析工作流的详细信息

多路径配送 (VRP) 分析图层

多路径配送 (VRP) 分析图层可为给定的多路径配送 (VRP) 存储输入、参数和结果。

创建多路径配送 (VRP) 分析图层

可通过单击 Network Analyst 工具条中的 Network Analyst > 新建多路径配送(VRP) 来创建多路径配送 (VRP) 分析图层。

Network Analyst 工具条

创建多路径配送 (VRP) 分析图层后,它会与以下 13 个网络分析类一同显示在 Network Analyst 窗口中:停靠点、站点、路径、站点访问、休息点、路径区、路径种子点、路径更新、特点、停靠点对、点障碍、线障碍和面障碍。

Network Analyst 窗口

多路径配送 (VRP) 分析图层还会以复合图层的形式出现在内容列表 中,且名为“多路径配送 (VRP)”,如果地图文档中已经存在同名的多路径配送 (VRP),则命名为“多路径配送 (VRP) 1”、“多路径配送 (VRP) 2”,依此类推。其中包含九个要素图层 - 停靠点、站点访问、站点、路径种子点、路径、路径区、点障碍、线障碍和面障碍。其中的每个要素图层都有默认的符号系统,您可在图层属性 对话框上对这些默认的符号系统进行修改。

注注:

由于休息点、特点、停靠点对和路径更新都属于表,所以它们不显示在内容列表中。

内容列表

多路径配送 (VRP) 分析类

多路径配送 (VRP) 分析图层由 13 种网络分析类组成,这些类是存储在分析图层中的要素图层或表。它们包含求解多路径配送 (VRP) 时使用的网络分析对象。各种网络分析类之间的关系如以下文档中所示:

Relationships between network analysis classes in the vehicle routing problem

下面各部分概述了每个类及其属性。

了解有关网络分析类的详细信息

停靠点要素图层

该要素图层存储的停靠点是给定多路径配送 (VRP) 分析图层的一部分。停靠可以是为客户配送(例如,配送家具)、从客户处接收(例如,从饭店接收油脂),还可以是其他类型的工作(例如,监督访问)。

如果停靠点具有要接收或配送的项目,这些项目就可以包含一种或多种容量,这些容量可基于任意形式的所需测量值或测量值组合,例如,重量、体积或单位数量。某些停靠(如,监督访问)可能不具有关联的任何配送或接收。

停靠点可拥有服务时间,即在该停靠点完成工作所需的时间。例如,配送货车可能需要 20 分钟的服务时间才能卸载一件家具并将它搬运到屋内。各停靠点的服务时间既可以相同,也可以不同。

停靠点可拥有一个或两个时间窗,用来指示允许车辆访问停靠点的时间。例如,只允许批发食品的配送货车在上午 8:00 到 10:00 之间或者下午 2:00 到 4:00 之间到达饭店,因为在任何其他时间到达都会打乱饭店的经营。

特点可与停靠点相关联。也就是说,停靠点可能需要一位具有多种特定技能的技术人员(例如,电气工程师)或者一辆具有特定功能(动力升降装置)的货车。只有特点相同的路径才会分配给停靠点。

停靠点属性

停靠点的输入字段

输入字段

描述

ObjectID

系统管理的 ID 字段。

Shape

指示网络分析对象地理位置的几何字段。

名称

网络分析对象的名称。

名称必须唯一。

该字段起到主键的作用,并用作外键来引用“停靠点对”表中的停靠点。停靠点名称不区分大小写,即使停靠点不参与求解运算,停靠点名称也不能为空。

描述

有关停靠点的描述性信息。它可以包含有关停靠点的任何文本信息,并且不存在唯一性限制。您可能想在 Name 字段中存储客户的 ID 号,而在 Description 字段中存储客户的真实名称或地址。

ServiceTime

该属性指定了路径访问网络位置所花费的时间。即,该属性存储网络位置的阻抗值。如果该字段值为零或为空,则网络位置不需要任何服务时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

TimeWindowStart1

网络位置的第一时间窗开始时间。该字段可以包含空值;空值指示没有开始时间。

(有关详细信息,请参阅下面该属性列表的注释。)

TimeWindowEnd1

网络位置的第一时间窗结束时间。该字段可以包含空值;空值指示没有结束时间。

(有关详细信息,请参阅下面该属性列表的注释。)

TimeWindowStart2

网络位置的第二时间窗开始时间。该字段可以包含空值;空值指示没有第二时间窗。

如果第一时间窗为空,正如 TimeWindowStart1 和 TimeWindowEnd1 字段所指定的那样,第二时间窗也必须为空。

如果两个时间窗均不为空,则第二时间窗在时间上必须晚于第一时间窗,而且不能覆盖第一时间窗。

(有关详细信息,请参阅下面该属性列表的注释。)

TimeWindowEnd2

网络位置的第二时间窗结束时间。该字段可以包含空值。

如果 TimeWindowStart2 和 TimeWindowEnd2 均为空,则不存在第二时间窗。

如果 TimeWindowStart2 不为空,但是 TimeWindowEnd2 为空,则存在具有开始时间但没有结束时间的第二时间窗。这种情况是有效的。

(有关详细信息,请参阅下面该属性列表的注释。)

MaxViolationTime1

如果到达时间不在时间窗之内,则认为与时间窗发生冲突。该字段为停靠点的第一个时间窗指定允许的最长冲突时间。它可包含零值,但不能包含负值。零值表示停靠点的第一个时间窗不能接受时间窗冲突;即,第一个时间窗是硬性的。另一方面,空值表示对允许的冲突时间没有限制。非零值指定最长延迟时间;例如,路径可在第一个时间窗的结束后最多 30 分钟内到达停靠点。

该字段值的单位由分析图层的“时间字段单位”属性指定。

时间窗冲突可通过求解程序进行追踪和加权。因此,您可指示 VRP 求解程序采用以下三种方法之一:

  • 不考虑车队行程成本的增加,而将总冲突时间缩减到最短。
  • 找出一种可平衡总冲突时间和行程成本的解决方案。
  • 不考虑总冲突时间,而将车队的行程成本降至最低。

通过为分析图层的时间窗冲突设置指定重要性级别,实际上就是在这三种方法中选择一种方法。不过,无论在什么情况下,只要超过了 MaxViolationTime1,求解程序就会返回错误。

MaxViolationTime2

停靠点第二个时间窗允许的最长冲突时间。该字段与 MaxViolationTime1 字段相似。

DeliveryQuantities

要为停靠点配送的量(例如,重量、体积或数量)。

如果停靠点需要 2000 磅的货物,那么分析图层的图层属性 对话框中的容量计数参数应设置为 1,而 DeliveryQuantities 应设置为 2000

如果在分析图层的容量计数属性中指定了多个容量,则使用空格来分隔 DeliveryQuantities 值。

例如,在已知重量和体积的情况下,分析图层的图层属性 对话框中的容量计数应设为 2。如果停靠点需要 2000 磅的货物,而货物体积为 100 立方英尺,则 DeliveryQuantities 应设置为 2000 100

空字符串或空值相当于所有量值均为零。如果字符串中值的个数相对于容量计数来说不足,则其余的值将被视为零。配送量不能为负数。

PickupQuantities

要在停靠点接收的量(例如,重量、体积或数量)。这些量不能为负数。该字段与 DeliveryQuantities 字段相似。

注注:
在交互访问的情况下,停靠点可同时具有配送量和接收量。

Revenue

解决方案中包括停靠点时产生的收入。该字段可包含空值(空值表示收入为零),但是它不能具有负值。

Revenue 会包含在优化目标函数值的过程中,但并不属于解决方案的运行成本。也就是说,路径类中的 TotalCost 属性决不会在输出中包含 Revenue;不过,通过收入可对服务停靠点的相对重要性进行加权。

SpecialtyNames

一种以空格分隔的字符串,其中包含停靠点所需的特点名称。空值表示停靠点不需要特点。

该字段是“特点”表中 Name 字段的外键。特点对象必须事先存在,才会显示在 SpecialtyNames 下拉列表中。例如,草坪护理公司可能需要使用杀虫剂来为要求施药许可的停靠点提供服务。该公司可创建名为 License 的“特点”对象,然后将该属性设置为许可

AssignmentRule

该属性指定将停靠点分配给路径时所用的规则。它受到下面列出的值的属性域(括号中是它们的编码值)的约束。

  • 排除 (0) - 停靠点不参与随后的求解操作。
  • 保留路径和相对顺序 (1) - 在求解操作过程中,求解程序必须始终将停靠点分配给预分配的路径并且遵照预先分配的相对顺序。如果无法遵守该分配规则,就会导致停靠点冲突。
  • 保留路径 (2) - 在求解操作过程中,求解程序必须始终将停靠点分配给预分配的路径。即使不一定会保留顺序,但也必须设置有效的顺序。如果无法将停靠点分配给指定的路径,就会导致停靠点冲突。
  • 覆盖 (3) - 在求解操作过程中,求解程序会尝试为停靠点保留路径和顺序的预分配信息。不过,如果停靠点的新路径和/或新顺序有助于最小化目标函数的总体值,则可能会为停靠点分配新路径和/或新顺序。这是默认值。

该字段不能包含空值。

网络位置字段

  • SourceID
  • SourceOID
  • PosAlong
  • SideOfEdge

结合使用这四种属性可描述网络中对象所在的点。

了解有关网络位置字段的详细信息

CurbApproach

CurbApproach 属性指定了车辆到达和离开网络位置的方向。有四种选择(它们的编码值显示在括号中):

  • 车辆的任意一侧 (0) - 车辆可从任一方向到达和离开网络位置。允许 U 形转弯。如果车辆可在停靠点进行 U 形转弯或在驶入车道或停车场后能够调头,则应该选择该设置。
  • 车辆的右侧 (1) - 当车辆到达和离开网络位置时,路边必须在车辆右侧。禁止 U 形转弯。
  • 车辆的左侧 (2) - 当车辆到达和离开网络位置时,路边必须在车辆左侧。禁止 U 形转弯。
  • 禁止 U 形转弯 (3) - 当车辆到达网络位置时,路边在车辆任意一侧均可;但是,车辆在离开时不得调头。

了解有关 U 形转弯策略的详细信息

注注:
  • 时间窗仅说明车辆何时可以到达停靠点,而不说明服务时间必须何时结束。要将服务时间考虑在内并且在时间窗关闭前离开,可将 TimeWindowEnd1 字段的值减去 ServiceTime 的值。

  • 时间窗字段可以包含“仅时间”值或“日期和时间”值。如果像 TimeWindowStart1 这样的时间字段具有“仅时间”值(例如 8:00 AM),则假定日期由分析图层的“默认日期”属性指定。使用“日期和时间”值(例如 7/11/2010 8:00 AM)可以设置持续多天的时间窗。

  • 如果正在使用流量数据,则网络位置的时间字段始终会引用与网络位置所在的边相同的时区。

停靠点的输入/输出字段

输入/输出字段

描述

RouteName

分配给停靠点的路径的名称。

该输入字段用于将停靠点预先分配给特定的路径。它可包含空值,空值表示停靠点未预先分配给任何路径,而求解程序会为停靠点确定可能的最佳路径分配。如果将该字段设为空,则顺序字段也必须设为空。

RouteName 字段是“路径”类中 Name 字段的外键。路径对象必须事先存在,才会显示在 RouteName 下拉列表中。

执行求解操作后,如果为停靠点分配了路径,则 RouteName 字段将包含分配给停靠点的路径的名称。

Sequence

该字段指示停靠点在其分配到的路径上的顺序。

该输入字段用于指定停靠点在路径上的相对顺序。该字段可包含空值,空值表示停靠点可位于路径上的任意位置。RouteName 值为空时,该字段值才能为空。

输入 sequence 值应为正且对于各路径均唯一(在更新站点访问、停靠点和休息点之间共享),但是不需要从 1 开始,也不需要连续。

执行求解操作后,Sequence 字段中会包含停靠点在其分配到的路径上的 Sequence 值。路径的输出 sequence 值在站点访问、停靠点和休息点之间共享;从 1 开始(在起始站点处);并且是连续的。所以,安排了路径的停靠点可能的最小输出 Sequence 值为 2,因为路径始终从站点处开始。

状态

该字段受到下面列出的值的属性域(括号中是它们的编码值)的约束。

  • 正常 (0) - 网络位置有效。
  • 未定位 (1) - 无法确定网络中的位置。
  • 未定位网络元素 (2) - 找不到应作为网络位置的网络元素。如果删除了网络边并且未对网络位置重新进行计算,则可能会出现这种情况。

执行求解操作后,可以使用以下状态值之一修改状态:

  • 正常 (0) - 已成功计算网络位置。
  • 元素不可穿越 (3) - 网络位置所在的网络元素不可穿越。网络元素受到约束属性限制时可能会发生这种情况。
  • 字段值无效 (4) - 网络位置的字段值落在分析图层的编码属性域或属性域范围之外。例如,应该填写正数的位置可能存在负数。
  • 未到达 (5) - 无法通过求解程序到达网络位置。

如果使用时间窗,并且提前或延后到达,则值将更改为时间窗冲突 (6)。

注注:

如果停靠点的 AssignmentRule 字段值为“排除”,那么 Status、RouteName 和 Sequence 字段的输入值在求解操作过程中不会发生改变。

停靠点的输出字段

输出字段

描述

ViolatedConstraints

该字段包含约束冲突的汇总,并在求解操作之后进行设置。如果将停靠点分配给任何路径都会与约束发生冲突,则可将下列一个冲突或多个冲突的组合分配给该字段。

开始行动开始行动:

表示文本描述的编码值以加括号的形式显示在以下列表中。请注意,编码值是通过将最后一个值增加一倍来增加的几何序列的一部分。可以对要编码的冲突进行各种组合。例如,将“超出容量 (2)”和“硬性路径区 (128)”的组合编码为 130 (2 +128)。

  • 超出 MaxOrderCount (1) - 无法将停靠点分配给路径,因为分配结果会超出路径的 MaxOrderCount 字段值。即使超出最大停靠点计数,也仍会生成解决方案,但是会遗留一些未服务到的停靠点。在这种情况下,VRP 求解程序会在给定的约束条件下尽可能包含最多的停靠点。
  • 超出 Capacities (2) - 无法将停靠点分配给路径,因为分配停靠点会超出路径的 Capacities 字段值。
  • 超出 MaxTotalTime (4) - 无法将停靠点分配给路径,因为分配停靠点会超出路径的 MaxTotalTime 字段值。
  • 超出 MaxTotalTravelTime (8) - 无法将停靠点分配给路径,因为分配停靠点会超出路径的 MaxTotalTravelTime 字段值。
  • 超出 MaxTotalDistance (16) - 无法将停靠点分配给路径,因为分配停靠点会超出路径的 MaxTotalDistance 字段值。
  • 硬性时间窗 (32) - 停靠点具有一个硬性时间窗,在未遇到时间窗冲突时,不能将停靠点分配给路径。(通过将值 0 分配给 MaxViolationTime1 或 MaxViolationTime2 字段来指定硬性时间窗。)
  • 不匹配的特点 (64) - 在目标路径上未找到停靠点所需的特点。
  • 硬性路径区 (128) - 停靠点未落在硬性路径区内。如果所有路径都具有硬性路径区,而某个停靠点落在一个硬性路径区之外,则将该约束冲突分配给该停靠点。
  • 超出停靠点对 MaxTransitTime (256) - 停靠点属于某个停靠点对,而分配该停靠点将会超出停靠点对的 MaxTransitTime 字段值所指定的最长行驶时间。
  • 停靠点对冲突 (512) - 停靠点属于某个停靠点对,但无法分配给路径,因为另一个停靠点具有某种冲突。例如,假设停靠点 O1 和 O2 属于一对停靠点,停靠点 O1 位于阻抗为负值的网络元素上,但停靠点 O2 却不存在任何冲突问题。那么求解程序就会为停靠点 O1 返回“不能到达”,为 O2 返回“停靠点对冲突”,因为这两个停靠点都无法分配给路径。
  • 不能到达 (1024) - 停靠点位于任何路径都无法到达的网络元素上。这通常是因为停靠点位于网络不相交的部分。
  • 无法插入所需休息点 (2048) - 在存在预分配的停靠点时,路径的休息点的 Sequence 值为空,且在未引入其他冲突的情况下,该休息点不能插入到任何位置。
  • 无法插入所需更新 (4096) - 路径超出其容量并且需要访问路径更新;然而,在存在预分配的停靠点时,关联的路径更新的 Sequence 值为空,且在未引入其他冲突的情况下,关联的路径更新不能插入到任何位置。
  • 超出 MaxTravelTimeBetweenBreaks (8192) - 求解程序不能在休息点的 MaxTravelTimeBetweenBreaks 字段所指定的时间内插入休息点。这通常是因为预先为休息点分配了一个顺序,而使得无法在最长行驶时间内到达休息点。

  • 超出休息点 MaxCumulWorkTime (16384) - 求解程序不能在休息点的 MaxCumulWorkTime 字段所指定的时间内插入休息点。这通常是因为预先为休息点分配了一个顺序,而使得无法在最长行驶时间内到达休息点。

了解有关网络分析疑难解答的详细信息

注注:

未安排路径的停靠点的 ViolatedConstraints 值可能会描述其所有冲突,也可能不描述所有冲突。如果冲突非常严重,从而导致以后直接不考虑停靠点,那么求解程序就会照此执行,这样便会防止该停靠点出现任何其他冲突。如果遇到不会自动阻止解决方案生成的冲突,那么该冲突会被记录到 ViolatedConstraints 中,而求解程序将继续考虑该停靠点。与上述类似的任何其他冲突都会被添加到 ViolatedConstraints 字段,直到 (a) 求解程序找到了可提前停止对特定停靠点进行求解的冲突或 (b) 求解程序找到了问题的总体解决方案。

FromPrevTravelTime

从路径上的前一个访问位置到该停靠点的行驶时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

FromPrevDistance

从路径上的前一个访问位置到该停靠点的行驶距离。

该字段值的单位由分析图层的“距离字段单位”属性指定。如果未使用分析参数指定“距离特性”属性,则该字段为空。

CumulTravelTime

路径到达停靠点时的累积行驶时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

CumulDistance

路径到达停靠点时的累积行驶距离。

该字段值的单位由分析图层的“距离字段单位”属性指定。如果未使用分析参数指定“距离特性”属性,则该字段为空。

CumulTime

路径到达该停靠点(包括在停靠点停留)的累积持续时间。累积持续时间包括行驶时间以及在停靠点的服务和等待时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

ArriveCurbApproach

指示在车辆到达网络位置时路边位于车辆哪一侧。如果将网络位置的 CurbApproach 值设置为“车辆的右侧”,则求解后的 ArriveCurbApproach 是“车辆的右侧”。但是,如果将 CurbApproach 值设置为“车辆的任意一侧”或“禁止 U 形转弯”,则将“车辆的右侧”还是“车辆的左侧”作为 ArriveCurbApproach 的值取决于使用哪个值可生成最短路径。

DepartCurbApproach

指示在车辆离开网络位置时路边位于车辆哪一侧。如果将网络位置的 CurbApproach 值设置为“车辆的右侧”,则求解后的 DepartCurbApproach 是“车辆的右侧”。但是,如果将 CurbApproach 值设置为“车辆的任意一侧”或“禁止 U 形转弯”,则将“车辆的右侧”还是“车辆的左侧”作为 DepartCurbApproach 的值取决于使用哪个值可生成最短路径。

ArriveTime

指示到达停靠点时的日期和时间值。

路径到达停靠点的时间可能在停靠点的某个时间窗开始之前,在这种情况下,停靠点处存在一个等待时间。如果停靠点采用软性时间窗,则路径到达该停靠点的时间还可能在某个时间窗结束之后,在这种情况下,停靠点处存在一个冲突时间。

使用跨越多个时区的流量数据时,该时刻的时区将采用停靠点所处的网络元素所在时区。

DepartTime

指示离开停靠点时的日期和时间值。路径在完成服务后离开停靠点。

使用跨越多个时区的流量数据时,该时刻的时区将采用停靠点所处的网络元素所在时区。

WaitTime

在停靠点的等待时间或短暂停留时间。例如,如果路径必须在停靠点等待时间窗打开,那么您会获得一个等待时间值。

该字段值的单位由分析图层的“时间字段单位”属性指定。

ViolationTime

停靠点的时间窗关闭与路径车辆到达之间的时间间隔。

该字段值的单位由分析图层的“时间字段单位”属性指定。

CumulWaitTime

从路径起始点到停靠点的累积等待时间(包括在停靠点的等待时间)。

该字段值的单位由分析图层的“时间字段单位”属性指定。

CumulViolationTime

从路径起始点到停靠点的累积冲突时间(包括在停靠点的冲突时间)。

该字段值的单位由分析图层的“时间字段单位”属性指定。

站点类

该网络分析类存储的站点是给定多路径配送 (VRP) 分析图层的一部分。站点是指车辆在工作时间开始时离开并在工作时间结束后返回的位置。站点是车辆装货(对于配送)或卸货(对于接收)的位置。在某些情况下,站点还可以充当更新位置,因此,车辆可以卸货或重新装货,然后继续进行配送和接收。站点具有打开时间和关闭时间,这由硬性时间窗指定。车辆不能在该时间窗之外到达站点。

站点属性

站点的输入字段

输入字段

描述

ObjectID

系统管理的 ID 字段。

Shape

指示网络分析对象地理位置的几何字段。

名称

网络分析对象的名称。

该字段属于主键,并用作“路径”要素图层、“路径更新”表和“站点访问”要素图层中对站点进行引用的外键。站点名称不区分大小写,必须非空且唯一。

描述

有关网络分析对象的描述性信息。描述性信息可以包含任何文本信息,对唯一性没有任何限制。

也许您希望记录站点所在的区域或者站点的地址以及电话号码;那么您可在此处而不是 Name 字段中输入此信息。

TimeWindowStart1

网络位置的第一时间窗开始时间。该字段可以包含空值;空值指示没有开始时间。

(有关详细信息,请参阅下面该属性列表的注释。)

TimeWindowEnd1

网络位置的第一时间窗结束时间。该字段可以包含空值;空值指示没有结束时间。

(有关详细信息,请参阅下面该属性列表的注释。)

TimeWindowStart2

网络位置的第二时间窗开始时间。该字段可以包含空值;空值指示没有第二时间窗。

如果第一时间窗为空,正如 TimeWindowStart1 和 TimeWindowEnd1 字段所指定的那样,第二时间窗也必须为空。

如果两个时间窗均不为空,则第二时间窗在时间上必须晚于第一时间窗,而且不能覆盖第一时间窗。

(有关详细信息,请参阅下面该属性列表的注释。)

TimeWindowEnd2

网络位置的第二时间窗结束时间。该字段可以包含空值。

如果 TimeWindowStart2 和 TimeWindowEnd2 均为空,则不存在第二时间窗。

如果 TimeWindowStart2 不为空,但是 TimeWindowEnd2 为空,则存在具有开始时间但没有结束时间的第二时间窗。这种情况是有效的。

(有关详细信息,请参阅下面该属性列表的注释。)

网络位置字段

  • SourceID
  • SourceOID
  • PosAlong
  • SideOfEdge

结合使用这四种属性可描述网络中对象所在的点。

了解有关网络位置字段的详细信息

CurbApproach

CurbApproach 属性指定车辆到达和离开站点的方向。它适用于需要从特定方向到达和离开站点或者需要避免出现 U 形转弯的车辆。您可通过选择以下四种 CurbApproach 值之一来满足这些要求:

  • 车辆的任意一侧 (0) - 车辆可从任一方向到达和离开网络位置。允许 U 形转弯。如果车辆可在停靠点进行 U 形转弯或在驶入车道或停车场后能够调头,则应该选择该设置。
  • 车辆的右侧 (1) - 当车辆到达和离开网络位置时,路边必须在车辆右侧。禁止 U 形转弯。
  • 车辆的左侧 (2) - 当车辆到达和离开网络位置时,路边必须在车辆左侧。禁止 U 形转弯。
  • 禁止 U 形转弯 (3) - 不允许对站点使用该选项。如果使用“禁止 U 形转弯”,则在求解过程中会返回错误消息。尽管如此,仍可通过选择车辆的左侧或右侧来避免 U 形转弯。

了解有关 U 形转弯策略的详细信息

注注:
  • 时间窗字段可以包含“仅时间”值或“日期和时间”值。如果像 TimeWindowStart1 这样的时间字段具有“仅时间”值(例如 8:00 AM),则假定日期由分析图层的“默认日期”属性指定。使用“日期和时间”值(例如 7/11/2010 8:00 AM)可以设置持续多天的时间窗。

  • 如果正在使用流量数据,则网络位置的时间字段始终会引用与网络位置所在的边相同的时区。

站点的输入/输出字段

输入/输出字段

描述

状态

该字段受到下面列出的值的属性域(括号中是它们的编码值)的约束。

  • 正常 (0) - 网络位置有效。
  • 未定位 (1) - 无法确定网络中的位置。
  • 未定位网络元素 (2) - 找不到应作为网络位置的网络元素。如果删除了网络边并且未对网络位置重新进行计算,则可能会出现这种情况。

执行求解操作后,可以使用以下状态值之一修改状态:

  • 正常 (0) - 已成功计算网络位置。
  • 元素不可穿越 (3) - 网络位置所在的网络元素不可穿越。网络元素受到约束属性限制时可能会发生这种情况。
  • 字段值无效 (4) - 网络位置的字段值落在分析图层的编码属性域或属性域范围之外。例如,应该填写正数的位置可能存在负数。
  • 未到达 (5) - 无法通过求解程序到达网络位置。

如果使用时间窗,并且提前或延后到达,则值将更改为时间窗冲突 (6)。

路径类

该网络分析类存储的路径是给定多路径配送 (VRP) 分析图层的一部分。路径除表示站点和停靠点之间的遍历之外,还指定车辆和驾驶员的特征。在 ArcGIS Network Analyst 中,车辆、路径和驾驶员同义,术语“路径”用于涵盖这三个概念。

注注:

VRP 求解程序并不会考虑在单一路径安排解决方案中将同一辆车在多个工作时间交替使用,也不考虑在某个工作时间内更换驾驶员。

路径在起始站点或终止站点可能需要花费时间进行装货或卸货。在站点耗用的时间对于路径来说是固定的,并且被指定为起始站点服务时间和终止站点服务时间。

路径的起始时间可能是固定的,也可能是弹性的;也就是说,路径可拥有一个“最早-最晚”的起始时间范围。在确定路径的实际起始时间时,会考虑起始站点的起始时间范围和时间窗。

单一路径的运行成本可由基于时间的成本、基于距离的成本和/或与工作时间或行驶距离无关的固定成本组成。例如,如果为应对高负荷工作时段而额外租用了其他车辆,则可能会存在与使用车辆相关联的固定成本。同样,可能会根据工作小时数(包括或不包括加班时间和午休时间)而支付给驾驶员报酬。这样的成本可用来指定基于时间的成本。燃料成本可用于指定距离成本。

在给定路径上行驶的车辆可能还具有一个容量,用来限制车辆的车载量。

由于存在相关的法律规定或工会协议,可能会限制驾驶员的工作时间,例如,总驾驶距离或驾驶员可工作或驾驶的小时数。

路径可包括工作休息时间。可能会为这类休息时间向驾驶员支付报酬,也可能不会。

车辆可能具有特定的功能(例如,动力升降装置或特殊护罩),或者技术人员可能拥有多种不同的技能。定义有这些特点的停靠点必须分配给相应的路径。

如果路径的工作范围被限制在预定义的地理区域内,则路径可能会与某个区域相关联。

路径属于线要素。可从其他多路径配送 (VRP) 分析图层中的现有路径、从其他线状要素或从表中导入路径。也可使用添加项目命令创建它们。

路径属性

路径的输入字段

输入字段

描述

ObjectID

系统管理的 ID 字段。

名称

网络分析对象的名称。

该字段属于主键,并用作“停靠点”要素图层、“休息点”表、“路径区”要素图层、“路径种子点”要素图层、“路径更新”表和“站点访问”要素图层中的外键。路径名称不区分大小写,而且即使路径不属于求解操作的一部分,路径名称也不能为空。名称必须唯一。

描述

有关网络分析对象的描述性信息。描述性信息可以包含任何文本信息,对唯一性没有任何限制。

StartDepotName

路径的起始站点名称。该字段是“站点”类中 Name 字段的外键。站点对象必须事先存在,才会显示在 StartDepotName 下拉列表中。

如果 StartDepotName 为空,则路径会将分配的第一个停靠点作为起始点。车辆的起始位置未知或者与您的问题不相关时,可以忽略起始站点。不过,即使 StartDepotName 为空,EndDepotName 也不能为空。

如果路径正在进行配送并且 StartDepotName 为空,则假设在路径开始前车辆在一个虚拟站点处进行装货。如果路径不具有更新访问,它的配送停靠点(“停靠点”类中 DeliveryQuantities 值为非零的停靠点)会在起始站点或虚拟站点处进行装货。如果路径具有更新访问,则只有第一个更新访问之前的配送停靠点才会在起始站点或虚拟站点处进行装货。

EndDepotName

路径的终止站点名称。该字段是“站点”类中 Name 字段的外键。站点对象必须事先存在,才会显示在 EndDepotName 下拉列表中。

如果 EndDepotName 为空,则路径将在分配的最后一个停靠点处结束。车辆的终止位置未知或者与您的问题不相关时,可以忽略终止站点。不过,即使 EndDepotName 为空,StartDepotName 也不能为空。

如果路径正在进行接收并且 EndDepotName 为空,则假设在路径结束后车辆在一个虚拟站点处进行卸货。如果路径不具有更新访问,它的配送停靠点(“停靠点”类中 PickupQuantities 值为非零的停靠点)会在终止站点或虚拟站点处进行卸货。如果路径具有更新访问,则只有最后一个更新访问之后的接收停靠点才会在终止站点或虚拟站点处进行卸货。

StartDepotServiceTime

在起始站点的服务时间。该字段可用于为车辆装货所用的时间建立模型。该字段可以包含空值;空值表示没有服务时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

注注:

起始和结束站点处的服务时间是固定值(由 StartDepotServiceTime 和 EndDepotServiceTime 字段值指定),因此不必考虑路径的实际载荷。例如,在起始站点处装载车辆所花费的时间取决于订单大小。因此,站点服务时间是与货车满载或货车平均装载对应的指定值,或者也可以设置自行估计的时间值。

EndDepotServiceTime

在终止站点的服务时间。该字段可用于为车辆卸货所用的时间建立模型。该字段可以包含空值;空值表示没有服务时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

注注:

起始和结束站点处的服务时间是固定值(由 StartDepotServiceTime 和 EndDepotServiceTime 字段值指定),因此不必考虑路径的实际载荷。例如,在起始站点处装载车辆所花费的时间取决于订单大小。因此,站点服务时间是与货车满载或货车平均装载对应的指定值,或者也可以设置自行估计的时间值。

EarliestStartTime

路径允许的最早开始时间。求解程序通过将该字段与起始站点的时间窗结合使用来确定可行的路径开始时间。

该字段不能包含空值,其默认的“仅时间”值为 8:00 AM;该默认值被解释为分析图层的默认日期属性所指定日期的 8:00 AM。

将网络数据集与跨越多个时区的流量数据结合使用时,EarliestStartTime 的时区与起始站点所在的边或交汇点的时区相同。

LatestStartTime

路径允许的最晚开始时间。该字段不能包含空值,其默认的“仅时间”值为 10:00:00 AM;该默认值被解释为分析图层的默认日期属性所指定日期的 10:00:00 AM。

将网络数据集与跨越多个时区的流量数据结合使用时,LatestStartTime 的时区与起始站点所在的边或交汇点的时区相同。

ArriveDepartDelay

该字段存储将车辆加速到正常行驶速度、减速到停止状态以及离开和进入网络(例如,出入停车场)所需的行驶时间。通过包含 ArriveDepartDelay,可防止 VRP 求解程序发送多条路径来为完全重合的停靠点提供服务。

该属性的成本是因为对不重合的停靠点、站点和路径更新进行访问而产生的。例如,如果路径从站点处开始,然后访问第一个停靠点,则总的“到达-离开”延迟会计入行驶时间。这同样适用于从第一个停靠点行驶到第二个停靠点的情况。如果第二个停靠点与第三个停靠点重合,则不会在它们之间添加 ArriveDepartDelay,因为车辆并不需要移动。如果路径行驶到路径更新,则 ArriveDepartDelay 会再次计入行驶时间。尽管车辆需要减速、停下来休息,然后再加速,但 VRP 求解程序也不能计入休息时间的 ArriveDepartDelay 值。这表示如果路径离开某个停靠点、停下休息,然后继续行驶到下一个停靠点,则仅计入一次“到达-离开”延迟,而不是两次。

假设在一幢高层建筑物中有五个重合停靠点,而且可通过三条不同的路径来为它们提供服务。这意味着将产生三个“到达-离开”延迟;也就是说,三名驾驶员需要寻找停车位并进入同一栋建筑物。不过,如果可以仅通过一条路径来为这些停靠点提供服务,则只有一名驾驶员需要寻找停车位并进入该建筑物,这样只会产生一个“到达-离开”延迟。由于 VRP 求解程序会尝试将成本降至最低,所以它将尝试限制“到达-离开”延迟,因而会选择使用单一路径。(请注意,其他约束(例如,特点、时间窗或容量)可能要求发送多条路径。)

该字段值的单位由分析图层的“时间字段单位”属性指定。

Capacities

车辆的最大装载量(例如,体积、重量或数量)。如果车辆的最大载重量为 40000 磅,那么分析图层的图层属性 对话框中的容量计数应设置为 1,而 Capacities 应设置为 40000。同样,如果车辆的装载体积为 1000 立方英尺,则容量计数应设置为 1,而 Capacities 应设置为 1000

警告警告:

VRP 求解程序仅执行简单的布尔测试来判定是否超出容量。如果路径的容量值大于或等于装载总量,则 VRP 求解程序将假定货物适宜用该车辆装载。这可能并不正确,但具体要取决于货物和车辆的实际形状。例如,VRP 求解程序允许将 1000 立方英尺的球形物装到容积为 1000 立方英尺、宽为八英尺的货车中。但实际上由于球形物的直径为 12.6 英尺,所以它无法装到八英尺宽的货车中。

如果在分析图层的容量计数参数中指定了多个容量,则使用空格来分隔 Capacities 值。例如,使用车辆的最大载重量和最大装载体积时,分析图层的图层属性 对话框中的容量计数应设为 2;如果车辆的载重量为 40000 磅,装载体积为 2000 立方英尺,则 Capacities 应设为 40000 2000

空字符串或空值相当于所有值均为零。容量值不能为负数。

如果 Capacities 字符串中值的个数相对于容量计数来说不足,则其余的值将被视为零。

FixedCost

仅当解决方案中使用路径(即,路径分配有停靠点)时才产生的固定货币成本。该字段可以包含空值;空值表示没有固定成本。该成本属于路径总运行成本的一部分。

CostPerUnitTime

路径总持续时间(包括行驶时间以及在停靠点、站点和休息点的服务时间和等待时间)中每单位工作时间产生的货币成本。该字段不能包含空值,其默认值为 1.0。

时间单位由分析图层的时间字段单位属性指定。

CostPerUnitDistance

路径长度(总行驶距离)中每单位行驶距离产生的货币成本。该字段可以包含空值;空值表示没有成本。

距离单位由分析图层的距离字段单位属性指定。

如果为该字段指定了一个值,但没有为分析图层指定距离属性这一属性,则求解程序将返回一个错误。

OvertimeStartTime

开始计算加班时间之前的规定工作时间。该字段可以包含空值;空值表示没有加班时间。

时间单位由分析图层的时间字段单位属性指定。

例如,如果在路径总持续时间超出八小时后要为驾驶员支付加班费用,且分析图层的时间字段单位属性设置为小时,则 OvertimeStartTime 会指定为 8

CostPerUnitOvertime

每单位加班工作时间产生的货币成本。该字段可以包含空值;空值表示 CostPerUnitOvertime 值与 CostPerUnitTime 值相同。

MaxOrderCount

路径上允许的最大停靠点数。该字段不能包含空值,其默认值为 30。

MaxTotalTime

允许的最长路径持续时间。路径持续时间包括行驶时间以及在停靠点、站点和休息点的服务和等待时间。该字段可以包含空值;空值表示对路径持续时间没有约束。

该字段值的单位由分析图层的“时间字段单位”属性指定。

MaxTotalTravelTime

路径允许的最长行驶时间。行驶时间只包括在网络上行驶时所用的时间,不包括服务或等待时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

该字段可以包含空值;空值表示对允许的最长行驶时间没有约束。该字段值不能大于 MaxTotalTime 字段值。

MaxTotalDistance

路径允许的最长行驶距离。总距离的单位由分析图层的距离字段单位属性指定。该字段可以包含空值;空值表示对允许的最长行驶距离没有约束。

如果为该字段指定了一个值,但没有为分析图层指定距离属性这一属性,则求解程序将返回一个错误。

SpecialtyNames

一种以空格分隔的字符串,其中包含路径所支持的特点的名称。空值表示路径不支持任何特点。该字段是“特点”表中 Name 字段的外键。特点对象必须事先存在,才会显示在 SpecialtyNames 下拉列表中。

AssignmentRule

该字段指定解决问题时是否可以使用路径。该字段受值的属性域约束,以下为可能的值:

  • 包括 - 路径包括在求解操作中。这是默认值。
  • 排除 - 路径被排除在求解操作之外。

路径的输出字段

输出字段

描述

Shape

路径的线形状。如果将分析图层的输出 Shape 类型属性设为“无”,则不返回任何形状。将输出 Shape 类型属性设置为“直线”将会返回连接每对连续访问位置的直线路径。具有测量值的实际形状实际形状都会返回沿网络上相应路径描绘的线,不同之处在于具有测量值的实际形状会返回按时间进行线性参考的线。

ViolatedConstraints

该字段包含约束冲突的汇总,并在求解操作之后进行设置。如果因某条路径而导致与约束发生冲突,则可将下列一个冲突或多个冲突的组合分配给该字段。

开始行动开始行动:

表示文本描述的编码值以加括号的形式显示在以下列表中。请注意,编码值是通过将最后一个值增加一倍来增加的几何序列的一部分。可以对要编码的冲突进行各种组合。例如,将“超出容量 (2)”和“硬性路径区 (128)”的组合编码为 130 (2 +128)。

  • 超出 MaxOrderCount (1) - 预分配的停靠点无法分配给路径,因为分配停靠点会超出路径的 MaxOrderCount 字段值所指定的可分配给路径的最大停靠点数。
  • 超出 Capacities (2) - 预分配的停靠点无法分配给路径,因为分配停靠点会超出路径的 Capacities 字段值指定的总路径容量。
  • 超出 MaxTotalTime (4) - 从起始站点到终止站点的行驶时间加上在两个站点的服务和等待时间以及任何休息时间,这几个时间的总和超出了路径的 MaxTotalTime 字段值指定的路径总时间。
  • 超出 MaxTotalTravelTime (8) - 从起始站点到终止站点的行驶时间超出了路径的 MaxTotalTravelTime 字段值指定的路径总行驶时间。
  • 超出 MaxTotalDistance (16) - 从起始站点到终止站点的行驶距离超出了路径的 MaxTotalDistance 字段值指定的路径总行驶距离。
  • 硬性时间窗 (32) - 在与路径关联的起始站点、终止站点或休息点上存在硬性时间窗冲突。
  • 不匹配的特点 (64) - 在目标路径上未找到停靠点所需的特点。
  • 硬性路径区 (128) - 预分配给路径的停靠点未落在硬性路径区内。
  • 超出停靠点对 MaxTransitTime (256) - 存在预分配给路径的停靠点对,而分配该停靠点对中的停靠点会超出停靠点对的 MaxTransitTime 字段值所指定的停靠点对的最长行驶时间。
  • 停靠点对冲突 (512) - 停靠点属于某个停靠点对,但无法分配给预分配的路径。
  • 不能到达 (1024) - 预分配的停靠点位于路径无法到达的网络元素上。
  • 无法插入所需休息点 (2048) - 在存在预分配的停靠点时,路径的休息点的 Sequence 值为空,且在未引入其他冲突的情况下,该休息点不能插入到任何位置。
  • 无法插入所需更新 (4096) - 路径超出其容量并且需要访问路径更新,然而,在存在预分配的停靠点时,关联的路径更新的 Sequence 值为空,且在未引入其他冲突的情况下,关联的路径更新不能插入到任何位置。
  • 超出 MaxTravelTimeBetweenBreaks (8192) - 求解程序不能在休息点的 MaxTravelTimeBetweenBreaks 字段所指定的时间内插入休息点。这通常是因为预先为休息点分配了一个顺序,而使得无法在最长行驶时间内到达休息点。

  • 超出休息点 MaxCumulWorkTime (16384) - 求解程序不能在休息点的 MaxCumulWorkTime 字段所指定的时间内插入休息点。这通常是因为预先为休息点分配了一个顺序,而使得无法在最长行驶时间内到达休息点。

OrderCount

分配给路径的停靠点数。

TotalCost

路径的总运行成本,它是下列字段值的总和:

  • FixedCost
  • RegularTimeCost
  • OvertimeCost
  • DistanceCost

RegularTimeCost

除任何不需支付酬金的休息时间外的规定工作时间的成本。

OvertimeCost

除任何不需支付酬金的休息时间外的加班时间的成本。

DistanceCost

通过将 TotalDistance 和 CostPerUnitDistance 字段值相乘得出的距离成本部分。如果没有为分析图层指定距离属性这一属性,则该字段值为空。

TotalTime

路径总持续时间。该持续时间包括行驶时间以及在停靠点、站点和休息点的服务和等待时间。TotalTime 值是下列字段值的总和:

  • StartDepotServiceTime
  • EndDepotServiceTime
  • TotalOrderServiceTime
  • TotalBreakServiceTime
  • TotalRenewalServiceTime
  • TotalWaitTime
  • TotalTravelTime

该字段值的单位由分析图层的“时间字段单位”属性指定。

TotalOrderServiceTime

在路径上的所有停靠点处所用的总服务时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

TotalBreakServiceTime

在路径上的所有休息点处所用的总服务时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

TotalTravelTime

路径的总行驶时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

TotalDistance

路径的总行驶距离。

该字段值的单位由分析图层的“距离字段单位”属性指定。如果未使用分析参数指定“距离特性”属性,则该字段为空。

StartTime

路径的开始时间。路径可能会在起始站点的时间窗打开之前开始,在这种情况下,起始站点处存在一个等待时间。

使用跨越多个时区的流量数据时,该时刻的时区将采用起始站点所在的网络元素对应的时区。

EndTime

路径的结束时间。路径在终止站点处完成服务后结束。

使用跨越多个时区的流量数据时,该时刻的时区将采用终止站点所在的网络元素对应的时区。

TotalWaitTime

在路径上的所有停靠点、站点和休息点处的总等待时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

TotalViolationTime

在路径上的所有停靠点和休息点处的总冲突时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

RenewalCount

如果路径包含更新,该字段就相当于为进行更新而访问站点的次数。

TotalRenewalServiceTime

如果路径包含更新,在该字段表示在路径上的所有更新访问处所用的总服务时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

站点访问要素图层

如果路径在某个站点处开始、更新(卸货或重新装货)或终止,则会创建站点访问。站点访问对象提供与路径访问站点的原因以及在站点发生的事情有关的信息。在站点为车辆装载的货物量或从车辆卸载的货物量均记录在站点访问的属性中。另外,还包括用于解释多路径配送 (VRP) 解决方案的其他信息。

这是一个只有输出的网络分析类。站点访问要素完全是在求解操作期间创建的;因此,在求解过程之前,该分析类始终为空。

站点访问属性

站点访问的输出字段

输出字段

描述

ObjectID

系统管理的 ID 字段。

Shape

指示网络分析对象地理位置的几何字段。

DepotName

所访问站点的名称。该字段是“站点”网络分析类中 Name 字段的外键。

如果路径使用虚拟站点,即路径在停靠点(而不是站点)处开始或结束,则 DepotName 为空。

RouteName

包含该访问的路径的名称。该字段是“路径”要素图层中 Name 字段的外键。

Sequence

指示路径上所访问站点的顺序。路径的输出 sequence 值在站点访问、停靠点和休息点之间共享;从 1 开始(在起始站点处);并且是连续的。

VisitType

访问该站点的原因。该字段受值的属性域约束。

  • 起始站点
  • 终止站点
  • 更新站点

ServiceTime

在站点的服务时间(例如,装货或卸货)。

该字段值的单位由分析图层的“时间字段单位”属性指定。

FromPrevTravelTime

从路径上的前一个访问位置到该站点的行驶时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

FromPrevDistance

从路径上的前一个访问位置到该站点的行驶距离。

该字段值的单位由分析图层的“距离字段单位”属性指定。如果未使用分析参数指定“距离特性”属性,则该字段为空。

CumulTravelTime

路径到达该站点时的累积行驶时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

CumulDistance

路径到达该站点时的累积行驶距离。

该字段值的单位由分析图层的“距离字段单位”属性指定。如果未使用分析参数指定“距离特性”属性,则该字段为空。

CumulTime

路径到达该站点(包括在站点停留)的累积持续时间。累积持续时间包括行驶时间以及在停靠点、站点和休息点的服务和等待时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

ArriveTime

到达站点的时间。路径到达站点的时间可能在站点的时间窗开始之前,在这种情况下,站点处存在一个等待时间。

使用跨越多个时区的流量数据时,该时刻的时区将与站点所在的网络元素的时区相同。

DepartTime

离开站点的时间。

使用跨越多个时区的流量数据时,该时刻的时区将与站点所在的网络元素的时区相同。

WaitTime

在站点等待的时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

CumulWaitTime

从路径起始点到站点的累积等待时间(包括在站点的等待时间)。

该字段值的单位由分析图层的“时间字段单位”属性指定。

CumulViolationTime

从路径起始点到站点的累积冲突时间(包括在站点的冲突时间)。

该字段值的单位由分析图层的“时间字段单位”属性指定。

TotalLoadedQuantities

在站点的装载量(例如,重量、体积或数量)。如果在分析图层的容量计数属性中指定了多个容量,则使用空格来分隔它们。例如,在配送时,TotalLoadedQuantities 字段的值指明车辆在返回到站点之前所配送的实际货物量。该值小于或等于给定路径的 Capacities 字段值,表示路径执行一货车装载量的配送。

TotalUnloadedQuantities

在站点的卸载量(例如,重量、体积或数量)。如果在分析图层的容量计数属性中指定了多个容量,则使用空格来分隔它们。例如,在进行接收或者路径包含更新时,TotalUnloadedQuantities 字段的值指明车辆接收并运到站点的实际货物量。该值小于或等于给定路径的 Capacities 字段值,表示路径执行一货车装载量的接收。

注注:

由于站点具有硬性时间窗,所以“站点访问”要素图层上不存在 ViolationTime 输出字段。

休息点类

这是一个用来为多路径配送 (VRP) 中的路径存储休息时段或休息点的非空间网络分析类。一个休息点只与一条路径相关联,而且可在以下情况下获得:完成停靠点服务后、去往停靠点的途中或在为停靠点提供服务之前。休息点具有起始时间和持续时间,这段时间可能会为驾驶员支付报酬,也可能不支付。可通过三种方式来建立休息点的起始时间:可输入时间窗、最长行驶时间或最长工作时间。

  • 时间窗休息点 - 要设置时间窗休息点,请输入两个时间值来限定休息点的起始时间范围。TimeWindowStartTimeWindowEnd 字段存放时间的上下限值。休息点的持续时间(或服务时间)与时间窗无关,因此可延长到超过时间窗的关闭时间。例如,如果一小时休息点的时间窗是从 10:00 a.m. 到 10:15 a.m.,则休息点的开始时间应在 10:00 a.m. 之后 10:15 a.m. 之前。如果从 10:10 a.m. 开始,则休息将在 11:10 a.m. 结束。

  • 最长行驶时间休息点 - 对于这种休息点,请指定可在驾驶多长时间之后才需要休息。(请注意,只有行驶时间会受限制,其他时间(如等待时间和服务时间)不受限制。)例如,如果在第一个休息点的 MaxTravelTimeBetweenBreaks 属性中输入四小时,则从路径的起始位置开始计算的累积行驶时间超过四个小时后,驾驶员将得到休息。对于后续的任何休息点,行驶时间都会从上一个休息点开始累积。所以,如果将另一个休息点的 MaxTravelTimeBetweenBreaks 值设定为两个小时,则从上一个休息点(而不是起始站点)开始累积两个小时的行驶时间之后,将会再获得一次休息。

    路径的最后一个最长行驶时间休息点不仅会限制从前一个休息点或从路径起始位置开始累积的行驶时间,还会限制从最后一个休息点到终止站点的行驶时间。即使只有一个休息点,也同样如此。这样设计 VRP 求解程序是为了防止路径获取所有休息点,然后持续行驶很长一段时间而不再休息。在最后一个示例中,MaxTravelTimeBetweenBreaks 被设置为两个小时。如果这是路径的最后一个休息点,则路径必须能够在从最后一个休息点算起的两个小时行驶时间内到达终止站点;否则,求解程序将返回错误。

  • 最长工作时间休息点 - 该休息点指定可在工作多长时间之后才需要休息。与最长行驶时间休息点(可从上一次休息结束时开始累积行驶时间)不同,最长工作时间休息点始终从路径的起始位置开始累积工作时间,包括在起始站点的所有服务时间。

    请注意,该休息点会限制累积工作时间,这包括行驶时间和全部服务时间;不过,它不包括等待时间。

仅当所有休息点的类型相同时才可对多路径配送 (VRP) 分析图层进行求解;也就是说,如果出现时间窗休息点、最长行驶时间休息点和最长工作时间休息点的任何组合,求解过程都会失败。

最多可以为一条路径指定五个休息点。例如,假设您正在使用最长行驶时间休息点进行分析。您可能为一条路径指定了两个休息点,以便在累积了两个小时的行驶时间后,驾驶员可以休息 15 分钟,再行驶两个小时后,驾驶员可停下来享受一小时的午休时间。您可在其他路径的任意位置指定零到五个休息点。

休息点具有 Precedence 字段,用来指定休息点的先后顺序。因此,如果想在一小时的休息点之前设置一个 15 分钟的休息点,则 15 分钟休息点的 precedence 值应为 1,另一个休息点的 precedence 值应为 2。所有休息点都需要设置 Precedence,即使最长工作时间休息点和时间窗休息点本身就具有时间顺序也是如此。

如果在经过所有最长行驶时间休息点或最长工作时间休息点之前,路径到达了最终目的地,则其余休息点将被忽略。如果路径终止位置处存在任何时间窗休息点,则路径将一直等到经过了所有休息点后才结束,而不会提前结束。

休息点属性

休息点的输入字段

输入字段

描述

ObjectID

系统管理的 ID 字段。

TimeWindowStart

休息点时间窗的开始时间。

如果该字段为空,并且 TimeWindowEnd 具有有效的时间值,则允许在 TimeWindowEnd 值之前的任何时间开始休息。

如果该字段中存在值,则 MaxTravelTimeBetweenBreaks 和 MaxCumulWorkTime 必须为空;此外,分析图层中所有其他休息点的 MaxTravelTimeBetweenBreaks 和 MaxCumulWorkTime 必须也为空值。

如果路径具有时间窗相互叠置的多个休息点,就会在求解时出现错误。

休息点的时间窗字段可以包含“仅时间”值或“日期和时间”值。如果像 TimeWindowStart 这样的时间字段具有“仅时间”值(例如 12:00 PM),则假定日期由分析图层的默认日期属性指定。使用“日期和时间”值(例如 7/11/2010 12:00 PM)可以指定时长为两天或两天以上的时间窗。这尤其适用于应在午夜前后的某个时间休息的情况。

将网络数据集与跨越多个时区的流量数据结合使用时,假定 TimeWindowStart 和 TimeWindowEnd 的时区与起始站点所在的边或交汇点的时区相同。

TimeWindowEnd

休息点时间窗的结束时间。

如果该字段为空,并且 TimeWindowStart 具有有效的时间值,则允许在 TimeWindowStart 值之后的任何时间结束休息。

如果该字段中存在值,则 MaxTravelTimeBetweenBreaks 和 MaxCumulWorkTime 必须为空;此外,分析图层中所有其他休息点的 MaxTravelTimeBetweenBreaks 和 MaxCumulWorkTime 必须也为空值。

有关详细信息,请参阅 TimeWindowStart 的描述(上文)。

MaxTravelTimeBetweenBreaks

休息之前可累积的最长行驶时间。行驶时间从上一个休息点的结束时间开始累积,或者从路径的起始点开始累积(如果还未休息过)。

如果这是路径的最后一个休息点,则 MaxTravelTimeBetweenBreaks 还会指明从最后一个休息点到终止站点可累积的最长行驶时间。

该属性用于限制可在驾驶多长时间之后才需要休息。例如,如果分析图层的时间字段单位属性设为“分钟”,而且 MaxTravelTimeBetweenBreaks 的值为 120,则驾驶员将在驾驶两个小时之后得到休息。如果要再驾驶两个小时后休息一次,则第二个休息点的 MaxTravelTimeBetweenBreaks 属性应为 120。

如果该字段中存在值,那么为了能够顺利求解分析,TimeWindowStart、TimeWindowEnd、MaxViolationTime 和 MaxCumulWorkTime 必须都为空。

该字段值的单位由分析图层的“时间字段单位”属性指定。

MaxCumulWorkTime

休息之前可累积的最长工作时间。工作时间始终从路径的起始点开始累积。

工作时间等于行驶时间加上在停靠点、站点和休息点的服务时间。不过请注意,该时间不包括等待时间,等待时间是指路径(或驾驶员)在停靠点或站点处等待时间窗打开所用的时间。

该属性用于限制可在工作多长时间之后才需要休息。例如,如果分析图层的时间字段单位属性设为“分钟”,而且 MaxCumulWorkTime 的值为 120,ServiceTime 的值为 15,则驾驶员将在工作两个小时之后获得 15 分钟的休息时间。

继续以上一个示例来进行说明,假设工作了三个小时之后又需要休息。那么,要指定该休息点,需要输入 315(五小时十五分钟)作为第二个休息点的 MaxCumulWorkTime 值。这个数字包括前一个休息点的 MaxCumulWorkTime 值和 ServiceTime 值,以及准许进行第二次休息之前的另外三个小时工作时间。为避免过早经过最长工作时间休息点,应该记住:此类休息点是从路径的起始点开始累积工作时间,并且工作时间包括在之前访问的站点、停靠点和休息点处的服务时间。

如果该字段中存在值,那么为了能够顺利求解分析,TimeWindowStart、TimeWindowEnd、MaxViolationTime 和 MaxTravelTimeBetweenBreaks 必须都为空。

该字段值的单位由分析图层的“时间字段单位”属性指定。

RouteName

休息点所应用到的路径的名称。尽管一个休息点只会被分配给一条路径,但是也可将多个休息点分配给同一路径。

该字段是“路径”类中 Name 字段的外键,并且不能具有空值。路径对象必须事先存在,才会显示在 RouteName 下拉列表中。

Precedence

Precedence 值用来指定休息点在给定路径上的顺序。precedence 值为 1 的休息点会出现在 precedence 值为 2 的休息点之前,依此类推。

无论休息点是时间窗休息点、最长行驶时间休息点还是最长工作时间休息点,所有休息点都必须具有 precedence 值。

ServiceTime

休息点的持续时间。该字段可以包含空值;空值表示没有服务时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

MaxViolationTime

该字段为时间窗休息点指定允许的最长冲突时间。如果到达时间不在该时间范围内,则认为与时间窗发生冲突。

零值表示不能与时间窗发生冲突;即时间窗是硬性的。非零值指定最长延迟时间;例如,休息点可在其时间窗结束后最多 30 分钟内开始,但会按照分析图层的时间窗冲突属性对延迟进行惩罚。

该属性可以为空;TimeWindowStart 和 TimeWindowEnd 为空值表示对允许的冲突时间没有限制。如果 MaxTravelTimeBetweenBreaks 或 MaxCumulWorkTime 中存在值,那么 MaxViolationTime 必须为空。

该字段值的单位由分析图层的“时间字段单位”属性指定。

IsPaid

用来指示是否为休息点支付报酬的布尔值。值为 True 表示在计算路径成本和判定加班时间时将包括在休息点花费的时间。值为 False 表示与 True 值相反的情况。默认值为 True。

休息点的输入/输出字段

输入/输出字段

描述

Sequence

该输入字段用于指示休息点在其路径上的顺序。该字段可包含空值。输入 sequence 值应为正且对于各路径均唯一(在更新站点访问、停靠点和休息点之间共享),但是不需要从 1 开始,也不需要连续。

求解程序会修改 sequence 字段。执行求解后,该字段会包含休息点在其路径上的 sequence 值。路径的输出 sequence 值在站点访问、停靠点和休息点之间共享;从 1 开始(在起始站点处);并且是连续的。

休息点的输出字段

输出字段

描述

RelativePosition

休息点的相对位置。休息点位于两个网络位置(停靠点或站点)之间的某处。值 0.0 表示正好在前一个网络位置处完成服务后休息;值 1.0 表示正好在后一个网络位置处开始服务前休息;位于这两个值之间的值表示在第一个网络位置到第二个网络位置之间路径上的某处休息。例如,0.25 表示在前一个网络位置到下一个网络位置之间路径的四分之一处休息。

无论两个网络位置之间出现了多少个休息点,相对位置始终相对于网络位置(而不是其他休息点)进行报告。

FromPrevTravelTime

从前一个停靠点、站点或休息点到该休息点的行驶时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

FromPrevDistance

从前一个停靠点、站点或休息点到该休息点的行驶距离。

该字段值的单位由分析图层的“距离字段单位”属性指定。如果未使用分析参数指定“距离特性”属性,则该字段为空。

CumulTravelTime

路径到达该休息点时的累积行驶时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

CumulDistance

路径到达该休息点时的累积行驶距离。

该字段值的单位由分析图层的“距离字段单位”属性指定。如果未使用分析参数指定“距离特性”属性,则该字段为空。

CumulTime

路径到达该休息点(包括在休息点停留)的累积持续时间。累积持续时间包括行驶时间以及在停靠点、站点和休息点的服务和等待时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

ArriveTime

到达休息点的实际时间。路径到达休息点的时间可能在休息点的时间窗开始之前,在这种情况下,休息点处存在一个等待时间。如果休息点采用软性时间窗,则路径到达该休息点的时间还可能在时间窗结束之后,在这种情况下,休息点处存在一个冲突时间。

如果使用具有多个时区的流量数据,则以关联路径的起始站点所在的时区来报告该时间。

DepartTime

休息结束的时间。

如果使用具有多个时区的流量数据,则以关联路径的起始站点所在的时区来报告该时间。

WaitTime

在休息点等待的时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

ViolationTime

休息点处的冲突时间。

该字段值的单位由分析图层的“时间字段单位”属性指定。

CumulWaitTime

从路径起始点到休息点的累积等待时间(包括在休息点的等待时间)。

该字段值的单位由分析图层的“时间字段单位”属性指定。

CumulViolationTime

从路径起始点到休息点的累积冲突时间(包括在休息点的冲突时间)。

该字段值的单位由分析图层的“时间字段单位”属性指定。

路径区类

路径区为给定路径指定工作区域。路径区属于面要素,用来对路径施加约束,以使路径仅为某一区域内或附近的停靠点提供服务。以下示例说明了路径区非常有用:

  • 有些员工不具备在某些州或社区执行工作所需的权限。此时,您可以创建一个硬性路径区,使他们只能访问他们满足相应要求的区域中的停靠点。
  • 您其中的一辆车经常出现故障,所以您希望使其仅访问离汽车修理厂很近的停靠点,从而将响应时间缩至最短。此时,您可以创建一个软性或硬性路径区来使该车辆在附近行驶。

如果在分析中使用路径区,则无法同时使用路径种子点。

路径区属性

路径区的输入字段

输入字段

描述

ObjectID

系统管理的 ID 字段。

Shape

指示网络分析对象地理位置的几何字段。

RouteName

该区域所应用到的路径的名称。路径区最大可覆盖一条关联路径。该字段不能包含空值,而且是“路径”要素图层中 Name 字段的外键。路径对象必须事先存在,才会显示在 RouteName 下拉列表中。

IsHardZone

用来指示路径区是硬性路径区还是软性路径区的布尔值。值为 True 表示路径区是硬性的;也就是说,落在路径区面以外的停靠点不能分配给该路径。默认值为 True。值为 False 表示这样的停靠点仍可进行分配,但是为停靠点提供服务的成本根据一个函数进行加权得到,该函数基于与路径区的欧氏距离。实际上,这意味着,随着软性路径区到停靠点的直线距离的增加,停靠点被分配给路径的可能性将会降低。

注注:

  • 由于在测量路径区与停靠点之间的距离时使用欧氏距离,所以不需要基于网络的距离属性。
  • 即使与硬性路径区关联的路径只能为路径区内的停靠点提供服务,其他路径仍可进入同一路径区并为其中的停靠点提供服务。这是因为路径区只限制路径,而不限制停靠点。(如果要将某个区域内的所有停靠点专门分配给某条路径,请不要使用路径区;而应选择该区域中的各个停靠点,并将停靠点的 RouteName 字段更改为相应的路径,然后将它们的 AssignmentRule 字段设置为“保留路径”。)

路径种子点类

该网络分析类存储给定多路径配送 (VRP) 分析图层的路径种子点。路径种子点用于为路径指定基于点的聚类。通常,停靠点离路径的种子点越近,就越有可能被分配给该路径,前提是满足其他条件(例如,特点和容量)。对停靠点进行聚类可能会导致路径覆盖较小的范围,且与其他路径的相交情况不如聚类前,但是解决方案的总体成本可能会增加。您可能希望使用种子点来使驾驶员在通常相邻的区域或他们较熟悉的地区内工作;如果划分好的路径更易于您组织进行管理,您也许希望使用这样的路径。

以下是使用路径种子点时要考虑的几项规则和选择:

  • 路径可拥有预分配的路径种子点,种子点可由 VRP 求解程序计算得到。
  • 如果在分析中使用路径种子点,则无法使用路径区。
  • 如果使用路径种子点,那么必须将一个路径种子点分配给一条路径。
  • 路径种子点类型不能混用;网络分析类包含的种子点要么全部为动态种子点,要么全部为静态种子点。

路径种子点属于点要素;不过它们并不属于网络位置。因此,它们没有网络位置字段。

路径种子点类

路径种子点的输入字段

输入字段

描述

ObjectID

系统管理的 ID 字段。

RouteName

该种子点所应用到的路径的名称。每条路径最多只能有一个路径种子点。该字段不能包含空值,而且是“路径”类中 Name 字段的外键。路径对象必须事先存在,才会显示在 RouteName 下拉列表中。

SeedPointType

种子点的类型。该字段受值的属性域约束,可能的值有静态动态。该字段的默认值为“静态”。

使用静态种子点时,需指定路径种子点的位置,求解程序会尝试在该种子点所在位置周围对路径进行聚类。使用动态种子点时,需在地图上的任意位置添加种子点,停靠点会在求解过程中进行聚类,然后种子点会重新定位到路径停靠点的质心

路径种子点的输入/输出字段

输入/输出字段

描述

Shape

该输入字段用于指示路径种子点的位置。静态种子点的输入点形状在整个求解过程中保持不变。

另一方面,动态种子点的输入形状会被忽略,求解程序会在求解过程中修改 Shape 字段,以显示动态种子点的新位置。

注注:

欧氏距离用于测量路径种子点与停靠点之间的距离;因此,不需要图层属性中基于网络的距离属性

路径更新类

“路径更新”类指定多路径配送 (VRP) 分析的路径要重新装载和卸载正在配送或接收的货物而可访问的中间站点。

特别地,路径更新分析对象会将路径对象与站点对象相关联。这一关系表明路径可在关联的站点处进行更新(重新装载或卸载)。

在某些行业中,每条路径均由一段或多段行程组成,在这些行程中,车辆以满载状态进行配送或接收,并配送多次。路径更新可用于为以下情景建立模型:车辆在起始站点接收满载的配送量、到各停靠点提供服务、返回到该站点更新配送量,然后继续为更多停靠点提供服务。例如,在丙烷气配送中,车辆可能会在气罐几乎或完全排空前需要多次交货,然后访问某个加气点,并继续进行配送。

以下是使用路径更新时要考虑的几项规则和选择:

  • 重新装货/卸货点(或更新位置)可以与起始站点或终止站点不同。
  • 每条路径都可具有一个或多个预先确定的更新位置。
  • 一条路径可能会多次使用某个更新位置。
  • 如果路径上存在几个可能的更新位置,则求解程序会选择最近的可用更新位置。

路径更新属性

路径更新的输入字段

输入字段

描述

ObjectID

系统管理的 ID 字段。

DepotName

进行该更新时所在站点的名称。该字段不能包含空值,而且是“站点”要素图层中 Name 字段的外键。站点对象必须事先存在,才会显示在 DepotName 下拉列表中。

RouteName

该更新所应用到的路径的名称。该字段不能包含空值,而且是“路径”要素图层中 Name 字段的外键。路径对象必须事先存在,才会显示在 RouteName 下拉列表中。

ServiceTime

更新的服务时间。该字段可以包含空值;空值表示没有服务时间。该服务时间的单位由分析图层的“时间字段单位”属性指定。

注注:

在更新站点处装载车辆所花费的时间可能取决于车辆大小和车辆装载量。不过,路径更新的服务时间是固定值,并且不考虑实际载荷。因此,为更新服务时间指定的值应与货车满载量、平均装载量或所选的其他估计时间相对应。

路径更新的输入/输出字段

输入/输出字段

描述

Sequences

作为输入字段时,该字段用来指定一个以空格分隔且包含对更新站点进行访问的 sequence 值的字符串。该字段可包含空值,并且用于将访问预分配给更新站点。

作为输出字段时,求解程序可在该字段中修改和存储 sequence 值。执行求解后,该字段会包含对相应路径上的该更新站点进行访问的 sequence 值。如果在某条路径上的该站点处进行了多次更新访问,则以空格分隔各 sequence 值。路径的输出 sequence 值在站点访问、停靠点和休息点之间共享;从 1 开始(在起始站点处);并且是连续的。所以,如果路径从某个站点处开始、访问了两个停靠点、进行了一次更新访问,然后继续,那么该更新处的 sequence 值为 4。

特点类

该表列出受路径支持且为停靠点所需的特点。仅当路径支持某停靠点所需的所有特点时,该路径才能为此停靠点提供服务。

停靠点可能需要一位具有多种特定技能的技术人员或者一辆具有特定功能的货车。首先,通过将这些技能和功能等添加到“特点”类中来为它们建立模型。接下来,将路径所支持的特点添加到路径的 SpecialtyNames 属性中。最后,将停靠点所需的特点添加到停靠点的 SpecialtyNames 属性中。对 VRP 分析进行求解时,需要某些特点的停靠点会与提供这些特点的路径进行匹配。

特点属性

特点的输入字段

输入字段

描述

ObjectID

系统管理的 ID 字段。

名称

网络分析对象的名称。

该字段属于主键,并用作“停靠点”和“路径”要素图层中对特点进行引用的外键。

特点名称必须唯一且不能为空。它们也不能包含空格。例如,应将高级技术人员这一特点输入为 SeniorTechnician

要求特点名称不能包含空格是很有必要的,因为与多个特点关联的停靠点和路径在列出各个特点名称时会以空格进行分隔;例如 SeniorTechnician Lift。

描述

有关网络分析对象的描述性信息。描述性信息可以包含任何文本信息,对唯一性没有任何限制。

停靠点对类

该网络分析类是一个记录表,用来为配送停靠点和接收停靠点进行配对,以使它们能够由同一路径提供服务。

有时,要求停靠点的接收和配送是成对的。例如,对于快递公司,在配送文档的过程中可能会涉及到两个停靠点:第一次停靠是在源处接收文档,第二次停靠是在目的地递交文档。这些相关的停靠点将按照相应的顺序分配给同一路径。不得只将其中一个停靠点分配给路径:要么将两个停靠点都分配给同一条路径,要么都不分配。

对包裹在车辆上停留的时间可能存在限制;例如,必须在两个小时内将血样从医生办公室运送到实验室。

某些情况可能需要两对停靠点。例如,假设您需要将一位老人从她家送到医院看医生,然后再将她送回家。从她家到医院的行驶过程会形成一对停靠点,其中包含到达医院所需的时间;而从医院返回家中的行驶过程会形成另一对停靠点,其中包含所需的搭送时间。

停靠点对属性

停靠点对的输入字段

输入字段

描述

ObjectID

系统管理的 ID 字段。

FirstOrderName

停靠点对中第一个停靠点的名称。该字段是“停靠点”要素图层中 Name 字段的外键。停靠点对象必须事先存在,才会显示在 FirstOrderName 下拉列表中。

SecondOrderName

停靠点对中第二个停靠点的名称。该字段是“停靠点”要素图层中 Name 字段的外键。停靠点对象必须事先存在,才会显示在 SecondOrderName 下拉列表中。

停靠点对中的第一个停靠点必须为接收停靠点;也就是说,它的 DeliveryQuantities 字段值为空。停靠点对中的第二个停靠点必须为配送停靠点;也就是说,它的 PickupQuantities 字段值为空。第一个停靠点处的接收量必须与第二个停靠点处的配送量一致。有一种特殊情况是,在未使用容量时,两个停靠点的数量可能都为零。

注注:

停靠点数量在站点处不进行装载或卸载。

MaxTransitTime

停靠点对的最长行驶时间。行驶时间是指离开第一个停靠点至到达第二个停靠点的持续时间。该约束限制两个停靠点之间的车上时间(或行驶时间)。车辆携带人员或易腐烂货物时,行驶时间通常比携带包裹或不易腐烂的货物的时间要短。该字段可以包含空值;空值表示对行驶时间没有约束。

该字段值的单位由分析图层的“时间字段单位”属性指定。

求解程序可对额外行驶时间(相对于停靠点对之间的直线行驶时间来测量)进行追踪和加权。因此,您可指示 VRP 求解程序采用以下三种方法之一:(1) 不考虑车队行程成本的增加,将总的额外行驶时间缩至最短;(2) 找出一种可平衡总冲突时间和行程成本的解决方案;以及 (3) 不考虑总的额外行驶时间,而将车队的行程成本降至最低。通过为分析图层的超出行驶时间设置指定重要性级别,实际上就是在这三种方法中选择一种方法。无论重要性级别如何,只要超过 MaxTransitTime,求解程序就会返回错误。

点障碍、线障碍和多边形障碍

障碍用于临时限制网络各部分、向网络各部分添加阻抗以及调整网络各部分的阻抗大小。创建新网络分析图层时,“障碍”类为空。只有将对象添加到该类后,它们才不会为空 - 但不需要添加障碍。

障碍可用于所有网络分析图层;因此,将在一个单独的主题中对其进行介绍。

了解有关障碍的详细信息

多路径配送 (VRP) 分析参数

可在分析图层的图层属性 对话框中设置分析参数。可通过不同的方式来访问该对话框:

了解有关打开网络分析“图层属性”对话框的信息

“分析设置”选项卡

以下各小节列出了可为分析图层设置的参数。这些参数可在分析图层的图层属性 对话框的分析设置选项卡中找到。

“分析设置”选项卡
多路径配送 (VRP) 分析图层的“分析设置”

时间属性

用于定义沿网络元素的遍历时间的时间成本属性。时间成本属性是必选项,因为多路径配送 (VRP) 求解程序会将时间缩至最短。

了解有关成本属性的详细信息

距离属性

用于定义沿网络元素的长度的距离成本属性。距离成本属性是可选的。

了解有关成本属性的详细信息

默认日期

指定了时间但未指定日期的时间字段值的隐式日期。如果某个停靠点的时间字段(如 TimeWindowStart1)只有时间值,则假定日期是默认日期属性指定的日期。例如,如果停靠点的 TimeWindowStart1 值为 9:00 AM,默认日期为 2011 年 3 月 6 日,则该字段的完整时间值为 2011 年 3 月 6 日 9:00 a.m.。如果更改了默认日期设置,则未指定日期的所有时间字段值的隐式日期将变为新默认日期。如果时间字段值已经包含时间和特定日期,则默认日期对这些时间字段值不起作用。

如果网络数据集包含历史流量数据,则分析结果可根据此处指定的日期发生相应的变化。例如,路径在星期日 8:00 a.m.(此时交通不太拥堵)开始与在星期一 8:00 a.m.(交通高峰时段)开始相比,星期一的路径会花费更长的时间。此外,最佳路径会根据交通状况发生相应的变化。

可以选择输入浮动日期(星期)或日历日期(具体日期)。对于日历日期,您需要输入年、月和日。对于浮动日期,可以选择今天或一周中的任意一天(星期日星期六)。浮动日期用于配置可以重复使用的分析图层,而无需记得要更改日期。

使用流量数据时,浮动日期特别有用。例如,如果选择星期今天设置,则求解程序将基于当日(通过计算机操作系统确定)历史流量生成结果。例如,如果返回第二天(5 月 5 日),并再次求解同一个分析图层,则将基于该日期(5 月 5 日)的历史流量得出解。同样,如果选择星期属性中的星期一,然后进行求解,则将基于从当日到下一个星期一的历史流量得出解。但是,如果今天是“星期一”,则将使用今天的历史流量数据得出解。

了解有关历史流量数据的详细信息

容量计数

描述相关车辆限制所需的容量限制维度数。在订单配送实例中,根据物理限制和法律限制,每台车辆的可装载重量和体积可能同时受到限制。这种情况下,如果要追踪停靠点处的体积和重量,可以使用这两种容量来避免车辆超载。此时,容量计数为 2(体积和重量)。因问题而异,可能需要追踪不同类型或数目的容量。容量字段(“停靠点”类的 DeliveryQuantities 和 PickupQuantities 以及“路径”类的 Capacities)中输入的容量是以空格分隔的数字字符串,这些字符串最多可包含“容量计数”中指定的数值个数。每种容量维度都应以所有容量字段值在相同 VRP 分析图层中的相同位置顺序显示。容量本身没有名称,所以,为避免意外调换容量的维度,请确保始终按相同的顺序为所有容量字段值输入以空格分隔的容量列表。

时间字段单位

分析图层的子图层和表(网络分析类)的时态字段所用的时间单位。此单位不必与时间成本属性的单位相同。

距离字段单位

分析图层的子图层和表(网络分析类)的距离字段所用的距离单位。此单位不必与可选距离成本属性的单位相同。

交汇点的 U 形转弯

ArcGIS Network Analyst 允许在任何位置、仅在死角(或死胡同 (cul-de-sac))或者仅在交点和死角处出现 U 形转弯,也可以不允许在任何位置出现 U 形转弯。允许 U 形转弯表示路径可以在交汇点处转向并沿同一街道往回行驶。

了解有关 U 形转弯策略的信息

输出 Shape 类型

可以采用四种方法之一表示分析输出的路径要素。

  • 真实形状提供了生成路径的精确形状。

    路径的真实形状

  • 具有测量值的实际形状提供了生成路径的精确形状。而且,输出还包括线性参考的路径测量值。测量值从第一个停靠点增加并记录累积阻抗。

    了解有关线性参考的详细信息

  • 直线会在两个停靠点之间生成一条直线。

    路径的直线形状

  • 当输出 shape 类型设置为时,将不返回任何形状。

在以上所有情况下,解决方案中基于时间和基于距离的成本均相同,而且“路径”要素图层属性也相同;唯一的不同之处在于“路径”输出的形状或者是否自动建立线性参考。

应用等级

如果网络数据集具有等级属性,则可在分析时使用该等级。使用等级的结果是,求解程序更偏好高阶边而不是低阶边。分等级求解的速度更快,并且可以用于模拟驾驶员对在高速公路(而非地方道路)上行驶的偏好,即使这意味着行程更远。但是,如果不使用等级,则会为网络数据集生成精确的路线。

了解有关使用等级安排路线的详细信息

约束条件

可以选择在求解分析时应遵守的约束属性。为必须遵守单行道规则的车辆(例如,非紧急车辆)查找解决方案时,应使用诸如“单向”等约束条件。如果网络数据集包含其他约束属性(如重量限制或高度限制),也可以使用这些约束条件。

了解有关约束条件的详细信息

约束属性也可以与动态属性结合使用。例如,如果车辆的高度高于隧道的高度,则可对边进行约束。

了解有关使用参数化属性安排路线的详细信息

方向

通过“方向”属性,可以设置距离的显示单位,也可根据需要设置时间的显示单位。此外,还可以选择生成路线后自动打开指示。(如果未选择自动显示指示,则可单击方向窗口按钮 指示窗口 来显示指示。)

“高级设置”选项卡

VRP 图层的“高级设置”选项卡

图层属性 对话框的高级设置选项卡显示多路径配送 (VRP) 分析图层的以下属性。在此处指定的设置会影响求解程序在处理路径的时间窗冲突和停靠点对的额外行驶时间时的优先级。可指定的值有。重要性越高,求解程序就会越尽力减少或消除关联的时间窗冲突或额外行驶时间。

时间窗冲突

时间窗冲突:该属性可用于评定遵循时间窗且不引起冲突的重要性。如果路径在时间窗关闭后才到达停靠点、站点或休息点,将会产生时间窗冲突。该冲突是时间窗关闭与路径到达时间之间的时间间隔。

时间窗冲突的示意图

VRP 解决方案可根据您为时间窗冲突属性选择的值而做出相应改变。下面的列表介绍了这些值的含义以及所生成的 VRP 解决方案如何发生变化:

  • - 求解程序尝试找到一种最小化时间窗冲突的解决方案(以增加总体行驶时间为代价)。如果对您而言按时到达停靠点要比最小化总体解决方案成本更加重要,请选择“高”。您可能会在以下情况下选择“高”:您要在自己的停靠点会见客户,但不想因为迟到给客户带来不便(另一种方法是使用根本不会出现冲突的硬性时间窗)。

    假设还要考虑多路径配送 (VRP) 的其他约束,可能无法在它们的时间窗内访问所有停靠点。在这种情况下,即使选择“高”设置也可能会产生冲突。

  • - 这是默认设置。求解程序在满足时间窗和减少总体解决方案成本之间寻求一种平衡。

  • - 求解程序尝试找到一种最小化总体行驶时间的解决方案(不考虑时间窗)。如果减少您的总体解决方案成本要比满足时间窗更重要,请选择“低”。如果积压的服务请求逐渐增多,则可以使用此设置。如果为了在当日内为更多的停靠点提供服务并减少积压的订单,则可选择“低”,即使车队迟到会为客户带来不便。

下面的两个图显示的是同一组停靠点和站点;然而,路径并不相同,这是因为使用的“时间窗冲突”设置不同。左图显示的是在“时间窗冲突”的重要性设置为“低”时生成的路径。路径虽短但存在时间窗冲突。如果设置为“高”,则路径会满足所有时间窗的要求,但是花费的时间会更长,因为它会优先为带有时间窗的停靠点提供服务。

低重要性
低重要性
高重要性
高重要性

额外行驶时间

该属性可用于评定减少额外行驶时间的重要性。额外行驶时间是指超过配对停靠点间直线行驶所需时间的时间。额外时间是由于在配对停靠点的访问期间进行休息或者行驶至其他停靠点或站点而导致的。

计算额外行驶时间
计算额外行驶时间

VRP 解决方案可根据您选择的超出行驶时间值而做出相应改变。下面的列表介绍了这些值的含义以及所生成的 VRP 解决方案如何发生变化:

  • - 求解程序尝试找到一种缩短停靠点对之间额外行驶时间的解决方案(以增加总体行驶成本为代价)。如果您正在配对停靠点间运载乘客并且想缩短他们的乘车时间,则这种情况适合使用此设置。这是出租车服务的特征。
  • - 这是默认设置。求解程序在缩短额外行驶时间和减少总体解决方案成本之间寻求一种平衡。
  • - 求解程序尝试找到一种最小化总体解决方案成本的解决方案(不考虑额外行驶时间)。此设置通常应用于快递服务。由于快递运输的是包裹而不是人员,因此无需担心行驶时间。使用“低”时,邮递员可以按照最适合的顺序为配对停靠点提供服务,并且使总体解决方案成本最低。

下面的两个图显示的是同一组停靠点和站点;然而,路径并不相同,这是因为使用的“超出行驶时间”设置不同。左图显示的是在“超出行驶时间”的重要性设置为“低”时生成的路径。整条路径很短,但从第一个停靠点到配对停靠点(机场)的行驶时间很长。如果重要性设置为“高”,对于右侧的停靠点来说,路径会在保持到飞机场的行驶时间不变的情况下,缩短从第一个停靠点到飞机场的时间;不过,路径的总体成本会增加。

低重要性
低重要性(快递)
高重要性(出租车)

网络位置选项卡

网络位置选项卡上的参数用于查找网络位置并为其属性赋值。

了解有关网络位置的详细信息

对多路径配送 (VRP) 的结果进行求解和解释

在创建多路径配送 (VRP) 分析图层、填充所需的网络分析对象以及设置相应的分析属性后,可通过单击 Network Analyst 工具条上的求解按钮 求解 来获得多路径配送 (VRP) 分析图层的解决方案。

求解之后,如果输出 Shape 类型属性设置为实际形状,则多路径配送 (VRP) 求解程序会沿着网络来绘制连接各条路径的起始站点、停靠点、更新站点和终止站点的线。

Network Analyst 窗口还会更新“停靠点”类,以将所有停靠点按照作为它们分配目标的路径进行分组。“站点访问”类会进行更新,以显示各条路径的起始站点、终止站点和更新站点。

求解过程中,多路径配送 (VRP) 求解程序会忽略 AssignmentRule 字段值设为“排除”的所有路径以及 AssignmentRule 字段值设为“排除”的所有停靠点。

然后,多路径配送 (VRP) 求解程序将时间属性用作阻抗,并将距离属性(如果已指定)用作累积属性,从而计算一个在内部进行管理的停靠点与站点位置之间的起点-目的地 (OD) 成本矩阵。

了解关于 OD 成本矩阵分析的内容

VRP 求解程序会创建一个由预分配的停靠点、休息点和更新访问组成的初始解决方案,前提是这些网络分析对象均被预分配给路径。如果使用这种预分配找不到有效的初始解决方案(也就是说,某些约束是存在冲突的),则求解过程将失败。

虽然存在未安排路径的停靠点,但 VRP 求解程序也会尝试将其中成本最低的停靠点插入到最适合的路径中。如果重新排序可以改善解决方案,求解程序就会尝试对分配给路径的停靠点进行重新排序,但不会移动 AssignmentRule 字段值设为“保留路径和相对顺序”的停靠点。

成功为所有可能的停靠点指定路径后,多路径配送 (VRP) 求解程序将输出网络分析对象的相应输出字段中的结果。如果路径无法到达某些停靠点,则将约束冲突输出到“停靠点”要素图层中的 ViolatedConstraints 字段。如果解决方案中未使用某路径,则其输出字段会设为空。

了解有关停靠点的约束冲突和路径的约束冲突的信息

解释多路径配送 (VRP) 分析的结果

成功求解多路径配送 (VRP) 分析图层后,可以读取“休息点”表、“站点访问”要素图层、“停靠点”要素图层和“路径”要素图层的输入字段和输出字段,从而汇总各条路径的路径安排解决方案。对于各条路径,获得路径走行路线的方法是,按 RouteName 进行搜索,然后查看“休息点”、“站点访问”和“停靠点”中的 Sequence 值。您可生成指示来编译相似的走行路线。“路径”要素图层可提供经过计算后的各条路径的汇总信息。

相关主题


7/10/2012