需要 Network Analyst 许可。
各类组织都可能调配一支车队来为多个停靠点提供服务。例如,大型家具商场可能会调配多辆货车将家具配送到各家各户。某专业油脂回收公司可能需要同时配送几辆货车从一个设施点到各饭店收集用过的油脂。卫生部门可能会为每位卫生监督员制定一个日常监督访问计划。
以上各示例所要解决的共同问题就是车辆配送 (VRP)。每个组织都需要确定各条路径(货车或监督员)所应服务的停靠点(住所、饭店或监督地点)以及其对各停靠点的访问顺序。决策制定的主要目标是为各停靠点提供最佳服务并使车队的总体运营成本最低。尽管 ArcGIS Network Analyst 扩展模块 提供的路径求解程序可为单个车辆访问多个停靠点找出一条最佳路径,但是,VRP 求解程序则可针对一支车队为多个停靠点提供服务的情况查找最佳路径。此外,基于 VRP 求解程序可设置的多个选项,它还可用于解决更多具体的问题,例如,将车辆载重与停靠点的配送量相匹配、指定驾驶员的中途休息时间,以及配对停靠点使其能够由同一路径提供服务。
车辆配送 (VRP) 问题的求解与其他网络分析遵循相同的工作流程。
车辆配送 (VRP) 分析图层
车辆配送 (VRP) 分析图层可用于存储给定车辆配送 (VRP) 问题的输入、参数和结果。
创建车辆配送 (VRP) 分析图层
可通过单击 Network Analyst 工具条中的 Network Analyst > 新建车辆配送(VRP) 来创建车辆配送 (VRP) 分析图层。
车辆配送 (VRP) 分析图层创建之后,它会与下面的 13 个网络分析类一同显示在 Network Analyst 窗口中:停靠点、站点、路径、站点访问、中断、按区域配送、按聚类中心配送、货物补给点、特殊要求、需求点对、点障碍、线障碍和面障碍。
同时,车辆配送 (VRP) 分析图层还会以复合图层的形式显示在内容列表 窗口中,且图层名为“车辆配送 (VRP)”。如果地图文档中已存在同名的车辆配送 (VRP) 图层,则会顺次命名为“车辆配送 (VRP) 1”、“车辆配送 (VRP) 2”,依此类推。其中包含九个要素图层 - 停靠点、站点访问、站点、按聚类中心配送、路径、按区域配送、点障碍、线障碍和面障碍。每个要素图层都具有默认的符号系统,您可在图层属性 对话框上对这些默认的符号系统进行修改。
车辆配送 (VRP) 分析类
车辆配送 (VRP) 分析图层由 13 种网络分析类组成,这些类是存储 VRP 在分析图层中的要素图层或表。它们包含了求解车辆配送 (VRP) 时要使用的所有网络分析对象。各种网络分析类之间的关系如下面的文档所示:
Relationships between network analysis classes in the vehicle routing problem下面各部分概述了每个类及其属性。
停靠点要素图层
该要素图层中所存储的停靠点是给定车辆配送 (VRP) 分析图层的一部分。停靠点可以是为客户配送、从客户处接收或其他类型的工作。例如配送家具、从饭店回收油脂或监督访问。
如果停靠点具有需要接收或配送的物品,这些物品通常可能会包含一种或多种容量属性,比方说,可以是基于任意形式的测量值或测量值的组合,如,重量、体积或单位数量。而某些停靠(如,监督访问)则可能不具有任何关联的配送或接收。
停靠点可具备服务时间,即在该停靠点完成工作所需的时间。例如,配送货车可能需要 20 分钟的服务时间才能卸载一件家具并将它搬运到屋内。各停靠点的服务时间可以相同,也可以不同。
停靠点可具有一个或两个时间窗,用来表明允许车辆访问停靠点的时段。例如,只允许食品批发的配送货车在上午 8:00 到 10:00 之间或者下午 2:00 到 4:00 之间到达饭店,因为在任何其他时间到达都会打乱饭店的经营。
停靠点还可与特殊需求相关联。也就是说,停靠点可能需要一位具有某种特定技能的技术人员(例如,电气工程师)或者一辆具有特殊功能(动力升降装置)的货车。只有具有这种特性的路径才会分配给停靠点。
停靠点属性
停靠点的输入字段
输入字段 | 说明 |
---|---|
ObjectID | 系统管理的 ID 字段。 |
形状 | 指示网络分析对象地理位置的几何字段。 |
名称 | 网络分析对象的名称。 名称必须唯一。 该字段在这里是一个主键,同时作为外键来引用“停靠点对”表中的停靠点。停靠点名称不区分大小写。即使停靠点不参与求解运算,停靠点名称也不能为空。 |
说明 | 有关停靠点的描述性信息。它可以包含有关停靠点的任何文本信息,并且不存在唯一性限制。比如,您可能想在 Name 字段中存储客户的 ID 号,而在 Description 字段中存储客户的真实名称或地址。 |
ServiceTime | 该属性指定了路径访问网络位置所花费的时间;也就是说,它存储了网络位置的阻抗值。零值或空值表示网络位置不需要任何服务时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
TimeWindowStart1 | 网络位置的第一时间窗开始时间。该字段可以包含空值;空值指示没有开始时间。 (有关详细信息,请参阅此属性表下面的注释。) |
TimeWindowEnd1 | 网络位置的第一时间窗结束时间。该字段可以包含空值;空值指示没有结束时间。 (有关详细信息,请参阅此属性表下面的注释。) |
TimeWindowStart2 | 网络位置的第二时间窗开始时间。该字段可以包含空值;空值指示没有第二时间窗。 如果第一时间窗为空,正如 TimeWindowStart1 和 TimeWindowEnd1 字段所指定的那样,第二时间窗也必须为空。 如果两个时间窗都为非空,则二者不可以重叠。而且,第二个时间窗必须在第一个之后出现。 (有关详细信息,请参阅此属性表下面的注释。) |
TimeWindowEnd2 | 网络位置的第二时间窗结束时间。该字段可以包含空值。 如果 TimeWindowStart2 和 TimeWindowEnd2 均为空,则不存在第二时间窗。 如果 TimeWindowStart2 不为空,但是 TimeWindowEnd2 为空,则存在具有开始时间但没有结束时间的第二时间窗。这种情况是有效的。 (有关详细信息,请参阅此属性表下面的注释。) |
MaxViolationTime1 | 如果到达时间出现在时间窗结束后,则认为与时间窗发生了冲突。该字段为停靠点的第一个时间窗指定允许的最长冲突时间。它可包含零值,但不能包含负值。零值表示停靠点的第一个时间窗不能接受时间窗冲突;即,第一个时间窗是硬性的。另一方面,空值表示对允许的冲突时间没有限制。非零值指定最长延迟时间;例如,路径可在第一个时间窗结束之后最多 30 分钟内到达停靠点。 该字段值的单位由分析图层的“时间字段单位”属性指定。 时间窗冲突可通过求解程序进行追踪和加权。因此,您可指示 VRP 求解程序采用以下三种方法之一:
通过为分析图层的时间窗冲突设置指定重要性级别,实际上就是在这三种方法中选择一种方法。不过,无论在什么情况下,只要超过了为 MaxViolationTime1 设置的值,求解程序就会返回错误。 |
MaxViolationTime2 | 停靠点的第二个时间窗允许的最长冲突时间。该字段与 MaxViolationTime1 字段相似。 |
InboundArriveTime | 定义要配送到停靠点的项在起始站点准备就绪的时间。 仅当入站到达时间早于路径的最晚开始时间值时,才能将该停靠点分配给此路径;这样,在项已准备就绪,可以进行装载之前,路径无法离开站点。 此字段有助于对涉及入站中转的情景进行建模。例如,停靠点的某项作业需要一些特殊材料,但该站点当前并不具备这些材料。现在正从另一位置运送这些材料,预计将在上午 11:00 到达该站点。为了确保不会将在货物到达之前离开的路径分配给此停靠点,停靠点的入站到达时间被设置为上午 11:00。这些材料在上午 11:00 到达后会被装载到车辆上,随后车辆离开该站点,驶向指派的停靠点。 注:
|
OutboundDepartTime | 定义要在停靠点接收的货物必须到达终止站点的时间。 仅当路径能够访问停靠点且到达终止站点的时间早于指定的出站离开时间时,才能将该停靠点分配给路径。 此字段有助于对涉及出站中转的情景进行建模。例如,货运公司派出运货车去接收停靠点的包裹,并将其运送至采用其他设施的转运站点,然后将其送往最终目的地。每天下午 3:00 会有一辆半挂车停靠在该站点,接收高优先级包裹并将其直接送往中转站。为了避免将这些高优先级包裹的配送延迟至第二天下午 3:00 的行程,货运公司尝试让运货车在下午 3:00 之前接收停靠点的高优先级包裹,同时在该截止时间之前将其运送至中转站。这完全可以通过将出站离开时间设置为下午 3:00 来实现。 注:
|
DeliveryQuantities |
配送量。可以按任何度量单位(如重量、体积或数量)来指定大小。也可以指定多个度量单位,例如,重量和体积。 如果停靠点需要 2000 磅的货物,那么分析图层的图层属性 对话框中的容量计数参数应设置为 1,而 DeliveryQuantities 应设置为 2000。 如果在分析图层的容量计数属性中指定了多个容量,则请使用空格来分隔各 DeliveryQuantities 值。 例如,在已知重量和体积的情况下,分析图层的图层属性对话框中的容量计数应设为 2。如果停靠点需要 2000 磅的货物,而货物体积为 100 立方英尺,则 DeliveryQuantities 应设置为 2000 100。 空字符串或空值相当于所有度量单位值均为零。如果字符串中值的个数相对于容量计数或追踪的度量单位来说不足,则其余的值将被视为零。注意,配送量不能为负数。 |
PickupQuantities | 接收的大小。可以按任何度量单位(如重量、体积或数量)来指定大小。也可以指定多个度量单位,例如,重量和体积。但是,不可以使用负值。该字段与“停靠点”的 DeliveryQuantities 字段相似。 |
Revenue | 解决方案中包含停靠点时产生的收入。该字段可包含空值(空值表示收入为零),但是它不能具有负值。 Revenue 会包含在优化目标函数值的过程中,但并不属于解决方案的运行成本。也就是说,路径类中的 TotalCost 字段决不会在输出中包含收入;不过,通过收入可对服务停靠点的相对重要性进行加权。 |
SpecialtyNames | 一个以空格分隔的字符串,其中包含了停靠点特性要求的名称。空值表示停靠点没有特性要求。 该字段是“特性”表中 Name 字段的外键。特殊要求对象必须事先存在,才会显示在 SpecialtyNames 下拉列表中。例如,草坪护理公司所服务的某一停靠点需要一种限制型的杀虫剂(这种杀虫剂的使用必须具有施药许可)。该公司可创建名为 License 的“特殊要求”对象,然后将该属性设置为许可。 |
AssignmentRule | 该字段指定将停靠点分配给路径时所要遵循的规则。它受到下面列出的值的属性域(括号中是它们的编码值)的约束。
该字段不能包含空值。 |
网络位置字段
| 结合使用这四种属性可描述网络中对象所在的点。 |
CurbApproach | CurbApproach 属性指定了车辆到达和离开网络位置的方向。有四种选择(它们的编码值显示在括号中):
|
停靠点的输入/输出字段
输入/输出字段 | 说明 |
---|---|
RouteName |
分配给停靠点的路径的名称。 该输入字段用于将停靠点预先分配给特定的路径。它可包含空值,空值表示停靠点未预先分配给任何路径,而求解程序会为停靠点确定可能的最佳路径分配。如果将该字段设为空,则顺序字段也必须设为空。 RouteName 字段是“路径”类中 Name 字段的外键。路径对象必须事先存在,才会显示在 RouteName 列表中。 执行求解操作后,如果为停靠点分配了路径,则 RouteName 字段将包含分配给停靠点的路径的名称。 |
顺序 | 该字段指示停靠点在其分配到的路径上的顺序。 该输入字段用于指定停靠点在路径上的相对顺序。该字段可包含空值,空值表示停靠点可位于路径上的任意位置。RouteName 值为空时,该字段值才能为空。 输入 sequence 值应为正且对于各路径均唯一(在更新站点访问、停靠点和休息点之间分配),但是不需要从 1 开始,也不需要连续。 执行求解操作后,Sequence 字段中会包含停靠点在其分配到的路径上的顺序值。路径的输出 sequence 值在货物补给点、停靠点和休息点之间分配;从 1 开始(在起始站点处);并且是连续的。所以,安排了路径的停靠点可能的最小输出顺序值为 2,因为路径始终从站点处开始。 |
状态 | 该字段受到下面列出的值的属性域(括号中是它们的编码值)的约束。
执行求解操作后,可以使用以下任一状态值修改状态:
如果使用了时间窗,并且提前或延后到达,则值将更改为时间窗冲突 (6)。 |
停靠点的输出字段
输出字段 | 说明 |
---|---|
ViolatedConstraints | 该字段包含约束冲突的汇总,并在求解操作之后进行设置。如果将停靠点分配给任何路径都会与约束发生冲突,则可将下列一个冲突或多个冲突的组合分配给该字段。
|
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 字段。 |
形状 | 指示网络分析对象地理位置的几何字段。 |
名称 | 网络分析对象的名称。 该字段是主键,并用作“路径”要素图层、“货物补给点”表和“站点访问”要素图层中对站点进行引用的外键。站点名称不区分大小写,但必须非空且唯一。 |
说明 | 有关网络分析对象的描述性信息。描述性信息可以包含任何文本信息,对唯一性没有任何限制。 也许您希望记录站点所在的区域或者站点的地址以及电话号码;那么您可在此处而不是 Name 字段中输入此信息。 |
TimeWindowStart1 | 网络位置的第一时间窗开始时间。该字段可以包含空值;空值指示没有开始时间。 (有关详细信息,请参阅此属性表下面的注释。) |
TimeWindowEnd1 | 网络位置的第一时间窗结束时间。该字段可以包含空值;空值指示没有结束时间。 (有关详细信息,请参阅此属性表下面的注释。) |
TimeWindowStart2 | 网络位置的第二时间窗开始时间。该字段可以包含空值;空值指示没有第二时间窗。 如果第一时间窗为空,正如 TimeWindowStart1 和 TimeWindowEnd1 字段所指定的那样,第二时间窗也必须为空。 如果两个时间窗都为非空,则二者不可以重叠。而且,第二个时间窗必须在第一个之后出现。 (有关详细信息,请参阅此属性表下面的注释。) |
TimeWindowEnd2 | 网络位置的第二时间窗结束时间。该字段可以包含空值。 如果 TimeWindowStart2 和 TimeWindowEnd2 均为空,则不存在第二时间窗。 如果 TimeWindowStart2 不为空,但是 TimeWindowEnd2 为空,则存在具有开始时间但没有结束时间的第二时间窗。这种情况是有效的。 (有关详细信息,请参阅此属性表下面的注释。) |
网络位置字段
| 结合使用这四种属性可描述网络中对象所在的点。 |
CurbApproach | CurbApproach 属性指定车辆到达和离开站点的方向。它对于需要从特定方向到达和离开站点或者需要避免出现 U 形转弯的车辆十分有用。您可通过选择以下四种 CurbApproach 值之一来满足这些要求:
|
站点的输入/输出字段
输入/输出字段 | 说明 |
---|---|
状态 | 该字段受到下面列出的值的属性域(括号中是它们的编码值)的约束。
执行求解操作后,可以使用以下任一状态值修改状态:
如果使用时间窗,并且配送车辆提前或延后到达,则值将更改为时间窗冲突 (6)。 |
路径类
该网络分析类存储的路径是给定车辆配送 (VRP) 分析图层的一部分。路径除表示站点和停靠点之间的遍历之外,还指定车辆和驾驶员的特征。在 Network Analyst 中,车辆、路径和驾驶员同义,术语路径用于涵盖这三个概念。
路径在起始站点或终止站点可能需要花费时间进行装货或卸货。在站点耗用的时间对于路径来说是固定的,并且被指定为起始站点服务时间和终止站点服务时间。
路径的起始时间可能是固定的,也可能是弹性的;也就是说,路径可拥有一个“最早-最晚”的起始时间范围。在确定路径的实际起始时间时,会考虑起始站点的起始时间范围和时间窗。
单一路径的运行成本可由基于时间的成本、基于距离的成本和/或与工作时间或行驶距离无关的固定成本组成。例如,如果为应对高负荷工作时段而额外租用了其他车辆,则可能会存在与使用车辆相关联的固定成本。同样,可能会根据工作小时数(包括或不包括加班时间和午休时间)而支付给驾驶员报酬。这样的成本可用来指定基于时间的成本。燃料成本可用于指定距离成本。
在给定路径上行驶的车辆可能还具有一个容量,用来限制车辆的车载量。
由于存在相关的法律规定或工会协议,可能会限制驾驶员的工作时间,例如,总驾驶距离或驾驶员可工作或驾驶的小时数。
路径可包括工作休息时间。可能会为这类休息时间向驾驶员支付报酬,也可能不会。
车辆可能具有特定的功能(例如,动力升降装置或特殊护罩),或者技术人员可能拥有多种不同的技能。定义有这些特殊要求的停靠点必须分配给相应的路径。
如果路径的工作范围被限制在预定义的地理区域内,则路径可能会与某个区域相关联。
路径是线要素。可从其他车辆配送 (VRP) 分析图层中的现有路径、从其他线状要素或从表中导入路径。也可使用添加项目命令创建它们。
路径属性
路径的输入字段
输入字段 | 说明 |
---|---|
ObjectID | 系统管理的 ID 字段。 |
名称 | 网络分析对象的名称。 该字段是主键,并用作“停靠点”要素图层、“中断”表、“按区域配送”要素图层、“按聚类中心配送”要素图层、“货物补给点”表和“站点访问”要素图层中的外键。路径名称不区分大小写,而且即使路径不属于求解操作的一部分,路径名称也不能为空。名称必须唯一。 |
说明 | 有关网络分析对象的描述性信息。描述性信息可以包含任何文本信息,对唯一性没有任何限制。 |
StartDepotName | 路径的起始站点名称。该字段是“Depots”类中 Name 字段的外键。站点对象必须事先存在,才会显示在 StartDepotName 下拉列表中。 如果 StartDepotName 值为空,则路径会将分配的第一个停靠点作为起始点。车辆的起始位置未知或者与您的问题不相关时,可以忽略起始站点。不过,如果 StartDepotName 为空,EndDepotName 不能也为空。 如果路径正在进行配送并且 StartDepotName 为空,则假设在路径开始前,在一个虚拟站点处进行装货。如果路径不具有货物补给点,它的配送停靠点(“停靠点”类中 DeliveryQuantities 值为非零的停靠点)会在起始站点或虚拟站点处进行装货。如果路径具有更新访问,则只有第一个更新访问之前的配送停靠点才会在起始站点或虚拟站点处进行装货。 |
EndDepotName | 路径的终止站点名称。该字段是“Depots”类中 Name 字段的外键。站点对象必须事先存在,才会显示在 EndDepotName 下拉列表中。 |
StartDepotServiceTime | 在起始站点的服务时间。该字段可用于为车辆装货所用的时间建立模型。该字段可以包含空值;空值表示没有服务时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
EndDepotServiceTime | 在终止站点的服务时间。该字段可用于为车辆卸货所用的时间建立模型。该字段可以包含空值;空值表示没有服务时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
EarliestStartTime |
路径允许的最早开始时间。求解程序通过将该字段与起始站点的时间窗结合使用来确定可行的路径开始时间。 该字段不能包含空值,其默认的“仅时间”值为 8:00 AM;该默认值被解释为分析图层的默认日期属性所指定日期的 08:00:00 AM。 当任一时间窗字段包含当时的日期时,将忽略默认日期。为避免在此种情况下出现错误,设置站点、路径、停靠点和休息点的所有时间窗的格式以包含当时的日期。 将网络数据集与跨越多个时区的流量数据结合使用时,EarliestStartTime 的时区与起始站点所在的边或交汇点的时区相同。 |
LatestStartTime | 路径允许的最晚开始时间。该字段不能包含空值,其默认的“仅时间”值为 10:00:00 AM;该默认值被解释为分析图层的默认日期属性所指定日期的 10:00:00 AM。 当任一时间窗字段包含当时的日期时,将忽略默认日期。为避免在此种情况下出现错误,设置站点、路径、停靠点和休息点的所有时间窗的格式以包含当时的日期。 将网络数据集与跨越多个时区的流量数据结合使用时,LatestStartTime 的时区与起始站点所在的边或交汇点的时区相同。 |
ArriveDepartDelay | 该字段存储将车辆加速到正常行驶速度、减速到停止状态以及离开和进入网络(例如,出入停车场)所需的行驶时间。通过包含 ArriveDepartDelay 值,可防止 VRP 求解程序发送多条路径来为完全重合的停靠点提供服务。 该属性的成本是因为对不重合的停靠点、站点和货物补给点进行访问而产生的。例如,如果路径从站点处开始,然后访问第一个停靠点,则总的到达/离开延迟会计入行驶时间。这同样适用于从第一个停靠点行驶到第二个停靠点的情况。如果第二个停靠点与第三个停靠点重合,则不会在它们之间添加 ArriveDepartDelay 值,因为车辆并不需要移动。如果路径行驶到一个货物补给点,则该值会再次计入行驶时间。尽管车辆需要减速、停下来休息,然后再加速,但 VRP 求解程序也不能将 ArriveDepartDelay 值计入休息时间。这表示如果路径离开某个停靠点、停下休息,然后继续行驶到下一个停靠点,则仅计入一次到达/离开延迟,而不是两次。 假设在一幢高层建筑物中有五个重合停靠点,而且可通过三条不同的路径来为它们提供服务。这意味着将产生三个到达/离开延迟;也就是说,三名驾驶员需要寻找停车位并进入同一栋建筑物。不过,如果可以仅通过一条路径来为这些停靠点提供服务,则只有一名驾驶员需要寻找停车位并进入该建筑物,这样只会产生一个到达/离开延迟。由于 VRP 求解程序会尝试将成本降至最低,所以它将尝试限制到达/离开延迟,因而会选择使用单一路径。(请注意,其他约束(例如,特殊要求、时间窗或容量)可能要求发送多条路径。) 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
容量 | 车辆的最大装载量(例如,体积、重量或数量)。如果车辆的最大载重量为 40000 磅,那么分析图层的图层属性 对话框中的容量计数应设置为 1,而 Capacities 应设置为 40000。同样,如果车辆的装载体积为 1000 立方英尺,则容量计数应设置为 1,而 Capacities 应设置为 1000。 如果在分析图层的容量计数参数中指定了多个容量,则使用空格来分隔 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 类型属性设置为“直线”将会返回连接每对连续访问位置的直线路径。具有测量值的实际形状和实际形状都会返回沿网络上相应路径描绘的线,不同之处在于具有测量值的实际形状会返回按时间进行线性参考的线。 |
ViolatedConstraints | 该字段包含约束冲突的汇总,并在求解操作之后进行设置。如果因某条路径而导致与约束发生冲突,则可将下列一个冲突或多个冲突的组合分配给该字段。
|
OrderCount | 分配给路径的停靠点数。 |
TotalCost | 路径的总运行成本,它是下列字段值的总和:
|
RegularTimeCost | 除任何不需支付酬金的休息时间外的规定工作时间的成本。 |
OvertimeCost | 除任何不需支付酬金的休息时间外的加班时间的成本。 |
DistanceCost | 通过将 TotalDistance 和 CostPerUnitDistance 字段值相乘得出的距离成本部分。如果没有为分析图层指定距离属性这一属性,则该字段值为空。 |
TotalTime | 路径总持续时间。该持续时间包括行驶时间以及在停靠点、站点和中断的服务和等待时间。TotalTime 值是下列字段值的总和:
该字段值的单位由分析图层的“时间字段单位”属性指定。 |
TotalOrderServiceTime | 在路径上的所有停靠点处所用的总服务时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
TotalBreakServiceTime | 在路径上的所有休息点处所用的总服务时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
TotalTravelTime | 路径的总行驶时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
TotalDistance | 路径的总行驶距离。 该字段值的单位由分析图层的“距离字段单位”属性指定。如果未使用分析参数指定“距离特性”属性,则该字段为空。 |
StartTime | 路径的开始时间。路径可能会在起始站点的时间窗打开之前开始,在这种情况下,起始站点处存在一个等待时间。 使用跨越多个时区的流量数据时,该时刻的时区将采用起始站点所在的网络元素对应的时区。 |
EndTime | 路径的结束时间。路径在终止站点处完成服务后结束。 使用跨越多个时区的流量数据时,该时刻的时区将采用终止站点所在的网络元素对应的时区。 |
TotalWaitTime | 在路径上的所有停靠点、站点和中断处的总等待时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
TotalViolationTime | 在路径上的所有停靠点和中断处的总冲突时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
RenewalCount | 如果路径包含更新,该字段就相当于为进行更新而访问站点的次数。 |
TotalRenewalServiceTime | 对于具有货物补给点的路径,该字段表示在路径上所有货物补给点所用的总服务时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
站点访问要素图层
如果路径在某个站点处开始、更新(卸货或重新装货)或终止,则会创建站点访问。站点访问对象提供与路径访问站点的原因以及在站点发生的事情有关的信息。在站点为车辆装载的货物量或从车辆卸载的货物量均记录在站点访问的属性中。另外,还包括用于解释车辆配送 (VRP) 解决方案的其他信息。
这是一个只有输出的网络分析类。站点访问要素完全是在求解操作期间创建的;因此,在求解过程之前,该分析类始终为空。
站点访问属性
站点访问的输出字段
输出字段 | 说明 |
---|---|
ObjectID | 系统管理的 ID 字段。 |
形状 | 指示网络分析对象地理位置的几何字段。 |
DepotName | 所访问站点的名称。该字段是“站点”网络分析类中 Name 字段的外键。 如果路径使用虚拟站点,即路径在停靠点(而不是站点)处开始或结束,则 DepotName 为空。 |
RouteName | 包含该访问的路径的名称。该字段是“路径”要素图层中 Name 字段的外键。 |
顺序 | 指示路径上所访问站点的顺序。路径的输出 sequence 值在站点访问、停靠点和休息点之间共享;从 1 开始(在起始站点处);并且是连续的。 |
VisitType | 访问该站点的原因。该字段受值的属性域约束:
|
ServiceTime | 在站点的服务时间(例如,装货或卸货)。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
FromPrevTravelTime | 从路径上的前一个访问位置到该站点的行驶时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
FromPrevDistance | 从路径上的前一个访问位置到该站点的行驶距离。 该字段值的单位由分析图层的“距离字段单位”属性指定。如果未使用分析参数指定“距离特性”属性,则该字段为空。 |
CumulTravelTime | 路径到达该站点时的累积行驶时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
CumulDistance | 路径到达该站点时的累积行驶距离。 该字段值的单位由分析图层的“距离字段单位”属性指定。如果未使用分析参数指定“距离特性”属性,则该字段为空。 |
CumulTime | 路径到达该站点(包括在站点停留)的累积持续时间。累积持续时间包括行驶时间以及在停靠点、站点和中断的服务和等待时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
ArriveTime | 到达站点的时间。路径到达站点的时间可能在站点的时间窗开始之前,在这种情况下,站点处存在一个等待时间。 使用跨越多个时区的流量数据时,该时刻的时区将与站点所在的网络元素的时区相同。 |
DepartTime | 离开站点的时间。 使用跨越多个时区的流量数据时,该时刻的时区将与站点所在的网络元素的时区相同。 |
WaitTime | 在站点等待的时间。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
CumulWaitTime | 从路径起始点到站点的累积等待时间(包括在站点的等待时间)。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
CumulViolationTime | 从路径起始点到站点的累积冲突时间(包括在站点的冲突时间)。 该字段值的单位由分析图层的“时间字段单位”属性指定。 |
TotalLoadedQuantities | 在站点的装载量(例如,重量、体积或数量)。如果在分析图层的容量计数属性中指定了多个容量,则使用空格来分隔它们。例如,在配送时,TotalLoadedQuantities 字段的值指明车辆在返回到站点之前所配送的实际货物量。该值小于或等于给定路径的 Capacities 字段值,表示路径执行一货车装载量的配送。 |
TotalUnloadedQuantities | 在站点的卸载量(例如,重量、体积或数量)。如果在分析图层的容量计数属性中指定了多个容量,则使用空格来分隔它们。例如,在进行接收或者路径包含更新时,TotalUnloadedQuantities 字段的值指明车辆接收并运到站点的实际货物量。该值小于或等于给定路径的 Capacities 字段值,表示路径执行一货车装载量的接收。 |
中断类
这是一个用来为车辆配送 (VRP) 中的路径存储休息时段或中断的非空间网络分析类。一个中断只与一条路径相关联,而且可在以下情况下获得:完成停靠点服务后、去往停靠点的途中或在为停靠点提供服务之前。休息点具有起始时间和持续时间,这段时间可能会为驾驶员支付报酬,也可能不支付。可通过三种方式来建立休息点的起始时间:可输入时间窗、最长行驶时间或最长工作时间。
时间窗休息点 - 要设置时间窗休息点,请输入两个时间值来限定休息点的起始时间范围。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 |
休息点时间窗的开始时间。 如果该字段为空,并且 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(5 小时 15 分钟)作为第二个休息点的 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 值应为正且对于各路径均唯一(在货物补给点、停靠点和休息点之间分配),但是不需要从 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 字段。 |
形状 | 指示网络分析对象地理位置的几何字段。 |
RouteName | 该区域所应用到的路径的名称。按区域配送最大可覆盖一条关联路径。该字段不能包含空值,而且是“路径”要素图层中 Name 字段的外键。 路径对象必须事先存在,才会显示在 RouteName 列表中。 |
IsHardZone |
用来指示按区域配送中的区域是硬性还是软性的布尔值。值为 True 表示区域是硬性的;也就是说,落在区域面以外的停靠点不能分配给该路径。默认值为 True (1)。值为 False (0) 表示这样的停靠点仍可进行分配,但是为停靠点提供服务的成本要根据一个函数进行加权得到,该函数基于与区域的欧氏距离。实际上,这意味着,随着软性区域到停靠点的直线距离的增加,停靠点被分配给路径的可能性将会降低。 |
按聚类中心配送类
该网络分析类存储给定车辆配送 (VRP) 分析图层的聚类中心。按聚类中心配送用于为路径指定基于点的聚类。通常,停靠点离路径的聚类中心越近,就越有可能被分配给该路径,前提是满足其他条件(例如,特殊要求和容量)。对停靠点进行聚类可能会导致路径覆盖较小的范围,且与其他路径的相交情况不如聚类前,但是解决方案的总体成本可能会增加。您可能希望使用聚类中心来使驾驶员在通常相邻的区域或他们较熟悉的地区内工作;如果划分好的路径更易于您组织进行管理,您也许希望使用这样的路径。
以下是使用按聚类中心配送时要考虑的几项规则和选择:
- 路径可拥有预分配的路径聚类中心,聚类中心可由 VRP 求解程序计算得到。
- 如果在分析中使用按聚类中心配送,则无法使用按区域配送。
- 如果使用按聚类中心配送,那么必须将一个路径聚类中心分配给一条路径。
- 路径聚类中心类型不能混用;网络分析类包含的聚类中心要么全部为动态聚类中心,要么全部为静态聚类中心。
路径聚类中心属于点要素;不过它们并不属于网络位置。因此,它们没有网络位置字段。
按聚类中心配送类
按聚类中心配送的输入字段
输入字段 | 说明 |
---|---|
ObjectID | 系统管理的 ID 字段。 |
RouteName | 该聚类中心所应用到的路径的名称。每条路径最多只能有一个路径聚类中心。该字段不能包含空值,而且是“路径”类中 Name 字段的外键。路径对象必须事先存在,才会显示在 RouteName 列表中。 |
SeedPointType | 聚类中心的类型。该字段受值的属性域约束,可能的值有静态和动态。该字段的默认值为“静态”。 使用静态按聚类中心配送时,需指定路径聚类中心的位置,求解程序会尝试在该聚类中心所在位置周围对路径进行聚类。使用动态聚类中心时,需在地图上的任意位置添加聚类中心,停靠点会在求解过程中进行聚类,然后聚类中心会重新定位到路径停靠点的质心。 |
按聚类中心配送的输入/输出字段
输入/输出字段 | 说明 |
---|---|
形状 | 该输入字段用于指示路径聚类中心的位置。静态按聚类中心配送的输入点形状在整个求解过程中保持不变。 另一方面,动态聚类中心的输入形状会被忽略,求解程序会在求解过程中修改 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) 求解程序主要是基于最小化时间。
距离属性
用于定义沿网络元素的长度的距离成本属性。距离成本属性是可选的。
默认日期
指定了时间但未指定日期的时间字段值的隐式日期。如果某个停靠点的时间字段(如 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 形转弯
Network Analyst 允许在任何位置、仅在死角(或死胡同 (cul-de-sac))或者仅在交点和死角处出现 U 形转弯,也可禁止在任何位置出现 U 形转弯。允许 U 形转弯表示路径可以在交汇点处转向并沿同一街道往回行驶。
输出 Shape 类型
可以采用四种方法之一表示分析输出的路径要素。
- 实际形状提供了生成路径的精确形状。
- 具有测量值的实际形状提供了生成路径的精确形状。而且,输出还包括线性参考的路径测量值。测量值从第一个停靠点增加并记录累积阻抗。
- 直线会在两个停靠点之间生成一条直线。
- 当输出 shape 类型设置为无时,将不返回任何形状。
在以上所有情况下,解决方案中基于时间和基于距离的成本均相同,而且“路径”要素图层属性也相同;唯一的不同之处在于“路径”输出的形状或者是否自动建立线性参考。
应用等级
如果网络数据集具有等级属性,则可在分析时使用该等级。使用等级的结果是,求解程序更偏好高等级的边而不是低等级的边。分等级求解的速度更快,并且可以用于模拟驾驶员对在高速公路(而非地方道路)上行驶的偏好,即使这意味着行程更远。但是,如果不使用等级,则会为网络数据集生成精确的路线。
忽略无效的停靠点位置
指定在求解车辆配送 (VRP) 时是否忽略无效停靠点。如果未选中该选项且存在任何无效停靠点,则求解操作将失败。
无效停靠点是指 VRP 求解程序无法到达的停靠点。停靠点不可达的原因可能有多种,其中包括:停靠点定位于禁止的网络元素,停靠点未定位于网络,或停靠点定位于网络的离线部分。
整理并解决无效停靠点的原因需要时间。因此,如果需要生成路径并将其立即提供给驾驶员,则可以忽略无效路径,并为驾驶员求解和分发路径。然后,解决上次求解时的无效停靠点,并将其包含在下一工作日或工作时段的 VRP 分析中。
限制
可以选择在求解分析时应遵守的限制属性。在大多数情况下,限制会使道路被禁止选择,但限制也可以使道路被避免选择或优先选择。为必须遵守单行道规则的车辆(例如,非紧急车辆)查找解决方案时,应使用“单向”等限制属性。其他常见限制属性包括:禁止某些车辆穿过特定道路或桥的高度或重量限制;要求危险品司机需要完全绕道或至少尽量避免的危险材料限制;及货车司机应该遵循的指定货车路线。可以选择在求解分析时应遵守的限制属性。(您可以进一步在属性参数选项卡中指定是否应该禁止、避免或首选使用限制条件的元素。)
方向
通过“方向”属性,您可以设置距离的显示单位,也可根据需要设置时间的显示单位。此外,还可以选择路线后生成自动打开方向信息。(如果未选择自动显示方向信息,则可单击方向窗口按钮 来显示。)
“高级设置”选项卡
图层属性 对话框的高级设置选项卡显示车辆配送 (VRP) 分析图层的以下属性。在此处指定的设置会影响求解程序在处理路径的时间窗冲突和需求点对的额外行驶时间时的优先级。可指定的值有低、中和高。重要性越高,求解程序就会越尽力减少或消除关联的时间窗冲突或额外行驶时间。
时间窗冲突
时间窗冲突:该属性可用于评定遵循时间窗且不引起冲突的重要性。如果路径在时间窗关闭后才到达停靠点、站点或休息点,将会产生时间窗冲突。该冲突是时间窗关闭与路径到达时间之间的时间间隔。
VRP 解决方案可根据您为时间窗冲突属性选择的值而做出相应改变。下面的列表介绍了这些值的含义以及所生成的 VRP 解决方案会如何发生变化:
高 - 求解程序尝试找到一种最小化时间窗冲突的解决方案(以增加总体行驶时间为代价)。如果对您而言按时到达停靠点要比最小化总体解决方案成本更加重要,请选择“高”。您可能会在以下情况下选择此设置:您要在自己的停靠点会见客户,且不想因为迟到给客户带来不便(另一种方法是使用根本不会出现冲突的硬性时间窗)。
假设还要考虑车辆配送 (VRP) 的其他约束,可能无法在它们的时间窗内访问所有停靠点。在这种情况下,即使选择“高”设置也可能会产生冲突。
中 - 这是默认设置。求解程序在满足时间窗和减少总体解决方案成本之间寻求一种平衡。
低 - 求解程序尝试找到一种最小化总体行驶时间的解决方案(不考虑时间窗)。如果减少您的总体解决方案成本要比满足时间窗更重要,请选择“低”。如果积压的服务请求逐渐增多,则可以使用此设置。如果为了在当日内为更多的停靠点提供服务并减少积压的订单,则可选择“低”,即使车队迟到会为客户带来不便。
下面的两个图显示的是同一组停靠点和站点;然而,路径并不相同,这是因为使用的“时间窗冲突”设置不同。左图显示的是在“时间窗冲突”的重要性设置为“低”时生成的路径。路径虽短但存在时间窗冲突。如果设置为“高”,则路径会满足所有时间窗的要求,但是花费的时间会更长,因为它会优先为带有时间窗的停靠点提供服务。
额外行驶时间
该属性可用于评定减少额外行驶时间的重要性。额外行驶时间是指超出停靠点对间直线行驶所需时间的数量。额外时间是由于在需求点对的访问期间进行休息或者行驶至其他停靠点或站点而导致的。
VRP 解决方案可根据您选择的超出行驶时间值而做出相应改变。下面的列表介绍了这些值的含义以及所生成的 VRP 解决方案会如何发生变化:
- 高 - 求解程序尝试找到一种缩短停靠点对之间额外行驶时间的解决方案(以增加总体行驶成本为代价)。如果您正在停靠点对间运载乘客并且想缩短他们的乘车时间,则这种情况适合使用此设置。这是出租车服务的特征。
- 中 - 这是默认设置。求解程序在缩短额外行驶时间和减少总体解决方案成本之间寻求一种平衡。
- 低 - 求解程序尝试找到一种最小化总体解决方案成本的解决方案(不考虑额外行驶时间)。此设置通常应用于快递服务。由于快递运输的是包裹而不是人员,因此无需担心行驶时间。使用“低值”时,邮递员可以按照最适合的顺序为配对停靠点提供服务,并且使总体解决方案成本最低。
下面的两个图显示的是同一组停靠点和站点;然而,路径并不相同,这是因为使用的“超出行驶时间”设置不同。左图显示的是在“超出行驶时间”的重要性设置为“低”时生成的路径。整条路径很短,但从第一个停靠点到配对停靠点(机场)的行驶时间很长。如果重要性设置为“高”,对于右侧的停靠点来说,路径会在保持到飞机场的行驶时间不变的情况下,缩短从第一个停靠点到飞机场的时间;不过,路径的总体成本会增加。
网络位置选项卡
网络位置选项卡上的参数用于查找网络位置并为其属性赋值。
对车辆配送 (VRP) 结果进行求解和解释
在创建车辆配送 (VRP) 分析图层、填充所需的网络分析对象以及设置相应的分析属性后,可通过单击 Network Analyst 工具条上的求解按钮 来获得车辆配送 (VRP) 分析图层的解决方案。
求解之后,如果输出 Shape 类型属性设置为实际形状,则车辆配送 (VRP) 求解程序会沿着网络来绘制连接各条路径的起始站点、停靠点、更新站点和终止站点的线。
Network Analyst 窗口还会更新“停靠点”类,以将所有停靠点按照作为它们分配目标的路径进行分组。“站点访问”类会进行更新,以显示各条路径的起始站点、终止站点和货物补给站点。
求解过程中,车辆配送 (VRP) 求解程序会忽略 AssignmentRule 字段值被设为“排除”的所有路径以及 AssignmentRule 字段值被设为“排除”的所有停靠点。
然后,车辆配送 (VRP) 求解程序将时间属性用作阻抗,并将距离属性(如果已指定)用作累积属性,从而计算一个在内部进行管理的停靠点与站点位置之间的起始-目的地 (OD) 成本矩阵。
VRP 求解程序会创建一个由预分配的停靠点、休息点和更新访问组成的初始解决方案,前提是这些网络分析对象均被预分配给路径。如果使用这种预分配找不到有效的初始解决方案(也就是说,某些约束是存在冲突的),则求解过程将失败。
虽然存在未安排路径的停靠点,但 VRP 求解程序也会尝试将其中成本最低的停靠点插入到最适合的路径中。如果重新排序可以改善解决方案,求解程序就会尝试对分配给路径的停靠点进行重新排序,但不会移动 AssignmentRule 字段值设为“保留路径和相对顺序”的停靠点的相对顺序。
为所有可能的停靠点成功指定路径后,车辆配送 (VRP) 求解程序将输出网络分析对象的相应输出字段中的结果。如果路径无法到达某些停靠点,则将约束冲突输出到“停靠点”要素图层中的 ViolatedConstraints 字段。如果求解方案中未使用某路径,则其输出字段会设为空。
解释车辆配送 (VRP) 分析的结果
成功求解车辆配送 (VRP) 分析图层后,可以读取“中断”表、“站点访问”要素图层、“停靠点”要素图层和“路径”要素图层的输入字段和输出字段,从而汇总各条路径的路径安排解决方案。对于各条路径,获得路径走行路线的方法是,按 RouteName 进行搜索,然后查看“中断”、“站点访问”和“停靠点”中的 sequence 值。您可生成方向指示来编译相似的走行路线。“路径”要素图层可提供经过计算后的各条路径的汇总信息。