需要 Network Analyst 许可。
车辆配送 (VRP) 分析图层可用于存储给定车辆配送 (VRP) 问题的输入、参数和结果。 创建完成后,图层会以复合图层的形式显示在内容窗口中,且图层名为“车辆配送”。如果地图文档中已存在同名的车辆配送图层,则会顺次命名为“车辆配送 1”、“车辆配送 2”,依此类推。 车辆配送分析图层由 13 个网络分析类组成,其中包括 9 个要素图层(停靠点、站点、路径、休息点、路径区、站点访问、点障碍、线障碍和面障碍)和 4 个表(路径特殊要求、停靠点特殊要求、停靠点对和货物补给点)。 其中包含了求解车辆配送时要使用的所有网络分析对象。 各种网络分析类之间的关系如下面的文档所示:
要支持启动 ArcGIS Pro 2.6 的 VRP 工作流,已引入了一些方案更改。 要了解详细信息,请参阅 VRP 方案更改。
注:
当参考 ArcGIS.com 或 VRP 图层网络数据集的门户时,如果求解失败,则将仅更新冲突的约束字段。 所有其他字段的输入和输出将保持不变。
停靠点
Orders 要素类中所存储的停靠点是给定车辆配送分析图层的一部分。 停靠点可以是为客户配送、从客户处接收或其他类型的工作。 例如配送家具、从饭店回收油脂或监督访问。
如果停靠点具有需要接收或配送的物品,这些物品通常可能会包含一种或多种容量属性,比方说,可以是基于任意形式的测量值或测量值的组合,如,重量、体积或单位数量。 而某些停靠(如,监督访问)则可能不具有任何关联的配送或接收。
停靠点可具备服务时间,即在该停靠点完成工作所需的时间。 例如,配送货车可能需要 20 分钟的服务时间才能卸载一件家具并将它搬运到屋内。 各停靠点的服务时间可以相同,也可以不同。
停靠点可具有一个或两个时间窗,用来表明允许车辆访问停靠点的时段。 例如,只允许食品批发的配送货车在上午 8:00 到 10:00 之间或者下午 2:00 到 4:00 之间到达饭店,因为在任何其他时间到达都会打乱饭店的经营。
VRP 求解程序无法解决持续时间超过一年的问题。 因此,所有服务时间和时间窗口需小于一年。
停靠点还可与特殊需求相关联。 也就是说,某停靠点可能需要一位具有某种特定技能的技术人员(例如,电气工程师)或者一辆具有特殊功能(动力升降装置)的货车。 只有具有这种特性的路径才会分配给停靠点。
停靠点:输入字段
输入字段 | 描述 |
---|---|
ObjectID | 系统管理的 ID 字段。 |
Shape | 指示网络分析对象地理位置的几何字段。 |
Name | 网络分析对象的名称。 名称必须唯一。 该字段在这里是一个主键,同时作为外键来引用“停靠点对”和“停靠点特殊要求”表中的停靠点。 停靠点名称不区分大小写。即使停靠点不参与求解运算,停靠点名称也不能为空。 |
Description | 有关停靠点的描述性信息。 它可以包含有关停靠点的任何文本信息,并且不存在唯一性限制。 比如,您可能想在 Name 字段中存储客户的 ID 号,而在 Description 字段中存储客户的真实名称或地址。 |
ServiceTime | 该属性指定了路径访问网络位置所花费的时间;也就是说,它存储了网络位置的阻抗值。 零值或空值指示网络位置不需要任何服务时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
TimeWindowStart | 网络位置的第一时间窗开始时间。 该字段可以包含空值;空值表示没有开始时间。 (有关详细信息,请参阅此属性表下方的注释。) |
TimeWindowEnd | 网络位置的第一时间窗结束时间。 该字段可以包含空值;空值表示没有结束时间。 (有关详细信息,请参阅此属性表下方的注释。) |
TimeWindowStart2 | 网络位置的第二时间窗开始时间。 该字段可以包含空值;空值表示没有第二时间窗。 如果第一时间窗为空,正如 TimeWindowStart 和 TimeWindowEnd 字段所指定的那样,则第二时间窗也必须为空。 如果两个时间窗都为非空,则二者不可以重叠。 而且,第二个时间窗必须在第一个之后出现。 (有关详细信息,请参阅此属性表下方的注释。) |
TimeWindowEnd2 | 网络位置的第二时间窗结束时间。 该字段可以包含空值。 如果 TimeWindowStart2 和 TimeWindowEnd2 均为空,则不存在第二时间窗。 如果 TimeWindowStart2 不为空,但是 TimeWindowEnd2 为空,则存在具有开始时间但没有结束时间的第二时间窗。 这种情况是有效的。 (有关详细信息,请参阅此属性表下方的注释。) |
MaxViolationTime | 如果到达时间出现在时间窗结束后,则认为与时间窗发生了冲突。 该字段为停靠点的第一个时间窗指定允许的最长冲突时间。 它可包含零值,但不能包含负值。 零值表示停靠点的第一个时间窗不能接受时间窗冲突;即,第一个时间窗是硬性的。 另一方面,空值表示对允许的冲突时间没有限制。 非零值指定最长延迟时间;例如,路径可在第一个时间窗结束之后最多 30 分钟内到达停靠点。 对于停靠点,如果存在两个时间窗,则第一个时间窗将始终被视为 MaxViolationTime 为零的硬性时间窗。 该字段值的单位由分析图层的“时间字段单位”属性指定。 时间窗冲突可通过求解程序进行追踪和加权。 因此,您可指示 VRP 求解程序采用以下三种方法之一:
通过为分析图层的时间窗冲突设置指定重要性级别,实际上就是在这三种方法中选择一种方法。 不过,无论在什么情况下,只要超过了为 MaxViolationTime 设置的值,求解程序就会返回错误。 |
MaxViolationTime2 | 停靠点的第二个时间窗允许的最长冲突时间。 该字段与 MaxViolationTime 字段相似。 |
InboundArriveTime | 定义要配送到停靠点的项在起始站点准备就绪的时间。 仅当入站到达时间早于路径的最晚开始时间值时,才能将该停靠点分配给此路径;这样,在项已准备就绪,可以进行装载之前,路径无法离开站点。 此字段有助于对涉及入站中转的情景进行建模。 例如,停靠点的某项作业需要一些特殊材料,但该站点当前并不具备这些材料。 现在正从另一位置运送这些材料,预计将在上午 11:00 到达该站点。为了确保不会将在货物到达之前离开的路径分配给此停靠点,停靠点的入站到达时间被设置为上午 11:00。 这些特殊材料在上午 11:00 到达后会被装载到车辆上,随后车辆离开该站点,驶向指派的停靠点。 注:
|
OutboundDepartTime | 定义要在停靠点接收的货物必须到达终止站点的时间。 仅当路径能够访问停靠点且到达终止站点的时间早于指定的出站离开时间时,才能将该停靠点分配给路径。 此字段有助于对涉及出站中转的情景进行建模。 例如,货运公司派出运货车去接收停靠点的包裹,并将其运送至采用其他设施的转运站点,然后将其送往最终目的地。 每天下午 3:00 会有一辆半挂车停靠在该站点,接收高优先级包裹并将其直接送往中转站。 为了避免将这些高优先级包裹的配送延迟至第二天下午 3:00 的行程,货运公司尝试让运货车在下午 3:00 之前接收停靠点的高优先级包裹,同时在该截止时间之前将其运送至中转站。 这完全可以通过将出站离开时间设置为下午 3:00 来实现。 注:
|
| 配送量。 可以按任何度量单位(如重量、体积或数量)来指定配送量。 如果有多个配送量,则根据需要使用 DeliveryQuantity_1 到 DeliveryQuantity_9 字段进行指定。 |
| 接收的大小。 可以按任何度量单位(如重量、体积或数量)来指定接收量。 如果存在多个接收量,则根据需要使用 PickupQuantity_1 到 PickupQuantity_9 字段进行指定。 |
Revenue | 解决方案中包含停靠点时产生的收入。 该字段可包含空值(空值表示收入为零),但是它不能具有负值。 Revenue 会包含在优化目标函数值的过程中,但并不属于解决方案的运行成本。 也就是说,路径类中的 TotalCost 字段决不会在输出中包含收入;不过,通过收入可对服务停靠点的相对重要性进行加权。 |
AssignmentRule | 该字段指定将停靠点分配给路径时所要遵循的规则。 该字段受到下面列出值的属性域的约束(括号中是它们的编码值)。
该字段不能包含空值。 |
网络位置字段
|
结合使用这些属性可描述网络中对象所在的点。 |
CurbApproach | CurbApproach 属性指定了车辆到达和离开网络位置的方向。 有四种选择(其编码值显示在圆括号中):
|
注:
时间窗仅说明车辆何时可以到达停靠点,并不说明服务时间必须何时结束。 为了考虑服务时间并在时间窗关闭前离开,请从 TimeWindowEnd 字段的值中减去 ServiceTime 的值。
可以使用创建车辆配送分析图层地理分析工具上的 time_zone_for_time_fields 参数指定时间窗字段的时区。
时间窗字段可以包含“仅时间”值或“日期和时间”值。 如果时间字段(例如 TimeWindowStart)是一个只具有时间的值(例如,8:00 a.m.),则假定日期为分析图层的默认日期属性所指定的日期。 使用“日期和时间”值(例如 7/11/2010 8:00 a.m.)允许您设置持续多天的时间窗。
当任一时间窗字段包含当时的日期时,将忽略默认日期。 为避免在这种情况下出现错误,请将 Depots、Routes、Orders 和 Breaks 中所有时间窗的格式设置为也包含日期和时间。
如果正在使用流量数据,则网络位置的时间字段始终会引用与网络位置所在的边相同的时区。
停靠点:输入/输出字段
输入/输出字段 | 描述 |
---|---|
RouteName |
向其分配停靠点的路径的名称。 该输入字段用于将停靠点预先分配给特定的路径。 它可包含空值,空值表示停靠点未预先分配给任何路径,而求解程序会为停靠点确定可能的最佳路径分配。 如果将该字段设为空,则顺序字段也必须设为空。 RouteName 字段是“路径”类中 Name 字段的外键。 路径对象必须事先存在,才会显示在 RouteName 列表中。 完成求解操作后,如果已为停靠点分配路径,则 RouteName 字段将包含向其分配停靠点的路径的名称。 |
Sequence | 该字段表示停靠点在其分配的路径上的顺序。 该输入字段用于指定停靠点在路径上的相对顺序。 该字段可包含空值,空值表示停靠点可位于路径上的任意位置。 RouteName 值为空时,该字段值才能为空。 输入顺序值应为非负数值且对于各路径均唯一(在站点访问、停靠点和休息点之间分配),但是不需要从 0 开始,也不需要连续。 执行求解操作后,Sequence 字段中会包含停靠点在其分配的路径上的顺序值。 路径的输出顺序值在货物补给点、停靠点和休息点之间分配;从 1 开始(在起始站点处);并且是连续的。 所以,安排了路径的停靠点可能的最小输出顺序值为 2,因为路径始终从站点处开始。 |
Status |
指示该点相对于其在网络上的位置以及分析结果的状态。可能的值如下:
如果使用了时间窗,并且提前或延后到达,则值将更改为时间窗冲突 (6)。 |
注:
如果停靠点的 AssignmentRule 字段值为“排除”,那么 Status、RouteName 和 Sequence 字段的输入值在求解操作过程中不会发生改变。
停靠点:输出字段
输出字段 | 描述 |
---|---|
| 这些字段包含约束冲突的汇总,并在求解操作之后进行设置。 每个字段将包含一个冲突。 如果停靠点有多个违规,则将使用下一个 ViolatedConstraint_# 字段。
注:未安排路径的停靠点的冲突的约束字段值可能会描述其所有冲突,也可能不描述所有冲突。 如果冲突非常严重,从而导致以后直接不考虑停靠点,那么求解程序就会照此执行,这样便会防止该停靠点出现任何其他冲突。 如果遇到不会自动阻止解决方案生成的冲突,那么该冲突会被记录到冲突的约束字段中,而求解程序将继续考虑该停靠点。 与上述类似的任何其他冲突都会被添加到冲突的约束字段中,直到 (a) 求解程序找到了可提前停止对特定停靠点进行求解的冲突,或 (b) 求解程序找到了问题的总体解决方案。 |
FromPrevTravelTime | 从路径上的前一个访问位置到该停靠点的行驶时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
FromPrevDistance | 从路径上的前一个访问位置到该停靠点的行驶距离。 该字段值的单位由分析图层的“距离字段单位”属性指定。 如果未在分析参数中指定“距离属性”这一属性,则此字段为空。 |
CumulTravelTime | 路径到达停靠点时的累积行驶时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
CumulDistance | 路径到达停靠点时的累积行驶距离。 该字段值的单位由分析图层的“距离字段单位”属性指定。 如果未在分析参数中指定“距离属性”这一属性,则此字段为空。 |
CumulTime | 路径到达该停靠点(包括在停靠点停留)的累积持续时间。 累积持续时间包括行驶时间以及在停靠点的服务和等待时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
ArriveCurbApproach | 指示在车辆到达网络位置时停靠点位于车辆哪一侧。 如果将网络位置的 CurbApproach 值设置为“车辆的右侧”,则求解后的 ArriveCurbApproach 是“车辆的右侧”。 但是,如果将 CurbApproach 值设置为“车辆的任意一侧”或“禁止 U 形转弯”,则将“车辆的右侧”还是“车辆的左侧”作为 ArriveCurbApproach 的值取决于使用哪个值可生成最短路径。 |
DepartCurbApproach | 指示在车辆离开网络位置时停靠点位于车辆哪一侧。 如果将网络位置的 CurbApproach 值设置为“车辆的右侧”,则求解后的 DepartCurbApproach 是“车辆的右侧”。 但是,如果将 CurbApproach 值设置为“车辆的任意一侧”或“禁止 U 形转弯”,则将“车辆的右侧”还是“车辆的左侧”作为 DepartCurbApproach 的值取决于使用哪个值可生成最短路径。 |
ArriveTime | 指示到达停靠点时的日期和时间值。 路径到达停靠点的时间可能在停靠点的某个时间窗开始之前,在这种情况下,停靠点处存在一个等待时间。 如果停靠点采用软性时间窗,则路径到达该停靠点的时间还可能在某个时间窗结束之后,在这种情况下,停靠点处存在一个冲突时间。 使用跨越多个时区的流量数据时,该时刻的时区将采用停靠点所处网络元素所在的时区。 |
DepartTime | 指示离开停靠点时的日期和时间值。 路径在完成服务后离开停靠点。 使用跨越多个时区的流量数据时,该时刻的时区将采用停靠点所处网络元素所在的时区。 |
ArriveTimeUTC | 指示到达停靠点时的日期和时间值,以协调世界时间 (UTC) 给出。 |
DepartTimeUTC | 指示离开停靠点时的日期和时间值,以协调世界时间 (UTC) 给出。 路径在完成服务后离开停靠点。 |
WaitTime | 在停靠点的等待时间或短暂停留时间。 例如,如果路径必须在停靠点等待时间窗打开,那么您会获得一个等待时间值。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
ViolationTime | 停靠点的时间窗结束与路径车辆到达之间的时间间隔。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
CumulWaitTime | 从路径起始点到停靠点的累积等待时间(包括在停靠点的等待时间)。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
CumulViolationTime | 从路径起始点到停靠点的累积冲突时间(包括在停靠点的冲突时间)。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
站点
Depots 要素类存储的站点是给定车辆配送分析图层的一部分。 站点是指车辆在工作时间开始时离开并在工作时间结束后返回的位置。 站点是车辆装货(对于配送)或卸货(对于接收)的位置。 在某些情况下,站点还可以作为一个货物补给或货物更新的位置,车辆可以在此处卸货或重新装货,然后继续进行配送和接收。 站点具有打开时间和关闭时间,这由硬性时间窗指定。 车辆不能在该时间窗之外到达站点。
站点:输入字段
输入字段 | 描述 |
---|---|
ObjectID | 系统管理的 ID 字段。 |
Shape | 指示网络分析对象地理位置的几何字段。 |
Name | 网络分析对象的名称。 该字段是主键,并用作“路径”要素图层、“货物补给点”表和“站点访问”要素图层中对站点进行引用的外键。 站点名称不区分大小写,但必须非空且唯一。 |
Description | 有关网络分析对象的描述性信息。 描述性信息可以包含任何文本信息,对唯一性没有任何限制。 也许您希望记录站点所在的区域或者站点的地址以及电话号码;那么您可在此处而不是 Name 字段中输入此信息。 |
TimeWindowStart | 网络位置的第一时间窗开始时间。 该字段可以包含空值;空值表示没有开始时间。 (有关详细信息,请参阅此属性表下方的注释。) |
TimeWindowEnd | 网络位置的第一时间窗结束时间。 该字段可以包含空值;空值表示没有结束时间。 (有关详细信息,请参阅此属性表下方的注释。) |
TimeWindowStart2 | 网络位置的第二时间窗开始时间。 该字段可以包含空值;空值表示没有第二时间窗。 如果第一时间窗为空,正如 TimeWindowStart 和 TimeWindowEnd 字段所指定的那样,则第二时间窗也必须为空。 如果两个时间窗都为非空,则二者不可以重叠。 而且,第二个时间窗必须在第一个之后出现。 (有关详细信息,请参阅此属性表下方的注释。) |
TimeWindowEnd2 | 网络位置的第二时间窗结束时间。 该字段可以包含空值。 如果 TimeWindowStart2 和 TimeWindowEnd2 均为空,则不存在第二时间窗。 如果 TimeWindowStart2 不为空,但是 TimeWindowEnd2 为空,则存在具有开始时间但没有结束时间的第二时间窗。 这种情况是有效的。 (有关详细信息,请参阅此属性表下方的注释。) |
网络位置字段
|
结合使用这些属性可描述网络中对象所在的点。 |
CurbApproach | CurbApproach 属性指定车辆到达和离开站点的方向。 它对于需要从特定方向到达和离开站点或者需要避免出现 U 形转弯的车辆十分有用。 您可通过选择以下四种 CurbApproach 值之一来满足这些要求:
|
注:
时间窗字段可以包含“仅时间”值或“日期和时间”值。 如果时间字段(例如 TimeWindowStart)是一个只具有时间的值(例如,8:00 a.m.),则假定日期为分析图层的默认日期属性所指定的日期。 使用“日期和时间”值(例如 7/11/2010 8:00 a.m.)允许您设置持续多天的时间窗。
可以使用创建车辆配送分析图层地理分析工具上的 time_zone_for_time_fields 参数指定时间窗字段的时区。
当任一时间窗字段包含当时的日期时,将忽略默认日期。 为避免在这种情况下出现错误,请将 Depots、Routes、Orders 和 Breaks 中所有时间窗的格式设置为也包含日期和时间。
如果正在使用流量数据,则网络位置的时间字段始终会引用与网络位置所在的边相同的时区。
站点:输入/输出字段
输入/输出字段 | 描述 |
---|---|
Status |
指示该点相对于其在网络上的位置以及分析结果的状态。可能的值如下:
如果使用时间窗,并且配送车辆提前或延后到达,则值将更改为时间窗冲突 (6)。 |
路径
Routes 要素类中所存储的路径是给定车辆配送分析图层的一部分。 路径除表示站点和停靠点之间的遍历之外,还指定车辆和驾驶员的特征。 在 Network Analyst 中,车辆、路径和驾驶员同义,术语“路径”用于涵盖这三个概念。
注:
VRP 求解程序并不会考虑在单一路径安排解决方案中将同一辆车在多个工作时间交替使用,也不考虑在某个工作时间内更换驾驶员。
路径在起始站点或终止站点可能需要花费时间进行装货或卸货。 在站点耗用的时间对于路径来说是固定的,并且被指定为起始站点服务时间和终止站点服务时间。
路径的起始时间可能是固定的,也可能是弹性的;也就是说,路径可拥有一个“最早-最晚”的起始时间范围。 在确定路径的实际起始时间时,会考虑起始站点的起始时间范围和时间窗。
单一路径的运行成本可由基于时间的成本、基于距离的成本或与工作时间或行驶距离无关的固定成本组成。 例如,如果为应对高负荷工作时段而额外租用了其他车辆,则可能会存在与使用车辆相关联的固定成本。 同样,可能会根据工作小时数(包括或不包括加班时间和午休时间)而支付给驾驶员报酬。 这样的成本可用来指定基于时间的成本。 燃料成本可用于指定距离成本。
在给定路径上行驶的车辆可能还具有一个容量,用来限制车辆的车载量。
由于存在相关的法律规定或工会协议,可能会限制驾驶员的工作时间,例如,总驾驶距离或驾驶员可工作或驾驶的小时数。
路径可包括工作休息时间。 可能会为这类休息时间向驾驶员支付报酬,也可能不会。
车辆可能具有特定的功能(例如,动力升降装置或特殊护罩),或者技术人员可能拥有多种不同的技能。 定义有这些特殊要求的停靠点必须分配给相应的路径。
如果路径的工作范围被限制在预定义的地理区域内,则路径可能会与某个区域相关联。
路径是线要素。 可从其他车辆配送 (VRP) 分析图层中的现有路径、从其他线状要素或从表中导入路径。
路径:输入字段
输入字段 | 描述 |
---|---|
ObjectID | 系统管理的 ID 字段。 |
Name | 网络分析对象的名称。 该字段是主键,并用作停靠点、休息点、路径区、站点访问和要素图层的外键;同时用于“货物补给点”和 RouteSpecialty 表中。 路径名称不区分大小写,而且即使路径不属于求解操作的一部分,路径名称也不能为空。 名称必须唯一。 |
Description | 有关网络分析对象的描述性信息。 描述性信息可以包含任何文本信息,对唯一性没有任何限制。 |
StartDepotName | 路径的起始站点名称。 该字段是“Depots”类中 Name 字段的外键。 站点对象必须事先存在,才会显示在 StartDepotName 下拉列表中。 如果 StartDepotName 值为空,则路径会将分配的第一个停靠点作为起始点。 车辆的起始位置未知或者与您的问题不相关时,可以忽略起始站点。 不过,如果 StartDepotName 为空,则 EndDepotName 不能也为空。 如果停靠点或站点跨多个时区,则不允许使用虚拟起始站点。 如果路径正在进行配送并且 StartDepotName 为空,则假设在路径开始前,在一个虚拟站点处进行装货。 如果路径不具有货物补给点,则它的配送停靠点(Orders 类中 DeliveryQuantity_# 字段值为非零的停靠点)会在起始站点或虚拟站点处进行装货。 如果路径具有更新访问,则只有第一个更新访问之前的配送停靠点才会在起始站点或虚拟站点处进行装货。 |
EndDepotName | 路径的终止站点名称。 该字段是“Depots”类中 Name 字段的外键。 站点对象必须事先存在,才会显示在 EndDepotName 下拉列表中。 |
StartDepotServiceTime | 在起始站点的服务时间。 该字段可用于为车辆装货所用的时间建立模型。 该字段可以包含空值;空值表示没有服务时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 注:起始和结束站点处的服务时间是固定值(由 StartDepotServiceTime 和 EndDepotServiceTime 字段值指定),因此不必考虑路径的实际载荷。 例如,在起始站点处装载车辆所花费的时间取决于订单大小。 因此,可为站点服务时间分配与货车满载或货车平均装载对应的值,或者也可以设置自行估计的时间值。 |
EndDepotServiceTime | 在终止站点的服务时间。 该字段可用于为车辆卸货所用的时间建立模型。 该字段可以包含空值;空值表示没有服务时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 注:起始和结束站点处的服务时间是固定值(由 StartDepotServiceTime 和 EndDepotServiceTime 字段值指定),因此不必考虑路径的实际载荷。 例如,在起始站点处装载车辆所花费的时间取决于订单大小。 因此,可为站点服务时间分配与货车满载或货车平均装载对应的值,或者也可以设置自行估计的时间值。 |
EarliestStartTime |
路径允许的最早开始时间。 求解程序通过将该字段与起始站点的时间窗结合使用来确定可行的路径开始时间。 该字段不能包含空值,其默认的“仅时间”值为 8:00 a.m.;该默认值被解释为分析图层的默认日期属性所指定日期的 8:00 a.m。 当任一时间窗字段包含当时的日期时,将忽略默认日期。 为避免在这种情况下出现错误,请将 Depots、Routes、Orders 和 Breaks 中所有时间窗的格式设置为也包含日期和时间。 将网络数据集与跨越多个时区的流量数据结合使用时,EarliestStartTime 的时区与起始站点所在的边或交汇点的时区相同。 |
LatestStartTime | 路径允许的最晚开始时间。 该字段不能包含空值,其默认的“仅时间”值为 10:00 a.m.;该默认值被解释为分析图层的默认日期属性所指定日期的 10:00 a.m。 当任一时间窗字段包含当时的日期时,将忽略默认日期。 为避免在这种情况下出现错误,请将 Depots、Routes、Orders 和 Breaks 中所有时间窗的格式设置为也包含日期和时间。 将网络数据集与跨越多个时区的流量数据结合使用时,LatestStartTime 的时区与起始站点所在的边或交汇点的时区相同。 |
ArriveDepartDelay | 该字段存储将车辆加速到正常行驶速度、减速到停止状态以及离开和进入网络(例如,出入停车场)所需的行驶时间。 通过包含 ArriveDepartDelay 值,可防止 VRP 求解程序发送多条路径来为完全重合的停靠点提供服务。 该属性的成本是因为对不重合的停靠点、站点和货物补给点进行访问而产生的。 例如,如果路径从站点处开始,然后访问第一个停靠点,则总的到达/离开延迟会计入行驶时间。 这同样适用于从第一个停靠点行驶到第二个停靠点的情况。 如果第二个停靠点与第三个停靠点重合,则不会在它们之间添加 ArriveDepartDelay 值,因为车辆并不需要移动。 如果路径行驶到一个货物补给点,则该值会再次计入行驶时间。 尽管车辆需要减速、停下来休息,然后再加速,但 VRP 求解程序也不能将 ArriveDepartDelay 值计入休息时间。 这表示如果路径离开某个停靠点、停下休息,然后继续行驶到下一个停靠点,则仅计入一次到达/离开延迟,而不是两次。 假设在一幢高层建筑物中有五个重合停靠点,而且可通过三条不同的路径来为它们提供服务。 这意味着将产生三个到达/离开延迟;也就是说,三名驾驶员需要寻找停车位并进入同一栋建筑物。 不过,如果可以仅通过一条路径来为这些停靠点提供服务,则只有一名驾驶员需要寻找停车位并进入该建筑物,这样只会产生一个到达/离开延迟。 由于 VRP 求解程序会尝试将成本降至最低,所以它将尝试限制到达/离开延迟,因而会选择使用单一路径。 (请注意,特殊要求、时间窗或容量等其他约束可能要求发送多条路径。) 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
| 车辆的最大装载量(例如,体积、重量或数量)。 如果存在多个装载量,则根据需要使用 Capacity_1 到 Capacity_9 字段进行指定。 |
FixedCost | 仅当解决方案中使用路径(即,路径分配有停靠点)时才产生的固定货币成本。 该字段可以包含空值;空值表示没有固定成本。 该成本是路径总运行成本的一部分。 |
CostPerUnitTime | 路径总持续时间(包括行驶时间以及在停靠点、站点和休息点的服务时间和等待时间)中每单位工作时间产生的货币成本。 该字段不能包含空值,其默认值为 1.0。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
CostPerUnitDistance | 路径长度(总行驶距离)中每单位行驶距离产生的货币成本。 该字段可以包含空值;空值表示成本为零。 距离单位由分析图层的距离字段单位属性指定。 如果为该字段指定了一个值,但没有为分析图层指定距离属性这一属性,则求解程序将返回一个错误。 |
OvertimeStartTime | 开始计算加班时间之前的规定工作时间。 该字段可以包含空值;空值表示没有加班时间。 如果包含 OvertimeStartTime 值,则其应大于 0 并且小于 MaxTotalTime 值。 该字段值的单位由分析图层的“时间字段单位”属性指定。 例如,如果在路径总持续时间超出八小时后要为驾驶员支付加班费用,且分析图层的时间字段单位属性设置为小时,则 OvertimeStartTime 会指定为 8。 |
CostPerUnitOvertime | 每单位加班工作时间产生的货币成本。 如果 OvertimeStartTime 也为空,则只能包含空值。 否则,它必须为大于 CostPerUnitTime 的正值。 |
MaxOrderCount |
路径上允许的最大停靠点数。 该字段不能包含空值,其默认值为 30。 |
MaxTotalTime | 允许的最长路径持续时间。 路径持续时间包括行驶时间以及在停靠点、站点和休息点的服务和等待时间。 该字段可以包含空值;空值表示对路径持续时间无限制。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
MaxTotalTravelTime | 路径允许的最长行驶时间。 行驶时间仅包括在网络上行驶花费的时间,不包括服务或等待时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 该字段可以包含空值;空值表示对允许的最长行驶时间无限制。 该字段值不能大于 MaxTotalTime 字段值。 |
MaxTotalDistance | 路径允许的最长行驶距离。 总距离的单位由分析图层的距离字段单位属性指定。 该字段可以包含空值;空值表示对允许的最长行驶距离无限制。 如果为该字段指定了一个值,但没有为分析图层指定距离属性这一属性,则求解程序将返回一个错误。 |
AssignmentRule | 该字段指定解决问题时是否可以使用路径。 该字段受值的属性域约束,可能的值如下:
|
路径:输出字段
输出字段 | 描述 |
---|---|
Shape | 路径的线形状。 如果将分析图层的输出形状类型属性设为“无”,则不返回任何形状。 将输出形状类型属性设置为“直线”将会返回连接每对连续访问位置的直线路径。 具有测量值的实际形状和实际形状都会返回沿网络上相应路径描绘的线,不同之处在于具有测量值的实际形状会返回按时间进行线性参考的线。 |
| 该字段包含约束冲突的汇总,并在求解操作之后进行设置。 如果因某条路径而导致与约束发生冲突,则可以将下列冲突分配至字段,每个字段分配一个冲突。
|
OrderCount | 分配给路径的停靠点数。 |
TotalCost | 路径的总体运营成本,是以下字段值的总和:
|
RegularTimeCost | 除任何不需支付酬金的休息时间外的规定工作时间的成本。 |
OvertimeCost | 除任何不需支付酬金的休息时间外的加班时间的成本。 |
DistanceCost | 通过将 TotalDistance 和 CostPerUnitDistance 字段值相乘得出的距离成本部分。 如果没有为分析图层指定距离属性这一属性,则该字段值为空。 |
TotalTime | 路径总持续时间。 该持续时间包括行驶时间以及在停靠点、站点和休息点的服务和等待时间。 TotalTime 值等于以下字段值的总和:
该字段值的单位由分析图层的“时间字段单位”属性指定。 |
TotalOrderServiceTime | 在路径上的所有停靠点处所用的总服务时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
TotalBreakServiceTime | 在路径上的所有休息点处所用的总服务时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
TotalTravelTime | 路径的总行驶时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
TotalDistance | 路径的总行驶距离。 该字段值的单位由分析图层的“距离字段单位”属性指定。 如果未在分析参数中指定“距离属性”这一属性,则此字段为空。 |
StartTime | 路径的开始时间。 路径可能会在起始站点的时间窗打开之前开始,在这种情况下,起始站点处存在一个等待时间。 使用跨越多个时区的流量数据时,该时刻的时区将采用起始站点所在的网络元素对应的时区。 |
EndTime | 路径的结束时间。 路径在终止站点处完成服务后结束。 使用跨越多个时区的流量数据时,该时刻的时区将采用终止站点所在的网络元素对应的时区。 |
StartTimeUTC | 以协调世界时间 (UTC) 格式给出的路径开始时间。 |
EndTimeUTC | 以协调世界时间 (UTC) 格式给出的路径结束时间。 |
TotalWaitTime | 在路径上的所有停靠点、站点和中断处的总等待时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
TotalViolationTime | 在路径上的所有停靠点和中断处的总冲突时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
RenewalCount | 如果路径包含更新,该字段就相当于为进行更新而访问站点的次数。 |
TotalRenewalServiceTime | 对于具有货物补给点的路径,该字段表示在路径上所有货物补给点所用的总服务时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
中断
Breaks 要素类将存储车辆配送中路径的休息时段或休息点。 一个中断只与一条路径相关联,而且可在以下情况下获得:完成停靠点服务后、去往停靠点的途中或在为停靠点提供服务之前。 休息点具有起始时间和持续时间,这段时间可能会为驾驶员支付报酬,也可能不支付。 您可以通过三种方式来建立休息开始的时间:可输入时间窗、最长行驶时间或最长工作时间。
时间窗中断点 - 要设置时间窗中断点,请输入两个时间值来限定中断点的起始时间范围。 TimeWindowStart 和 TimeWindowEnd 字段存放时间的上下限值。 休息的持续时间(或服务时间)与时间窗无关,因此可延长到超过时间窗的关闭时间。 例如,如果一小时的休息时间窗是从 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 |
休息点时间窗的开始时间。 半开放时间窗对于休息点无效。 如果该字段中存在值,则 MaxTravelTimeBetweenBreaks 和 MaxCumulWorkTime 必须为空,而且分析图层中所有其他休息点的 MaxTravelTimeBetweenBreaks 和 MaxCumulWorkTime 必须也为空值。 如果路径具有时间窗相互重叠的多个休息点,求解时将出错。 中断的时间窗字段可以包含“仅时间”值或“日期和时间”值。 如果像 TimeWindowStart 这样的时间字段具有“仅时间”值(例如 12:00 p.m.),则假定日期由分析图层的默认日期属性指定。 使用“日期和时间”值(例如 7/11/2010 12:00 p.m.)可以指定时长为两天或两天以上的时间窗。 这特别适用于应在午夜前后的某个时间中断的情况。 当任一时间窗字段包含当时的日期时,将忽略默认日期。 为避免在这种情况下出现错误,请将 Depots、Routes、Orders 和 Breaks 中所有时间窗的格式设置为也包含日期和时间。 |
TimeWindowEnd | 休息点时间窗的结束时间。 半开放时间窗对于休息点无效。 如果该字段中存在值,则 MaxTravelTimeBetweenBreaks 和 MaxCumulWorkTime 必须为空,而且分析图层中所有其他休息点的 MaxTravelTimeBetweenBreaks 和 MaxCumulWorkTime 必须也为空值。 当任一时间窗字段包含当时的日期时,将忽略默认日期。 为避免在这种情况下出现错误,请将 Depots、Routes、Orders 和 Breaks 中所有时间窗的格式设置为也包含日期和时间。 有关详细信息,请参阅 TimeWindowStart 的描述(上文)。 |
MaxTravelTimeBetweenBreaks |
休息之前可累积的最长行驶时间。 行驶时间从上一个休息点的结束时间开始累积,或者从路径的起始点开始累积(如果还未休息过)。 如果这是路径的最后一个休息点,则 MaxTravelTimeBetweenBreaks 还表示从最后一个休息点到终止站点可累积的最长行驶时间。 该属性用于限制可在驾驶多长时间之后才需要中断。 例如,如果分析图层的时间字段单位属性设为“分钟”,而且 MaxTravelTimeBetweenBreaks 的值为 120,则驾驶员将在驾驶两个小时之后中断驾驶以得到休息。 如果要再驾驶两个小时后中断一次,则第二个中断的 MaxTravelTimeBetweenBreaks 属性应为 120。 如果该字段中存在值,则要成功求解分析,TimeWindowStart、TimeWindowEnd、MaxViolationTime 和 MaxCumulWorkTime 必须均为空。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
MaxCumulWorkTime | 休息之前可累积的最长工作时间。 工作时间始终从路径的起始点开始累积。 工作时间等于行驶时间加上在停靠点、站点和休息点的服务时间。 不过请注意,该时间不包括等待时间,等待时间是指路径(或驾驶员)在停靠点或站点处等待时间窗打开所用的时间。 该属性用于限制可在工作多长时间之后才需要中断。 例如,如果分析图层的时间字段单位属性设为“分钟”,而且 MaxCumulWorkTime 的值为 120,ServiceTime 的值为 15,则驾驶员将在工作两个小时之后获得 15 分钟的中断时间。 继续以上一个示例来进行说明,假设工作了三个小时之后又需要休息。 那么,要指定该休息点,需要输入 315(5 小时 15 分钟)作为第二个休息点的 MaxCumulWorkTime 值。 这个数字包括前一个休息点的 MaxCumulWorkTime 值和 ServiceTime 值,以及准许进行第二次休息之前的另外三个小时工作时间。 为避免过早经过最长工作时间休息点,请牢记:此类休息点是从路径的起始点开始累积工作时间,并且工作时间包括在之前访问的站点、停靠点和休息点处的服务时间。 如果该字段中存在值,则要成功求解分析,TimeWindowStart、TimeWindowEnd、MaxViolationTime 和 MaxTravelTimeBetweenBreaks 必须均为空。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
RouteName | 休息点所应用到的路径的名称。 一个休息点仅分配给一条路径,但可将多个休息点分配给同一路径。 该字段是 Routes 类中 Name 字段的外键,并且不能具有空值。 路径对象必须事先存在,才会显示在 RouteName 下拉列表中。 |
Precedence | Precedence 值用来指定休息点在给定路径上的顺序。 优先级值为 1 的休息点会出现在优先级值为 2 的休息点之前,依此类推。 无论休息点是时间窗休息点、最长行驶时间休息点还是最长工作时间休息点,所有休息点都必须具有优先级值。 |
ServiceTime |
休息点的持续时间。 该字段不能包含空值。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
MaxViolationTime | 该字段为时间窗休息点指定允许的最长冲突时间。 如果到达时间不在该时间范围内,则认为与时间窗发生冲突。 零值表示不能与时间窗发生冲突;即时间窗是硬性的。 非零值指定最长延迟时间;例如,中断点可在其时间窗结束后最多 30 分钟内开始,但会按照分析图层的时间窗冲突属性对延迟进行惩罚。 该属性可以为空;TimeWindowStart 和 TimeWindowEnd 为空值表示对允许的冲突时间没有限制。 如果 MaxTravelTimeBetweenBreaks 或 MaxCumulWorkTime 中存在值,则 MaxViolationTime 必须为空。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
IsPaid | 用来指示是否为休息点支付报酬的布尔值。 值为 True 表示在计算路径成本和判定加班时间时将包括在休息点处所花费的时间。 值为 False 表示的情况与 True 值相反。 默认值为 True。 |
休息点:输入/输出字段
输入/输出字段 | 描述 |
---|---|
Sequence |
该输入字段用于指示休息点在其路径上的顺序。 该字段可包含空值。 输入顺序值应为正且对于各路径均唯一(在货物补给点、停靠点和休息点之间共享),但是不需要从 1 开始,也不需要连续。 求解程序会修改 sequence 字段。 执行求解后,该字段会包含休息点在其路径上的 sequence 值。 路径的输出顺序值在货物补给点、停靠点和休息点之间分配;从 1 开始(在起始站点处);并且是连续的。 |
休息点:输出字段
输出字段 | 描述 |
---|---|
Shape | 此几何字段表示路线的指定休息点位置。 |
RelativePosition | 中断的相对位置。 中断位于两个网络位置(停靠点或站点)之间的某处。 值 0.0 表示正好在前一个网络位置处完成服务后中断;值 1.0 表示正好在后一个网络位置处开始服务前中断;位于这两个值之间的值表示在第一个网络位置到第二个网络位置之间路径上的某处中断。 例如,0.25 表示在前一个网络位置到下一个网络位置之间路径的四分之一处中断。 无论两个网络位置之间出现了多少个中断,相对位置始终相对于网络位置(而不是其他中断)进行报告。 |
FromPrevTravelTime | 从前一个停靠点、站点或中断到该中断的行驶时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
FromPrevDistance | 从前一个停靠点、站点或中断到该中断的行驶距离。 该字段值的单位由分析图层的“距离字段单位”属性指定。 如果未在分析参数中指定“距离属性”这一属性,则此字段为空。 |
CumulTravelTime | 路径到达该中断时的累积行驶时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
CumulDistance | 路径到达该中断时的累积行驶距离。 该字段值的单位由分析图层的“距离字段单位”属性指定。 如果未在分析参数中指定“距离属性”这一属性,则此字段为空。 |
CumulTime | 路径到达该中断(包括在中断停留)的累积持续时间。 累积持续时间包括行驶时间以及在停靠点、站点和中断的服务和等待时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
ArriveTime | 到达中断的实际时间。 路径到达中断的时间可能在中断的时间窗开始之前,在这种情况下,中断处存在一个等待时间。 如果中断采用软性时间窗,则路径到达该中断的时间还可能在时间窗结束之后,在这种情况下,中断处存在一个冲突时间。 如果使用具有多个时区的网络数据集,则以实际中断位置的时区来报告该时间。 |
DepartTime | 结束中断的时间。 如果使用具有多个时区的网络数据集,则以实际中断位置的时区来报告该时间。 |
ArriveTimeUTC | 表示到达时的日期和时间值,以协调世界时间 (UTC) 给出。 |
DepartTimeUTC | 表示出发时的日期和时间值,以协调世界时间 (UTC) 给出。 |
WaitTime | 中断等待的时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
ViolationTime | 中断处的冲突时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
CumulWaitTime | 从路径起始点到中断的累积等待时间(包括在中断的等待时间)。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
CumulViolationTime | 从路径起始点到中断的累积冲突时间(包括在中断的冲突时间)。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
路径区
路径区为给定路径指定工作区域。 按区域配送属于面要素,用来对路径施加约束,以使路径仅为某一区域内或附近的停靠点提供服务。 以下示例说明了路径区非常有用的情况:
- 有些员工不具备在某些州或社区执行工作所需的权限。 此时,您可以创建一个硬性路径区,使他们只能访问他们满足相应要求的区域中的停靠点。
- 您其中的一辆车经常出现故障,所以您希望使其仅访问离汽车修理厂很近的停靠点,从而将响应时间缩至最短。 此时,您可以创建一个软性或硬性路径区,使该车在附近行驶。
路径区:输入字段
输入字段 | 描述 |
---|---|
ObjectID | 系统管理的 ID 字段。 |
Shape | 指示网络分析对象地理位置的几何字段。 |
RouteName | 该区域所应用到的路径的名称。 按区域配送最大可覆盖一条关联路径。 该字段不能包含空值,而且是 Routes 要素图层中 Name 字段的外键。 路径对象必须事先存在,才会显示在 RouteName 列表中。 |
IsHardZone |
用来指示按区域配送中的区域是硬性还是软性的布尔值。 值为 True 表示区域是硬性的;也就是说,落在区域面以外的停靠点不能分配给该路径。 默认值为 True (1)。 值为 False (0) 表示这样的停靠点仍可进行分配,但是为停靠点提供服务的成本要根据一个函数进行加权得到,该函数基于与区域的欧氏距离。 实际上,这意味着,随着软性区域到停靠点的直线距离的增加,停靠点被分配给路径的可能性将会降低。 |
注:
- 由于在测量配送区域与停靠点之间的距离时使用欧氏距离,所以不需要基于网络的距离属性。
- 即使与硬性配送区域关联的路径只能为配送区域内的停靠点提供服务,其他路径仍可进入同一配送区域并为其中的停靠点提供服务。 这是因为配送区域只限制路径,而不限制停靠点。 (如果要将某个区域内的所有停靠点专门分配给某条路径,请不要使用按区域配送;而应选择该区域中的各个停靠点,并将停靠点的 RouteName 字段更改为相应的路径,然后将它们的 AssignmentRule 字段设置为“保留路径”。)
站点访问
如果路径在某个站点处开始、更新(卸货或重新装货)或终止,则会创建站点访问。 站点访问对象提供与路径访问站点的原因以及在站点发生的事情有关的信息。 在站点为车辆装载的货物量或从车辆卸载的货物量均记录在站点访问的属性中。 另外,还包括用于解释车辆配送 (VRP) 解决方案的其他信息。
这是一个只有输出的网络分析类。 站点访问要素完全是在求解操作期间创建的;因此,在求解过程之前,该分析类始终为空。
站点访问:输出字段
输出字段 | 描述 |
---|---|
ObjectID | 系统管理的 ID 字段。 |
Shape | 指示网络分析对象地理位置的几何字段。 |
DepotName | 所访问站点的名称。 该字段是 Depots 网络分析类中 Name 字段的外键。 如果路径使用虚拟站点,即路径在停靠点(而不是站点)处开始或结束,则 DepotName 为空。 |
RouteName | 包含该访问的路径的名称。 该字段是 Routes 要素图层中 Name 字段的外键。 |
Sequence | 指示路径上所访问站点的顺序。 路径的输出 sequence 值在站点访问、停靠点和休息点之间共享;从 1 开始(在起始站点处);并且是连续的。 |
VisitType | 访问该站点的原因。 此字段受到以下值的属性域的约束:
|
ServiceTime | 在站点的服务时间(例如,装货或卸货)。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
FromPrevTravelTime | 从路径上的前一个访问位置到该站点的行驶时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
FromPrevDistance | 从路径上的前一个访问位置到该站点的行驶距离。 该字段值的单位由分析图层的“距离字段单位”属性指定。 如果未在分析参数中指定“距离属性”这一属性,则此字段为空。 |
CumulTravelTime | 路径到达该站点时的累积行驶时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
CumulDistance | 路径到达该站点时的累积行驶距离。 该字段值的单位由分析图层的“距离字段单位”属性指定。 如果未在分析参数中指定“距离属性”这一属性,则此字段为空。 |
CumulTime | 路径到达该站点(包括在站点停留)的累积持续时间。 累积持续时间包括行驶时间以及在停靠点、站点和中断的服务和等待时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
ArriveTime | 到达站点的时间。 路径到达站点的时间可能在站点的时间窗开始之前,在这种情况下,站点处存在一个等待时间。 使用跨越多个时区的流量数据时,该时刻的时区将与站点所在的网络元素的时区相同。 |
DepartTime | 离开站点的时间。 使用跨越多个时区的流量数据时,该时刻的时区将与站点所在的网络元素的时区相同。 |
ArriveTimeUTC | 指示到达站点时的日期和时间值,以协调世界时间 (UTC) 给出。 |
DepartTimeUTC | 指示离开站点时的日期和时间值,以协调世界时间 (UTC) 给出。 |
WaitTime | 在站点等待的时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
CumulWaitTime | 从路径起始点到站点的累积等待时间(包括在站点的等待时间)。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
CumulViolationTime | 从路径起始点到站点的累积冲突时间(包括在站点的冲突时间)。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
| 在站点的装载量(例如,重量、体积或数量)。 如果存在多个容量,则 LoadedQuantity_1 到 LoadedQuantity_9 字段中的数量将与 Routes 输入表中匹配的 Capacity_1 到 Capacity_9 字段对应。 |
| 在站点的卸载量(例如,重量、体积或数量)。 如果存在多个容量,则 UnloadedQuantity_1 到 UnloadedQuantity_9 字段中的数量将与 Routes 输入表中匹配的 Capacity_1 到 Capacity_9 字段对应。 |
注:
由于站点具有硬性时间窗,所以站点访问要素图层上不存在 ViolationTime 输出字段。
特殊要求
“停靠点特殊要求”和“路径特殊要求”是两个表,其中列出了停靠点需要的和路径支持的特殊要求。 仅当路径支持某停靠点所需的所有特殊要求时,该路径才能为此停靠点提供服务。
停靠点可能需要一位具有多种特定技能的技术人员或者一辆具有特定功能的货车。 首先,通过将这些技能和功能等添加到“停靠点特殊要求”表中来为它们建立模型。 接下来,将路径所支持的特殊要求添加到“路径特殊要求”中。 对 VRP 分析进行求解时,需要某些特殊要求的停靠点会与提供了这些特殊要求的路径进行匹配。
停靠点特殊要求:输入字段
输入字段 | 描述 |
---|---|
ObjectID | 系统管理的 ID 字段。 |
OrderName | 网络分析对象的名称。 该字段属于主键,并用作停靠点要素图层中对停靠点特殊要求进行引用的外键。 |
SpecialtyName | 特殊要求的名称。 指示停靠点所需的特殊要求。 每行仅列出一个特殊要求。 如果停靠点需要多个特殊要求,则新建一行。 特殊要求名称不能包含空格。 例如,应将高级技术人员特殊要求输入为 SeniorTechnician。 |
路径特殊要求:输入字段
输入字段 | 描述 |
---|---|
ObjectID | 系统管理的 ID 字段。 |
RouteName | 网络分析对象的名称。 该字段属于主键,并用作路径要素图层中对路径特殊要求进行引用的外键。 |
SpecialtyName | 特殊要求的名称。 指示路径支持的特殊要求。 每行仅列出一个特殊要求。 如果路径支持多个特殊要求,则新建一行。 特殊要求名称不能包含空格。 例如,应将高级技术人员特殊要求输入为 SeniorTechnician。 |
停靠点对
停靠点对是一个记录表,用于为配送停靠点和接收停靠点进行配对,以使它们能够由同一路径提供服务。
有时,要求停靠点的接收和配送是成对的。 例如,对于快递公司,在配送文件的过程中可能会涉及到两个停靠点:第一次停靠是在源处接收文件,第二次停靠是在目的地递交文件。 这些相关的停靠点将按照相应的顺序分配给同一路径。 不得只将其中一个停靠点分配给路径:要么将两个停靠点都分配给同一条路径,要么都不分配。
对包裹在车辆上停留的时间可能存在限制;例如,必须在两个小时内将血样从医生办公室运送到实验室。
某些情况可能需要两对停靠点。 例如,假设您需要将一位老人从她家送到医院看医生,然后再将她送回家。 从她家到医院的行驶过程会形成一对停靠点,其中包含到达医院所需的时间;而从医院返回家中的行驶过程会形成另一对停靠点,其中包含所需的搭送时间。
停靠点对:输入字段
输入字段 | 描述 |
---|---|
ObjectID | 系统管理的 ID 字段。 |
FirstOrderName | 停靠点对中第一个停靠点的名称。 该字段是 Orders 要素图层中 Name 字段的外键。 停靠点对象必须事先存在,才会显示在 FirstOrderName 列表中。 |
SecondOrderName | 停靠点对中第二个停靠点的名称。 该字段是 Orders 要素图层中 Name 字段的外键。 停靠点对象必须事先存在,才会显示在 SecondOrderName 列表中。 停靠点对中的第一个停靠点必须为接收停靠点;也就是说,它的配送量字段值为空。 停靠点对中的第二个停靠点必须为配送停靠点;也就是说,它的接收量字段值为空。 第一个停靠点处的接收量必须与第二个停靠点处的配送量一致。 有一种特殊情况是,在未使用容量时,两个停靠点的数量可能都为零。 注:停靠点数量在站点处不进行装货或卸货。 |
MaxTransitTime |
停靠点对的最长行驶时间。 行驶时间是指离开第一个停靠点至到达第二个停靠点的持续时间。 该约束限制两个停靠点之间的车上时间(或行驶时间)。 车辆携带人员或易腐烂货物时,行驶时间通常比携带包裹或不易腐烂的货物的时间要短。 该字段可以包含空值;空值表示对行驶时间无限制。 该字段值的单位由分析图层的“时间字段单位”属性指定。 求解程序可对额外行驶时间(相对于停靠点对之间的直线行驶时间来测量)进行追踪和加权。 因此,您可指示 VRP 求解程序采用以下三种方法之一:不考虑车队行程成本的增加,将总的额外行驶时间缩至最短;找出一种可平衡总冲突时间和行程成本的解决方案;或者不考虑总的额外行驶时间,而将车队的行程成本降至最低。 通过为分析图层的超出行驶时间设置指定重要性级别,实际上就是在这三种方法中选择一种方法。 无论重要性级别如何,只要超过 MaxTransitTime 值,求解程序就会返回错误。 |
货物补给点
“货物补给点”表将指定车辆配送 (VRP) 分析的路径要重新装载和卸载正在配送或接收的货物而可访问的中间站点。
特别地,货物补给点分析对象会将路径对象与站点对象相关联。 这一关系表明路径可在关联的站点处进行更新(重新装载或卸载)。
在某些行业中,每条路径均由一段或多段行程组成,在这些行程中,车辆以满载状态进行配送或接收,并进行配送。 货物补给可用于为以下情景建立模型:车辆在起始站点接收满载的配送量、到各停靠点提供服务、返回到该站点更新配送量,然后继续为更多停靠点提供服务。 例如,在丙烷气配送中,车辆可能需要进行多次交货才能将气罐排空,而且需要访问加气点并继续进行配送。
以下是使用货物补给点时要考虑的几项规则和选择:
- 重新装货/卸货点或货物补给位置可以与起始站点或终止站点不同。
- 每条路径都可具有一个或多个预先确定的货物补给位置。
- 一条路径可以多次使用某个货物补给位置。
- 如果路径上存在多个可能的货物补给位置,则求解程序会选择最近的可用货物补给位置。
货物补给点:输入字段
输入字段 | 描述 |
---|---|
ObjectID | 系统管理的 ID 字段。 |
DepotName | 进行该更新时所在站点的名称。 该字段不能包含空值,而且是 Depots 要素图层中 Name 字段的外键。 站点对象必须事先存在,才会显示在 DepotName 列表中。 |
RouteName | 该更新所应用到的路径的名称。 该字段不能包含空值,而且是 Routes 要素图层中 Name 字段的外键。 路径对象必须事先存在,才会显示在 RouteName 列表中。 |
ServiceTime | 更新的服务时间。 该字段可以包含空值;空值表示没有服务时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 注:在补给站点处装载车辆所花费的时间可能取决于车辆大小和车辆装载量。 不过,货物补给点的服务时间是固定值,并且不考虑实际载荷。 因此,为补给点服务时间指定的值应与货车满载量、平均装载量或所选的其他估计时间相对应。 |
货物补给点:输入/输出字段
输入/输出字段 | 描述 |
---|---|
Sequences | 作为输入字段时,该字段用来指定一个以空格分隔且包含对货物补给站点进行访问的 sequence 值的字符串。 该字段可包含空值,并且用于将访问预分配给货物补给站点。 作为输出字段时,求解程序可在该字段中修改和存储 sequence 值。 执行求解后,该字段会包含对相应路径上的该货物补给站点进行访问的 sequence 值。 如果在某条路径上的该站点处进行了多次货物补给访问,则以空格分隔各 sequence 值。 路径的输出 sequence 值在货物补给点、停靠点和休息点之间分配;从 1 开始(在起始站点处);并且是连续的。 所以,如果路径从某个站点处开始、访问了两个停靠点、进行了一次货物补给访问,然后继续,那么该货物补给处的 sequence 值为 4。 |
点、线和面障碍
障碍用于临时限制网络各部分、向网络各部分添加阻抗以及调整网络各部分的阻抗大小。 创建新的网络分析图层时,“障碍”类为空。 仅当向其中添加对象时才会对其进行填充 - 但不需要添加障碍。
障碍在所有网络分析图层中可用;因此,将在单独的主题中介绍障碍。
VRP 分析图层属性
以下各小节列出了可为分析图层设置的参数。 其位于 VRP 功能区上,且仅当选择了内容窗格中的 VRP 图层或其某一子图层时才可用。
运行
在分析组中,加载输入要素并设置用于解决车辆配送分析的分析属性后单击运行。
导入停靠点
单击导入停靠点 按钮以将要素从其他数据源(如点要素图层)加载到停靠点要素类。
导入站点
单击导入站点 按钮以将要素从其他数据源(如点要素图层)加载到站点要素类。
导入路径
在下拉菜单中,您可以选择导入路径或添加路径。
导入路径
单击导入路径 按钮以将要素从其他数据源(如线要素图层或独立表)加载到路径要素类。
添加路径
单击添加路径 按钮可使用添加车辆配送路径地理处理工具一次性创建多条路径。
导入休息点
从下拉菜单中,您可以选择导入休息点或添加休息点。
导入休息点
单击导入休息点 以将要素从其他数据源(如线要素图层或独立表)加载到休息点要素类。
添加休息点
单击添加休息点 以使用添加车辆配送休息点地理处理工具一次性创建多个休息点。
导入障碍
单击导入点障碍、导入线障碍或导入面障碍,将来自另一个数据源(例如另一个要素图层)的要素加载到一个障碍要素类(点障碍、线障碍或面障碍)。
导入路径区
单击导入路径区按钮 以将要素从其他数据源(如面要素图层)加载到路径区要素类。
导入停靠点对
单击导入停靠点对按钮 将要素从另一个数据源(例如独立表)加载到停靠点对表中。
导入货物补给点
单击导入货物补给点按钮 将要素从另一个数据源(例如独立表)加载到货物补给点表中。
导入停靠点特殊要求
单击导入停靠点特殊要求按钮 将要素从另一个数据源(例如独立表)加载到停靠点特殊要求表中。
导入路径特殊要求
单击导入路径特殊要求按钮 将要素从另一个数据源(例如独立表)加载到路径特殊要求表中。
创建要素
单击创建要素按钮 ,以打开创建要素窗格。从可用模板中进行选择以在当前地图中创建要素。
模式
模式下拉列表允许您选择出行模式,这一模式是对行人、汽车、货车或其他出行模式移动一起建模的一组设置。下拉列表中的选择是否可用取决于网络分析图层正在引用的网络数据源上配置的出行模式。
VRP 将仅使用基于时间的阻抗进行求解,因此仅基于时间的阻抗出行模式可供选择。
时间字段单位
分析图层的子图层和表的时态字段所用的时间单位。 下拉列表中有以下选项可供选择:
- 秒
- 分
- 小时
- 天
距离字段单位
分析图层的子图层和表的距离字段所用的距离单位。 下拉列表中有以下选项可供选择:
- 米
- 千米
- 英尺
- 英里
- 海里
- 厘米
- 毫米
- 分米
- 码
- 英寸
默认日期类型
如果仅提供时间,则在日期和时间字段中使用默认日期。 默认日期类型下拉列表中的选项如下:
日期 - 指定日历日期。
星期 - 指定一周中的一天:
- 星期日
- 星期一
- 星期二
- 星期三
- 星期四
- 星期五
- 星期六
今天 - 假设为当前日期。
可从从参考时区下拉列表中选择应在分析中使用的时区。选项如下:
- 各位置的本地时间
- UTC(协调世界时间)
输出几何线性形状类型
此控制允许您选择输出将在地图上的显示形式。下拉列表中有以下选项可供选择:
- 没有线 - 不生成输出线性形状。
- 直线 - 将简化几何输出为直线。
- 沿网络 - 在地图上沿网络生成实际路径。
注:
当 VRP 图层引用 VRP 服务或 Portal 时,直线选项不可用。时间窗重要性
您可以使用时间窗重要性 设置在运行分析时最小化时间窗冲突的重要性。 满足时间窗具有较高优先级的情况下,求解程序将生成一个解决方案,该方案将减少时间窗冲突,但会增加总体求解成本。 您可以从以下可用选项中选择:
高 - 如果对您而言按时到达停靠点要比最小化总体解决方案成本更加重要,请选择此设置。 将时间窗重要性设置为高后,控件将更改以反映选择。 | |
中 - 求解程序在满足时间窗和减少总体解决方案成本之间寻求一种平衡。 将时间窗重要性设置为中后,控件将更改以反映选择。 | |
低 - 如果减少您的总体解决方案成本要比满足时间窗更重要,请选择此设置。 将时间窗重要性设置为低后,控件将更改以反映选择。 |
行驶时间重要性
仅当使用停靠点对时,此参数才相关。 行驶时间重要性 可用于评定减少额外行驶时间的重要性。 额外行驶时间是指超出停靠点对间直线行驶所需时间的数量。 额外时间是由于在需求点对的访问期间进行休息或者行驶至其他停靠点或站点而导致的。 您可以从以下可用选项中选择:
高 - 选择此设置以找到一种缩短停靠点对之间额外行驶时间的解决方案(以增加总体行驶成本为代价)。 将行驶时间重要性设置为高后,控件将更改以反映选择。 | |
中 - 求解程序在减少超出行驶时间和减少总体解决方案成本之间寻求一种平衡。 将行驶时间重要性设置为中后,控件将更改以反映选择。 | |
低 - 选择此设置以找到最小化整体解决方案成本的解决方案。 将行驶时间重要性设置为中低,控件将更改以反映选择。 |
空间聚类
切换空间聚类 属性以允许您使用空间聚类。
聚类 - 分配给各个路径的停靠点将在空间上聚类。 对停靠点进行聚类往往在较小区域保持路径,并减小路径线彼此相交的频率;然而,聚类可能会增加总行程时间。 | |
不聚类 - 求解器不会对空间聚类停靠点进行优先排序,并且路线可能会相交。 如果指定了路径区,选择此选项。 |
方向
您可以使用方向选项卡上的控件生成方向并为活动的分析图层显示行进策略。
- 求解后输出 - 在求解当前网络分析图层后打开并生成方向。
- 显示方向 - 当求解后输出选项被选中时,单击显示方向选项后,方向窗格中将显示解中每个路径的转向指示。
注:
VRP 求解器使用时间中立的起点目的地成本矩阵 (OD) 来确定路径分配和排序。 此时间中立 OD 的值用于填充“停靠点”、“站点访问”和“路径”字段的时间和距离成本,以与用于解决问题的优化逻辑保持一致。 在确定了每条路径的停靠点和站点访问顺序之后,路径求解器将用于生成方向并使用路径的实际开始时间,从而可以根据交通情况为方向字段填充更准确的到达时间。
共享为路径图层
共享为组中的路径图层按钮 可以使您将分析结果共享为路径图层。单击此按钮将打开共享为路径图层地理处理工具。成功执行后,分析结果将共享为门户中的路径图层项目。
局限性
以下列出了在 VRP 图层上运行分析时的一些限制
- 路径上的最大停靠点数不能超过 1000。
- 所有基于成本的字段都不能超过十亿。 例如,Routes 表中的 FixedCost。
- 所有距离字段都不能超过一百万千米。 例如,Routes 表中的 MaxTotalDistance。
- 输入中最大和最小日期值之间的差值不能超过一年。
- 每条路径的最大休息点数为 5,任何休息点的优先级值都不能超过 5。
- 持续时间字段的值不能超过 365.25 天。 该值以时间单位参数指定的单位为单位。 例如,如果时间单位参数为秒,则服务时间值不能超过 31,557,600。
如果使用 ArcGIS Online 门户求解 VRP 图层,则除了上述限制之外,以下限制均适用。
- 您最多可以将 250 个要素指定为点障碍。
- 如果与所有线障碍相交的街道要素数量超过 500,则该工具将返回错误。
- 如果与所有面障碍相交的街道要素数量超过 2,000,则该工具将返回错误。
- 当出行模式为步行时间或步行距离时,起始位置图层和最近位置图层中的输入位置之间的直线距离不得大于 27 英里(43.45 千米)。