求解车辆配送问题 (即用型)

摘要

求解车辆配送问题 (VRP) 以便找到车队的最佳路径。

通常,要求车队的调度员做出有关车辆配送的决策。 此类决策包括如何将一组客户以最佳方式分配给一支车队,以及安排他们的访问顺序和日程。 解决此类 VRP 的目标是通过遵循所有时间窗并使每个路径的整体运营和投资成本降至最低,为客户提供一个高水准的服务。 约束条件是在司机倒班、行进速度和客户承诺所施加的时间限制内,利用可用资源完成路径。

此服务可用于确定此类复杂车队管理任务的解决方案。

以将货物从中心仓库位置运送到杂货店为例。 在仓库所在位置有三辆卡车可用。 此仓库仅在特定的时间窗内营业(上午 8:00 至下午 5:00),所有卡车必须在此期间返回至仓库。 每辆卡车的载重量为 15,000 磅,这对其所能运送的货物量进行了限制。 每个商店对需要运送的货物都有具体的数量要求(磅),而且每个商店都对交货时限有具体的要求。 司机每天只能工作八小时,要求有午餐时间,且依据驾驶时间和为商店提供服务的时间来领取薪水。 目标是既能得出每个司机的行驶线路(或路径),以便交货时既能够满足所有服务要求,又能够将司机花在特定路径上的总时间降至最低。 下图显示了求解上述车辆配送问题所得到的三条路径。

旧版本:
这是已弃用的服务

插图

求解 VRP 的结果

使用情况

  • 使用求解车辆配送问题服务生成车队的路径,该路径需访问多个停靠点以进行配送、接收或服务调用。 该服务在异步模式下运行,非常适合需要更长时间才能解决的较大问题。

  • 即用型工具箱中的工具是利用 ArcGIS Online 托管数据和分析功能的 ArcGIS Online 地理处理服务。

  • 最多可添加 2,000 个停靠点和 100 条路径。 同时,最多可将 200 个停靠点分配给一条路径。

  • 最多可以添加 250 个点障碍。您可以添加任意数量的线障碍或面障碍,但线障碍的相交数不能超过 500 个街道要素,面障碍的相交数不能超过 2,000 个要素。

  • 无论是否选中使用等级参数 (True),只要停靠点之间、站点之间或站点和停靠点之间的直线距离大于 50 英里(80.46 公里),便会始终使用等级。

  • 出行模式设置为步行时或者设置为自定义并且使用步行约束条件时,任何停靠点或站点之间的直线距离不得大于 27 英里(43.45 千米)。

  • 如果输入点与其最近的可穿过街道之间的距离大于 12.42 英里(20 千米),则将从分析中排除该点。

参数

标注说明数据类型
停靠点

指定 VRP 分析的路径将访问的一个或多个位置。 停靠点可以表示送货(例如配送家具)、接收(例如机场巴士接送乘客)或某种类型的服务或检查(例如,树木修剪作业或建筑物检查)。

指定停靠点后,可使用以下特性为每个停靠点设置属性,例如停靠点的名称或服务时间:

ObjectID

系统管理的 ID 字段。

Name

停靠点的名称。 名称必须唯一。 如果该名称为空,则求解时会自动生成一个名称。

Description

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

ServiceTime

该属性指定了路径访问网络位置所花费的时间;也就是说,它存储了网络位置的阻抗值。 零值或空值表示网络位置不需要任何服务时间。

该字段值的单位由 time_units 参数指定。

TimeWindowStart1

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

时间窗仅说明车辆何时可以到达停靠点,并不说明服务时间必须何时结束。 为了考虑服务时间并在时间窗终止前离开,请从 TimeWindowEnd1 字段中减去 ServiceTime

时间窗口字段(TimeWindowStart1TimeWindowEnd1TimeWindowStart2TimeWindowEnd2)可以在日期字段中包含仅时间值或日期和时间值,但不能是表示自新纪元以来的毫秒数的整数。 时间窗口字段的时区可以使用时间字段的时区使用情况参数进行指定。 如果像 TimeWindowStart1 这样的时间字段具有“仅时间”值(例如 8:00 a.m.),则假定日期是针对分析设定的默认日期。 使用“日期和时间”值(例如 7/11/2010 8:00 a.m.)允许您设置持续多天的时间窗。

求解跨越多个时区的问题时,每个停靠点的时间窗值均采用停靠点所处位置的时区。

TimeWindowEnd1

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

TimeWindowStart2

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

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

如果两个时间窗均不为空,则二者不能重叠。 而且,第二个时间窗必须在第一个之后出现。

TimeWindowEnd2

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

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

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

MaxViolationTime1

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

该字段值的单位由时间字段单位参数指定

时间窗冲突可通过求解程序进行追踪和加权。 因此,您可以指示 VRP 求解程序执行以下操作之一:

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

通过指定时间窗冲突重要性参数的重要性级别,实际上就是从这三个选项中任选其中一个。 不过,无论在什么情况下,只要超过了为 MaxViolationTime1 设置的值,求解程序就会返回错误。

MaxViolationTime2

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

InboundArriveTime

定义要配送到停靠点的项在起始站点准备就绪的时间。

仅当入站到达时间早于路径的最晚开始时间值时,才能将该停靠点分配给此路径;这样,在项已准备就绪,可以进行装载之前,路径无法离开站点。

此字段有助于对涉及入站中转的情景进行建模。 例如,停靠点的某项作业需要一些特殊材料,但该站点当前并不具备这些材料。 现在正从另一位置运送这些材料,预计将在上午 11:00 到达该站点。为了确保不会将在货物到达之前离开的路径分配给此停靠点,停靠点的入站到达时间被设置为上午 11:00。 这些特殊材料在上午 11:00 到达后会被装载到车辆上,随后车辆离开该站点,驶向指派的停靠点。

注:

  • 包括服务时间在内的路径开始时间必须晚于入站到达时间。 如果路径的开始时间早于停靠点的入站到达时间,则无法将该停靠点分配给这一路径。 即使路径的起始站点服务时间晚于入站到达时间,这种分配也仍然无效。

  • 此时间字段可以包含“仅时间”值或“日期和时间”值。 如果该字段的设置为“仅时间”值(例如,11:00 AM),则假定日期为针对分析设置的默认日期。 但是,当站点、路径、停靠点或中断内的任一时间字段包含当时的日期时,将会忽略默认日期。 此时,需要使用日期和时间(例如,7/11/2015 11:00 AM)指定所有此类字段。

  • 无论 DeliveryQuantities 值为多少,VRP 求解程序都会遵循 InboundArriveTime

  • 如果同时指定了出站离开时间,则其时间值必须晚于入站到达时间。

OutboundDepartTime

定义要在停靠点接收的货物必须到达终止站点的时间。

仅当路径能够访问停靠点且到达终止站点的时间早于指定的出站离开时间时,才能将该停靠点分配给路径。

此字段有助于对涉及出站中转的情景进行建模。 例如,货运公司派出运货车去接收停靠点的包裹,并将其运送至采用其他设施的转运站点,然后将其送往最终目的地。 每天下午 3:00 会有一辆半挂车停靠在该站点,接收高优先级包裹并将其直接送往中转站。 为了避免将这些高优先级包裹的配送延迟至第二天下午 3:00 的行程,货运公司尝试让运货车在下午 3:00 之前接收停靠点的高优先级包裹,同时在该截止时间之前将其运送至中转站。 这完全可以通过将出站离开时间设置为下午 3:00 来实现。

注:

  • 包括服务时间在内的路径结束时间必须早于出站离开时间。 如果路径能够到达某站点,但其终止站点服务时间晚于该停靠点的出站离开时间,则无法将该停靠点分配给路径。

  • 此时间字段可以包含“仅时间”值或“日期和时间”值。 如果该字段的设置为“仅时间”值(例如,11:00 AM),则假定日期为针对分析设置的默认日期。 但是,当站点、路径、停靠点或中断内的任一时间字段包含当时的日期时,将会忽略默认日期。 此时,需要使用日期和时间(例如,7/11/2015 11:00 AM)指定所有此类字段。

  • 无论 PickupQuantities 值为多少,VRP 求解程序都会遵循 OutboundDepartTime

  • 如果同时指定了入站到达时间,则其时间值必须早于出站离开时间。

DeliveryQuantities

配送量。 可以按任何度量单位(如重量、体积或数量)来指定配送量。 也可以指定多个度量单位,例如,重量和体积。

输入未指明单位的配送量数值。 例如,如果需要将一个 300 磅的对象配送到某个停靠点,请输入 300。 您需要记住,该值的单位是磅。

如果您正在追踪的是具有多个维度的对象,请以空格分隔各维度的值。 例如,如果您在记录一次重 2,000 磅,体积为 100 立方英尺的配送业务的重量和体积,请输入 2000 100。 同样地,您需要记住单位,在这种情况下,单位分别是磅和立方英尺。 您还需要记住值及其对应单位的输入顺序。

确保以同样的方式指定“路径”的 Capacities 以及“停靠点”的 DeliveryQuantitiesPickupQuantities;即这些值的单位必须相同。 如果使用多个度量单位,则需要按照相同顺序列出所有参数的度量单位。 例如,对于 DeliveryQuantities,如果以磅为单位指定重量,后面以立方英尺为单位指定体积,则必须按照相同的方式指定路径的容量和停靠点的接收量:以磅为单位指定重量,后面以立方英尺为单位指定体积。 如果使用的单位不同或顺序发生变化,那么您将得到意外结果,但不会收到任何警告消息。

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

PickupQuantities

接收的大小。 可以按任何度量单位(如重量、体积或数量)来指定配送量。 也可以指定多个度量单位,例如,重量和体积。 但是,不可以使用负值。 该字段与“停靠点”的 DeliveryQuantities 字段相似。

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

Revenue

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

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

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

SpecialtyNames

一个以空格分隔的字符串,其中包含了停靠点特性要求的名称。 空值表示停靠点没有特殊要求。

停靠点和路径类中列出的所有特性的拼写必须完全匹配,这样 VRP 求解程序才能将它们链接起来。

为了说明什么是特殊要求及其工作方式,假设草坪护理及树木修剪公司都有一部分停靠点需要使用斗式铲车来修剪所有树木。 公司可以在 SpecialtyNames 字段中为这些停靠点输入 BucketTruck 来表示其特殊需求。 SpecialtyNames 将保留为空值(对于其他停靠点)。 同样,公司也可以在带液压吊杆的铲车路径的 SpecialtyNames 字段中输入 BucketTruck。 对于其他路径,该字段将保留为空值。 求解时,VRP 求解程序会将无任何特殊要求的停靠点分配给任意路径,而将需要斗式铲车的停靠点分配给有斗式铲车的路径。

AssignmentRule

用于指定将停靠点分配给路径时所要遵循的规则。 该字段值可指定为以下整数之一(请使用数值代码而非括号中的名称):

  • 0(排除)- 停靠点不参与后续的求解操作。
  • 1(保留路径和相对顺序)- 在求解操作过程中,求解程序必须始终将停靠点分配给预分配的路径并且遵照预先分配的相对顺序。 如果无法遵守该分配规则,就会导致停靠点冲突。 使用此设置,仅维护相对顺序,而不是绝对顺序。 为说明其中的含义,设想有两个停靠点:A 和 B。 其顺序值分别为 2 和 3。 如果将其 AssignmentRule 字段值设置为“保留路径和相对顺序”,则求解后 A 和 B 的顺序值可能发生改变,因为可以在 A 和 B 之前、之间或之后排序其他停靠点、休息点和站点访问。 只是,B 不可以排在 A 之前。
  • 2(保留路径)- 求解操作过程中,求解程序必须始终将停靠点分配给预分配的路径。 即使不一定会保留顺序,但也必须设置有效的顺序。 如果无法将停靠点分配给指定的路径,就会导致停靠点冲突。
  • 3(覆盖)- 在求解操作过程中,求解程序会尝试为停靠点保留路径和顺序的预分配信息。 不过,如果停靠点的新路径或新顺序有助于最小化目标函数的总体值,则可能会为停靠点分配新路径或新顺序。 这是默认值。
  • 4(固定第一个)- 在求解操作过程中,求解程序会忽略停靠点的路径和顺序预分配信息(如果有的话)。 求解程序将为停靠点分配路径,并使其成为该路径上的第一个停靠点,从而最小化目标函数的总体值。
  • 5(固定最后一个)- 在求解操作过程中,求解程序会忽略停靠点的路径和顺序预分配信息(如果有的话)。 求解程序将为停靠点分配路径,并使其成为该路径上的最后一个停靠点,从而最小化目标函数的总体值。

该字段不能包含空值。

CurbApproach

指定车辆到达和离开停靠点的方向。 该字段值可指定为以下整数之一(请使用数值代码而非括号中的名称):

  • 0(车辆的任意一侧)- 车辆可从任一方向到达和离开停靠点,因此在事件点处允许 U 形转弯。 如果车辆有可能要在停靠点处调头,则可以选择该设置。 此决策可能取决于道路的宽度以及交通量,或者该停靠点是否有停车场能让车辆驶入并调头。
  • 1(车辆的右侧)- 当车辆到达和离开停靠点时,停靠点必须在车辆右侧。 禁止 U 形转弯。 通常用于必须在右侧停靠的车辆(如公共汽车)。
  • 2(车辆的左侧)- 当车辆到达和离开停靠点时,路边必须在车辆左侧。 禁止 U 形转弯。 通常用于必须在左侧停靠的车辆(如公共汽车)。
  • 3(禁止 U 形转弯)- 当车辆到达停靠点时,路边可在车辆的任意一侧;但是,车辆在离开时不得调头。

CurbApproach 属性是专为使用以下两种国家驾驶标准而设计的:右侧通行(美国)和左侧通行(英国)。 首先,考虑位于车辆左侧的停靠点。 不管车辆行驶在左车道还是右车道,停靠点始终位于车辆的左侧。 决定从其中任一方向到达停靠点可能会随国家驾驶标准更改,也就是说,从车辆的右侧或左侧靠近停靠点。 例如,如果要到达一个停靠点并且在车辆与停靠点之间不存在其他交通车道,在美国应该选择 1(车辆的右侧),而在英国应该选择 2(车辆的左侧)。

RouteName

向其分配停靠点的路径的名称。

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

完成求解操作后,如果已为停靠点分配路径,则 RouteName 字段将包含向其分配停靠点的路径的名称。

Sequence

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

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

输入顺序值应为正且对于各路径均唯一(在货物补给点、停靠点和休息点之间共享),但是不需要从 1 开始,也不需要连续。

执行求解操作后,Sequence 字段中会包含停靠点在其分配的路径上的顺序值。 路径的输出 sequence 值在货物补给点、停靠点和休息点之间分配;从 1 开始(在起始站点处);并且是连续的。 已分配路径的停靠点的最小可能输出顺序值为 2,因为路径始终从站点处开始。

Bearing

点移动的方向。 单位为度,从正北开始沿顺时针方向进行测量。 该字段与 BearingTol 字段结合使用。

方位角数据通常会从配有 GPS 接收器的移动设备自动发送。 如果正在加载移动输入位置(例如行人或车辆),请尝试包括方位角数据。

使用该字段可以防止将位置添加到错误的边上,例如,车辆刚好在交叉路口或天桥附近时。 方位角也可帮助工具确定点在街道的哪一边上。

BearingTol

使用 Bearing 字段在边上定位移动点时,方位角容差值将创建一个可接受方位角值的范围。 如果 Bearing 字段值在可接受值范围(由边上的方位角容差生成)内,则可以将该点作为网络位置添加在此处,否则,将计算下一个最近边上的最近点。

单位为度,默认值为 30。 值必须大于 0 且小于 180。 值为 30 表示,Network Analyst 尝试在边上添加网络位置时,在边的每一侧(左侧和右侧)的两个数字化方向上都将生成一个 15 度的可接受方位角值。

NavLatency

如果 BearingBearingTol 也具有值,则该字段只在求解过程中使用;但是,即使当 BearingBearingTolNavLatency 字段中有值时,NavLatency 值的输入也是可选的。NavLatency 表示 GPS 信息从移动的车辆上发送到服务器以及车辆导航设备接收到处理后路径这两个时刻之间预期要花费的成本。

NavLatency 的单位与阻抗属性的单位相同。

Feature Set
站点

为给定车辆配送问题指定一个或多个站点。 站点是指车辆在工作时间开始时离开并在工作时间结束后返回的位置。 车辆在站点装货(对于配送)或卸货(对于接收)。 在某些情况下,站点还可以作为一个货物补给或货物更新的位置,车辆可以在此处卸货或重新装货,然后继续进行配送和接收。 站点具有打开时间和关闭时间,这由硬性时间窗指定。 车辆不能在该时间窗以外的时刻到达站点。

指定站点后,可使用以下特性为每个站点设置属性,例如站点的名称或服务时间:

ObjectID

系统管理的 ID 字段。

Name

站点的名称。 路径上的 StartDepotNameEndDepotName 字段引用您在此处指定的名称。 使用路径货物补给点时,也会对其进行引用。

站点名称不区分大小写,但必须非空且唯一。

Description

有关站点位置的描述性信息。 描述性信息可以包含任何文本信息,对唯一性没有任何限制。

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

TimeWindowStart1

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

时间窗口字段(TimeWindowStart1TimeWindowEnd1TimeWindowStart2TimeWindowEnd2)可以在日期字段中包含仅时间值或日期和时间值,但不能是表示自新纪元以来的毫秒数的整数。 时间窗口字段的时区可以使用时间字段的时区使用情况参数进行指定。 如果像 TimeWindowStart1 这样的时间字段具有“仅时间”值(例如 8:00 a.m.),则假定日期是针对分析设定的默认日期。 使用“日期和时间”值(例如 7/11/2010 8:00 a.m.)允许您设置持续多天的时间窗。

解决跨越多个时区的问题时,每个站点时间窗的值均采用站点所处位置的时区。

TimeWindowEnd1

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

TimeWindowStart2

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

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

如果两个时间窗均不为空,则二者不可以重叠。 而且,第二个时间窗必须在第一个之后出现。

TimeWindowEnd2

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

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

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

CurbApproach

  • 0(车辆的任意一侧)- 车辆可从任一方向到达和离开站点,因此事件点处允许 U 形转弯。 如果您的车辆有可能要在站点处调头,则可以选择该设置。 此决策可能取决于道路的宽度以及交通量,或者该站点是否有停车场能让车辆驶入并调头。
  • 1(车辆的右侧)- 当车辆到达和离开站点时,站点必须在车辆右侧。 禁止 U 形转弯。 通常用于必须在右侧停靠的车辆(如公共汽车)。
  • 2(车辆的左侧)- 当车辆到达和离开站点时,路边必须在车辆右侧。 禁止 U 形转弯。 通常用于必须在左侧停靠的车辆(如公共汽车)。
  • 3(禁止 U 形转弯)- 当车辆到达站点时,路边可在车辆的任意一侧;但是,车辆在离开时不得调头。

CurbApproach 属性是专为使用以下两种国家驾驶标准而设计的:右侧通行(美国)和左侧通行(英国)。 首先,考虑位于车辆左侧的站点。 不管车辆行驶在左车道还是右车道,停靠点始终位于车辆的左侧。 决定从其中任一方向到达站点可能会随国家驾驶标准更改,也就是说,从车辆的右侧或左侧靠近事件点。 例如,如果想要到达一个站点并且在车辆与站点之间不存在其他交通车道,在美国应该选择 1(车辆的右侧),而在英国应该选择 2(车辆的左侧)。

Bearing

点移动的方向。 单位为度,从正北开始沿顺时针方向进行测量。 该字段与 BearingTol 字段结合使用。

方位角数据通常会从配有 GPS 接收器的移动设备自动发送。 如果正在加载移动输入位置(例如行人或车辆),请尝试包括方位角数据。

使用该字段可以防止将位置添加到错误的边上,例如,车辆刚好在交叉路口或天桥附近时。 方位角也可帮助工具确定点在街道的哪一边上。

BearingTol

使用 Bearing 字段在边上定位移动点时,方位角容差值将创建一个可接受方位角值的范围。 如果 Bearing 字段值在可接受值范围(由边上的方位角容差生成)内,则可以将该点作为网络位置添加在此处,否则,将计算下一个最近边上的最近点。

单位为度,默认值为 30。 值必须大于 0 且小于 180。 值为 30 表示,Network Analyst 尝试在边上添加网络位置时,在边的每一侧(左侧和右侧)的两个数字化方向上都将生成一个 15 度的可接受方位角值。

NavLatency

如果 BearingBearingTol 也具有值,则该字段只在求解过程中使用;但是,即使当 BearingBearingTolNavLatency 字段中有值时,NavLatency 值的输入也是可选的。NavLatency 表示 GPS 信息从移动的车辆上发送到服务器以及车辆导航设备接收到处理后路径这两个时刻之间预期要花费的成本。

NavLatency 的单位与阻抗属性的单位相同。

Feature Set
路径

指定一个或多个用于描述车辆和驾驶员特征的路径。 路径可以具有开始和结束站点服务时间、固定或灵活的起始时间、基于时间的运行成本、基于距离的运行成本、多个容量、对驾驶员工作时间的各种约束等等。

可通过以下属性指定路径:

Name

路径的名称。 名称必须唯一。

如果字段值为空,则工具会在求解时生成唯一的名称。因此,在大多数情况下,可自行选择是否输入值。 但是,如果您的分析中包括向路径预分配的中断、路径货物补给点、按区域配送或停靠点,则您必须输入名称,因为在这些情况下路径名称将用作外键。 路径名称不区分大小写。

StartDepotName

路径的起始站点名称。 该字段是“站点”中 Name 字段的外键。

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

如果停靠点或站点跨多个时区,则不允许使用虚拟起始站点。

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

EndDepotName

路径的终止站点名称。 该字段是“站点”中 Name 字段的外键。

StartDepotServiceTime

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

该字段值的单位由时间字段单位参数指定。

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

EndDepotServiceTime

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

该字段值的单位由时间字段单位参数指定。

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

EarliestStartTime

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

该字段不能包含空值,其默认“仅时间”值为 8:00 AM。 该默认值被解释为针对分析设置的默认日期的 8:00 a.m。

解决跨越多个时区的问题时,EarliestStartTime 的时区与起始站点所在的时区相同。

LatestStartTime

路径允许的最晚开始时间。

该字段不能包含空值,其默认“仅时间”值为 10:00 AM。 该默认值被解释为针对分析设置的默认日期的 10:00 a.m。

解决跨越多个时区的问题时,LatestStartTime 的时区与起始站点所在的时区相同。

ArriveDepartDelay

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

该属性的成本是因为对不重合的停靠点、站点和货物补给点进行访问而产生的。 例如,如果路径从站点处开始,然后访问第一个停靠点,则总的到达/离开延迟会计入行驶时间。 这同样适用于从第一个停靠点行驶到第二个停靠点的情况。 如果第二个停靠点与第三个停靠点重合,则不会在它们之间添加 ArriveDepartDelay 值,因为车辆并不需要移动。 如果路径行驶到一个货物补给点,则该值会再次计入行驶时间。

尽管车辆必须减速、停下来休息,然后再加速,但 VRP 求解程序也不能将 ArriveDepartDelay 值计入休息时间。 这表示如果路径离开某个停靠点、停下休息,然后继续行驶到下一个停靠点,则仅计入一次到达/离开延迟,而不是两次。

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

该字段值的单位由 time_units 参数指定。

Capacities

车辆的最大容量。 可以按任何度量单位(如重量、体积或数量)来指定容量。 也可以指定多个度量单位,例如,重量和体积。

输入未指明单位的容量。 例如,如果您车辆的最大载重为 40,000 磅,输入 40000。 您需要记住,该值的单位是磅。

如果您正在追踪的是具有多个维度的对象,请以空格分隔各维度的值。 例如,如果您在记录一次重 2,000 磅,体积为 100 立方英尺的配送业务的重量和体积,请输入 2000 100。 同样地,您需要记住单位,在这种情况下,单位分别是磅和立方英尺。 您还需要记住值及其对应单位的输入顺序。

鉴于以下原因,记住单位和单位顺序非常重要:第一,您可以在稍后重新解释信息;第二,您可以在停靠点的 DeliveryQuantitiesPickupQuantities 字段中输入正确的值。 请注意,VRP 求解程序会同时引用 CapacitiesDeliveryQuantitiesPickupQuantities,以确保路径不会超载。 不能在字段中输入单位,VRP 工具无法进行单位转换。 必须以相同的单位和单位顺序在这三个字段中输入值,才能确保正确地解释值。 如果在这三个字段的任意字段中使用的单位不同或顺序发生变化,将得到意外结果,但不会收到任何警告消息。 建议您事先设置单位和单位顺序标准,且后续在这三个字段中输入值时始终参考此标准。

空字符串或空值等同于无穷大。 容量值不能为负。

如果 Capacities 字段中值的个数相对于停靠点的 DeliveryQuantitiesPickupQuantities 字段来说数量不足,则其余的值将被视为无穷大。

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

FixedCost

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

CostPerUnitTime

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

该字段值的单位由 time_units 参数指定。

CostPerUnitDistance

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

该字段值的单位由 distance_units 参数指定。

OvertimeStartTime

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

该字段值的单位由 time_units 参数指定。

例如,如果路径总持续时间超过八小时,要为驾驶员支付加班费,假定时间单位为“分钟”,则 OvertimeStartTime 将被指定为 480(8 小时 * 60 分钟/小时)。

CostPerUnitOvertime

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

MaxOrderCount

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

MaxTotalTime

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

该字段值的单位由 time_units 参数指定。

MaxTotalTravelTime

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

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

该字段值的单位由 time_units 参数指定。

MaxTotalDistance

路径允许的最长行驶距离。

该字段值的单位由 distance_units 参数指定。

该字段可以包含空值;空值表示对允许的最长行驶距离无限制。

SpecialtyNames

一个以空格分隔的字符串,其中包含了停靠点特性要求的名称。 空值表示停靠点没有特殊要求。

停靠点和路径类中列出的所有特性的拼写必须完全匹配,这样 VRP 求解程序才能将它们链接起来。

为了说明什么是特殊要求及其工作方式,假设草坪护理及树木修剪公司都有一部分停靠点需要使用斗式铲车来修剪所有树木。 公司可以在 SpecialtyNames 字段中为这些停靠点输入 BucketTruck 来表示其特殊需求。 SpecialtyNames 将保留为空值(对于其他停靠点)。 同样,公司也可以在带液压吊杆的铲车路径的 SpecialtyNames 字段中输入 BucketTruck。 对于其他路径,该字段将保留为空值。 求解时,VRP 求解程序会将无任何特殊要求的停靠点分配给任意路径,而将需要斗式铲车的停靠点分配给有斗式铲车的路径。

AssignmentRule

用于指定将停靠点分配给路径时所要遵循的规则。 该字段值可指定为以下整数之一(请使用数值代码而非括号中的名称):

该字段不能包含空值。

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

Record Set
休息点

给定车辆配送问题 (VRP) 中路径的休息时段或中断。 一个休息点仅与一条路径相关联,而且可在以下情况下获得:完成停靠点服务后、去往停靠点的途中或在为停靠点提供服务之前。 中断具有一个起始时间和持续时间,该时间段内可能会为驾驶员支付报酬,也可能不支付。 中断开始时可通过三种方式来建立:时间窗、最长行驶时间或最长工作时间。

如果停靠点或站点跨多个时区,则除非时间以 UTC 计,否则不允许使用时间窗中断。

指定休息点后,可使用以下特性为每个休息点设置属性,例如休息点的名称或服务时间。

ObjectID

系统管理的 ID 字段。

RouteName

此休息点所适用的路径名称。 一个休息点仅分配给一条路径,但可将多个休息点分配给同一路径。

该字段是“路径”中 Name 字段的外键,所以不能具有空值。

Precedence

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

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

ServiceTime

休息点的持续时间。 此字段不能包含空值。 默认值为 60。

该字段值的单位由 time_units 参数指定。

TimeWindowStart

休息点时间窗的开始时间。 必须指定开始时间和结束时间。

如果该字段中存在值,则 MaxTravelTimeBetweenBreaksMaxCumulWorkTime 字段值必须为空,而且分析中所有其他休息点的 MaxTravelTimeBetweenBreaksMaxCumulWorkTime 必须也为空值。

如果路径具有时间窗相互重叠的多个休息点,求解时将出错。

中断的时间窗口字段可以在日期字段中包含仅时间值或日期和时间值,但不能是表示自新纪元以来的毫秒数的整数。 时间窗口字段的时区可以使用时间字段的时区使用情况参数进行指定。 如果像 TimeWindowStart 这样的时间字段的值只有时间(例如下午 12:00),则假定日期为默认日期参数(Python 中的 default_date)指定的日期。 使用“日期和时间”值(例如 7/11/2012 12:00 p.m.)可以指定时长为两天或两天以上的时间窗。 这适用于应在午夜前后的某个时间中断的情况。

TimeWindowEnd

休息点时间窗的结束时间。 必须指定开始时间和结束时间。

如果该字段中存在值,则 MaxTravelTimeBetweenBreaksMaxCumulWorkTime 必须为空,而且分析中所有其他休息点的 MaxTravelTimeBetweenBreaksMaxCumulWorkTime 必须也为空值。

MaxViolationTime

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

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

该属性可以为空。 如果 TimeWindowStartTimeWindowEnd 值为空,则表示对允许的冲突时间没有限制。 如果 MaxTravelTimeBetweenBreaksMaxCumulWorkTime 中存在值,则 MaxViolationTime 必须为空。

该字段值的单位由 time_units 参数指定。

MaxTravelTimeBetweenBreaks

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

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

该字段用于限制可在驾驶多长时间之后才需要中断。 例如,如果将分析的时间单位设置为分钟,而且 MaxTravelTimeBetweenBreaks 的值为 120,则司机将在驾驶两个小时之后中断驾驶以得到休息。 如果要再行驶两个小时后休息一次,则第二个休息点的 MaxTravelTimeBetweenBreaks 属性必须为 120。

如果该字段中存在值,则要成功求解分析,TimeWindowStartTimeWindowEndMaxViolationTimeMaxCumulWorkTime 必须均为空。

该字段值的单位由 time_units 参数指定。

MaxCumulWorkTime

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

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

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

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

如果该字段中存在值,则要成功求解分析,TimeWindowStartTimeWindowEndMaxViolationTimeMaxTravelTimeBetweenBreaks 必须均为空。

该字段值的单位由 time_units 参数指定。

IsPaid

用来指示是否为休息点支付报酬的布尔值。 将此字段的值设置为 1,表示在计算路径成本和判定加班时间时将包括在休息点处所花费的时间。 值为 0,则反之。 默认值为 1。

Sequence

指示休息点在其路径上的顺序。 此字段可以包含空值,这会使求解程序分配休息点顺序。 如果指定顺序值,则其应为正且对于各路径均唯一(在货物补给点、停靠点和休息点之间分配),但是不需要从 1 开始,也不需要连续。

Record Set
时间单位

分析中所有基于时间的字段值的时间单位。 VRP 分析中的许多要素和记录都具有用于存储时间值的字段,例如用于停靠点的 ServiceTime 和用于路径的 CostPerUnitTime。 为了最大程度减少数据输入的要求,这些字段值不包含单位。 相反,所有基于距离的字段值都必须以相同单位输入,而此参数用于指定这些值的单位。

请注意,基于时间的输出字段使用此参数指定的相同单位。

  • 时间单位为秒。
  • 时间单位为分钟。
  • 小时时间单位为小时。
  • 时间单位为天。
String
距离单位

分析中所有基于距离的字段值的距离单位。 VRP 分析中许多要素和记录都有用于存储距离值的字段,例如路径的 MaxTotalDistanceCostPerUnitDistance。 为了最大程度减少数据输入的要求,这些字段值不包含单位。 相反,所有基于距离的字段值都必须以相同单位输入,而此参数用于指定这些值的单位。

注意,基于距离的输出字段使用此参数指定的相同单位。

  • 线性单位为米。
  • 千米线性单位为千米。
  • 英尺线性单位为英尺。
  • 线性单位为码。
  • 英里线性单位为英里。
  • 海里线性单位为海里。
String
分析区域
(可选)

将执行分析的区域。 如果未对此参数指定值,工具会基于输入点的位置自动计算区域名称。 仅当自动检测的区域名称输入不准确时,才需要设置区域名称。

要指定区域,请使用以下值之一:

  • 欧洲分析区域为欧洲。
  • 日本分析区域为日本。
  • 韩国分析区域为韩国。
  • 中东和非洲分析区域为中东和非洲。
  • 北美分析区域为北美洲。
  • 南美洲分析区域为南美洲。
  • 南亚分析区域为南亚。
  • 泰国分析区域为泰国。
旧版本:

不再支持以下区域名称,且将在未来版本中删除这些名称。 如果您指定了任一已弃用的区域名称,则工具会自动为您所在的区域分配支持的区域名称。

  • 希腊将重定向到欧洲
  • 印度将重定向到南亚
  • 大洋洲将重定向到南亚
  • 东南亚将重定向到南亚
  • 台湾将重定向到南亚

String
默认日期
(可选)

指定一天中的时间(不包含日期)的时间字段值的默认日期。 您可以在各种输入参数中查找这些时间字段,例如停靠点和休息点参数中的 ServiceTime 属性。

Date
在交汇点处 U 形转弯
(可选)

执行是限制还是允许服务区在交汇点处进行 U 形转弯。 为理解这些参数值,请考虑下列术语:交汇点是在路段的尽头且可能与其他一条或多条路段相连的点;伪交汇点是指两条街道确实在此处相连的点;交叉点是指三条或更多街道在此处相连的点;死角是指一条不与其他路段相连的路段的尽头。

除非将出行模式设置为自定义(这是默认值),否则会忽略您为此参数提供的值。

  • 允许 U 形转弯可在任何地方 U 形转弯。 允许 U 形转弯表示车辆可以在任何交汇点处转向并沿同一街道往回行驶。 这是默认值。
  • 禁止 U 形转弯在伪交汇点、交叉点和死角等所有交汇点处禁止 U 形转弯。 但是请注意,即使选中此选项,也可能允许 U 形转弯。 为防止在事件点和设施点处 U 形转弯,设置 CurbApproach 字段值以禁止 U 形转弯。
  • 仅在死角处允许除仅有一条连接街道要素(死角)的交汇点外,其他交汇点均禁止 U 形转弯。
  • 仅在死角和交点处允许确有两条相邻街道相交的伪交汇点处禁止 U 形转弯,但是交叉点和死角处允许。 若道路中的一段正好数字化为两个街道要素,这可防止道路中央的转弯。
String
时间窗因子
(可选)

指定支持时间窗的重要性。

  • 提高按时到达停靠点的重要性,降低减少驾驶时间的重要性。 例如,进行时间紧迫的配送或注重客户服务的组织将使用此选项。
  • 平衡减少驾驶时间的重要性与在时间窗内到达的重要性。 这是默认值。
  • 提高减少驾驶时间的重要性,降低按时到达停靠点的重要性。 如果积压的服务请求逐渐增多,则可以使用此设置。 如果为了在当日内为更多的停靠点提供服务并减少积压的订单数,则可使用此选项,即使迟到可能会为客户带来不便。
String
空间聚类路径
(可选)

指定是否将对路径进行空间聚类。

  • CLUSTER (True) - 为所有路径自动创建动态补给点,而分配到各个路径的停靠点将发生空间聚类。 对停靠点进行聚类往往在较小区域保持路径,并减小不同路径线彼此相交的频率;然而,聚类也往往会增加总行程时间。
  • NO_CLUSTER (False) - 不会创建动态补给点。 如果指定了路径区,选择此选项。

Boolean
路径区
(可选)

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

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

指定路径区后,必须使用以下特性为每个路径区设置属性,例如路径区的关联路径:

ObjectID

系统管理的 ID 字段。

RouteName

该区域所应用到的路径的名称。 按区域配送最大可覆盖一条关联路径。 该字段不能包含空值,而且是路径中 Name 字段的外键。

IsHardZone

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

Feature Set
货物补给点
(可选)

指定路径可以访问的中间站点,以重新装载或卸载正在配送或接收的货物。 具体而言,货物补给点将把路径链接到站点。 这一关系表示可在关联的站点处进行货物补给(在途中重新装货或卸货)。

货物补给可用于为以下情景建立模型:车辆在起始站点接收满载的配送量、到各停靠点提供服务、返回到该站点更新配送量,然后继续为更多停靠点提供服务。 例如,在丙烷气配送中,车辆可能需要进行多次交货才能将气罐排空,而且需要访问加气点并继续进行配送。

以下是要考虑的一些规则和选项:

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

在指定货物补给点时,您必须使用以下特性为每条路径设置属性,例如进行货物补给的站点的名称:

ObjectID

系统管理的 ID 字段。

DepotName

进行该更新时所在站点的名称。 该字段不能包含空值,而且是站点中 Name 字段的外键。

RouteName

该补给点适用的路径的名称。 该字段不能包含空值,而且是路径中 Name 字段的外键。

ServiceTime

更新的服务时间。 该字段可以包含空值;空值表示没有服务时间。

该字段值的单位由 time_units 参数指定。

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

Record Set
停靠点对
(可选)

将接收停靠点和配送停靠点配对,使其可由同一路径提供服务。 指定停靠点对可避免只将其中一个停靠点分配给路径:要么将两个停靠点都分配给同一条路径,要么都不分配。

有时,要求停靠点的接收和配送必须是成对的。 例如,快递公司可能需要让路径从一个停靠点接收高优先级包裹并送往另一个停靠点,而不返回站点或分拣站,以减少送货时间。 可以通过使用停靠点对,按照相应的顺序将这些相关的停靠点分配给同一路径。 此外,还可以对包裹在车辆上停留的时间进行限制;例如,包裹可能是血液样本,必须在两个小时内从医生办公室运送到实验室。

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

在指定停靠点对时,您必须使用以下特性为每一停靠点对设置属性,例如两个停靠点的名称:

ObjectID

系统管理的 ID 字段。

FirstOrderName

停靠点对中第一个停靠点的名称。 该字段是“停靠点”中 Name 字段的外键。

SecondOrderName

停靠点对中第二个停靠点的名称。 该字段是“停靠点”中 Name 字段的外键。

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

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

MaxTransitTime

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

该字段值的单位由分析对象的 timeUnits 属性指定。

求解程序可对额外行驶时间(相对于停靠点对之间的直线行驶时间来测量)进行追踪和加权。 因此,您可指示 VRP 求解程序采用以下三种方法之一:

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

通过指定 excess_transit_factor 参数的重要性级别,实际上就是从这三种方法中任选其中一种。 无论重要性级别如何,只要超过 MaxTransitTime 值,求解程序就会返回错误。

Record Set
额外行驶因子
(可选)

指定减少停靠点对的额外行驶时间的重要性。 额外行驶时间是指超出停靠点对间直线行驶所需时间的数量。 额外时间可能由司机休息或前往中间停靠点和站点造成。

  • 提高减少停靠点对之间额外行驶时间的重要性(以增加总体行驶成本为代价)。 当在停靠点对间运载乘客并且想缩短他们的乘车时间时,通常使用此选项。 这是出租车服务的特征。
  • 平衡减少额外行驶时间和降低总体解决方案成本的重要性。 这是默认值。
  • 提高减少总体解决方案成本的重要性(不考虑额外行驶时间)。 此设置通常应用于快递服务。 由于快递运输的是包裹而不是人员,因此无需担心行驶时间。 通过此选项,快递可以按照最适合的顺序为停靠点对提供服务,并且总体解决方案成本最低。
String
点障碍
(可选)

使用此参数可指定一个或多个点,来充当临时限制或表示在基础街道上行驶可能需要的附加时间或距离。 例如,可使用点障碍显示一棵沿街倒下的树或穿过铁路道口时花费的时间延迟。

工具限制了可添加为障碍的点不得超过 250 个。

指定点障碍时,可通过使用以下特性为每个障碍点设置属性,例如其名称或障碍类型。

Name

障碍名称。

BarrierType

指定点障碍是完全限制通行还是会在穿越时增加时间或距离。 此特性值可指定为以下整数之一(请使用数值代码而非括号中的名称):

  • 0(限制型)- 禁止穿过障碍。 此障碍称为限制型点障碍,因为它作为限制使用。

  • 2(增加成本型)- 穿过此障碍会增加通过 Additional_TimeAdditional_DistanceAdditionalCost 字段指定的行驶时间或行驶距离的数值。 此障碍类型称为增加成本型点障碍。

Additional_Time

遍历障碍时增加的行驶时间。 此字段仅适用于增加成本型障碍,且仅在测量单位参数值基于时间时适用。

此字段值必须大于或等于零,并且其单位必须与在测量单位参数中指定的单位相同。

Additional_Distance

遍历障碍时增加的距离。 此字段仅适用于增加成本型障碍,且仅在测量单位参数值基于距离时适用。

该字段值必须大于或等于零,并且其单位必须与在测量单位参数中指定的单位相同。

AdditionalCost

遍历障碍时增加的成本。 当测量单位参数值不基于时间或距离时,此字段仅适用于增加成本型障碍。

FullEdge

指定分析期间如何将限制点障碍应用于边元素。 该字段值可指定为以下整数之一(请使用数值代码而非括号中的名称):

  • 0 (False) - 允许沿边行进到障碍,但不允许穿过障碍。 这是默认值。
  • 1 (True) - 禁止沿关联边的任何位置行进。

CurbApproach

指定受障碍影响的行驶方向。 该字段值可指定为以下整数之一(请使用数值代码而非括号中的名称):

  • 0(车辆的任一侧)- 障碍将影响在边左右两个方向上行驶的车辆。
  • 1(车辆右侧)- 只会影响车辆的右行方向(障碍位于车辆左侧)。 在同一条边上行驶但从左侧接近障碍的车辆不会受到障碍的影响。
  • 2(车辆左侧)- 只会影响车辆的左行方向(障碍位于车辆左侧)。 在同一条边上行驶但从右侧接近障碍的车辆不会受到障碍的影响。

由于交汇点是点且不分左右侧,所以无论路边通道如何设置,交汇点上的障碍都会影响所有车辆。

CurbApproach 属性适用于以下两种国家驾驶标准:右侧通行(美国)和左侧通行(英国)。 首先,考虑位于车辆左侧的设施点。 不管车辆行驶在左车道还是右车道,停靠点始终位于车辆的左侧。 不同国家的驾驶标准可能会要求您从这两种方向中的其中一个接近设施点,也就是说,只能从车辆的右侧或左侧接近设施点。 例如,要到达一个设施点并且在车辆与设施点之间不存在其他交通车道,在美国应该选择 1(车辆的右侧),而在英国应该选择 2(车辆的左侧)。

Bearing

点移动的方向。 单位为度,从正北开始沿顺时针方向进行测量。 该字段与 BearingTol 字段结合使用。

方位角数据通常会从配有 GPS 接收器的移动设备自动发送。 如果正在加载移动输入位置(例如行人或车辆),请尝试包括方位角数据。

使用该字段可以防止将位置添加到错误的边上,例如,车辆刚好在交叉路口或天桥附近时。 方位角也可帮助工具确定点在街道的哪一边上。

BearingTol

使用 Bearing 字段在边上定位移动点时,方位角容差值将创建一个可接受方位角值的范围。 如果 Bearing 字段值在可接受值范围(由边上的方位角容差生成)内,则可以将该点作为网络位置添加在此处,否则,将计算下一个最近边上的最近点。

单位为度,默认值为 30。 值必须大于 0 且小于 180。 值为 30 表示,Network Analyst 尝试在边上添加网络位置时,在边的每一侧(左侧和右侧)的两个数字化方向上都将生成一个 15 度的可接受方位角值。

NavLatency

如果 BearingBearingTol 也具有值,则该字段只在求解过程中使用;但是,即使当 BearingBearingTolNavLatency 字段中有值时,NavLatency 值的输入也是可选的。NavLatency 表示 GPS 信息从移动的车辆上发送到服务器以及车辆导航设备接收到处理后路径这两个时刻之间预期要花费的成本。

NavLatency 的单位与阻抗属性的单位相同。

Feature Set
线障碍
(可选)

使用此参数可指定一条或多条线,以禁止在线与街道的所有相交位置通行。 例如,线障碍可用于对阻塞若干个路段交通的游行或抗议队伍进行建模。 线障碍还可隔离多条道路以禁止进行遍历,从而在可能的路径中去除不符合要求的街道网络部分。

该工具限制了您可以使用线障碍参数限制的街道数量。 可指定为线障碍的线数没有限制时,所有线的相交街道的合并数不能超过 500

指定线障碍时,可使用以下特性设置每个线障碍的名称和障碍类型:

Name

障碍名称。

Feature Set
面障碍
(可选)

使用此参数可指定面,以完全限制通行或按比例调整在与面相交的街道上行进所需的时间或距离。

该服务限制了您可以使用面障碍参数限制的街道数量。 可指定为面障碍的面数没有限制时,所有面的相交街道的合并数不能超过 2,000

指定面障碍时,可通过使用以下特性为每个面障碍设置属性,例如其名称或障碍类型。

Name

障碍名称。

BarrierType

指定障碍是完全禁止通行还是按比例调整穿过成本(例如时间或距离)。 该字段值可指定为以下整数之一(请使用数值代码而非括号中的名称):

  • 0(限制型)- 禁止穿过障碍的任何部分。 此障碍称作限制型面障碍,因为它禁止在与障碍相交的街道上行驶。 此类障碍的一个具体应用是对覆盖街道中某些区域且导致街道无法通行的洪水进行建模。

  • 1(按比例调整成本型)- 根据使用 ScaledTimeFactorScaledDistanceFactor 字段指定的系数,按比例调整在基础街道上行驶所需的成本(例如行驶时间或距离)。 如果障碍部分覆盖了街道,则会按比例调整行程时间或行程距离。 例如,系数 0.25 表示在基础街道上行进的速度是正常速度的四倍。 系数 3.0 表示预期在基础街道上行进相同距离所花费的时间为正常值的三倍。 此障碍类型称为按比例调整成本型面障碍。 例如,可使用该障碍对导致特定区域的行进速度减慢的暴风雨进行建模。

ScaledTimeFactor

它是与障碍相交街道的行驶时间要乘以的因子。 该字段值必须大于零。

此字段仅适用于按比例调整成本型障碍且仅在测量单位参数基于时间时适用。

ScaledDistanceFactor

它是与障碍相交街道的距离要乘以的因子。 该字段值必须大于零。

此字段仅适用于按比例调整成本型障碍且仅在测量单位参数基于距离时适用。

ScaledCostFactor

这是与障碍相交的街道的成本要乘以的系数。 该字段值必须大于零。

此字段仅适用于按比例调整成本型障碍且仅在测量单位参数既不基于时间也不基于距离时适用。

Feature Set
应用等级
(可选)

指定在查找最佳路径时是否将使用等级。

  • 选中 (True) - 查找路径时将使用等级。 在应用等级时,相比低等级的街道(例如地方道路),该工具会优先标识等级较高的街道(例如高速公路),且该工具可以用于模拟驾驶员对在高速公路(而非地方道路)上行驶的偏好,即使这意味着行程更远。 查找远距离位置的路径时尤为如此,因为长途驾驶员往往更偏好于在高速公路上行驶,这样可以避免停靠、交叉路口和转弯。 应用等级可实现更快的计算速度,尤其是对于长途路径来说,因为该工具需要在相对较小的街道子集中标识最佳路径。
  • 未选中 (False) - 查找路径时不会使用等级。 如果没有应用等级,该工具就会考虑所有的街道且在选择路线时并不一定标识等级较高的街道。 这常用于在市内查找短途路径。

如果停靠点之间、站点之间、或停靠点与站点之间的直线距离大于 50 英里,即使未选中此参数 (False),工具也会自动转换为使用等级。

除非将出行模式设置为自定义(这是默认值),否则系统会忽略此参数。

Boolean
约束条件

在查找最佳路径时工具将遵从的限制。

限制表示行驶偏好或要求。 大多数情况下,限制条件会导致道路禁行。 例如,使用“避开收费公路”限制将导致路径仅在需要借道收费公路才能访问某一事件点或设施点时包含收费公路。 高度限制则使您可以绕开低于车辆高度的间隙。 如果车辆上装载着腐蚀性物质,使用“禁止任何危险物品”限制将防止在标记着运输腐蚀性材料为非法行为的路上运输这些材料。

注:

某些限制需要指定一个额外值才能进行使用。 该值必须与限制名称和用于限制的特定参数相关联。 可识别名称在属性参数值参数的 AttributeName 列中显示的限制。 在查找可遍历道路时,要正确使用限制,请指定属性参数值参数的 ParameterValue 字段。

注:

有些限制仅适用于某些国家/地区;下表按区域显示了这些限制的可用性。 关于在某区域内可用性有限的限制,通过在网络分析覆盖范围上查看“国家/地区列表”部分中的表,可以确定该限制在特定国家/地区是否可用。 如果一个国家/地区具有 Logistics Attribute 列的 Yes 值,则该国家/地区支持具有区域可选性的限制。 如果您指定的限制名称在事件点所在的国家/地区不可用,该服务会忽略无效限制。 该服务还会忽略约束条件用法属性参数值为 0 到 1(请参阅属性参数值参数)时的约束条件。 它会禁止约束条件用法参数值大于 0 时的所有约束条件。

该服务支持以下约束条件:

  • 禁止任何危险物品结果将不包含禁止运输任何危险类型材料的道路。可用性:在北美洲及欧洲选择国家
  • 避开拼车道路结果将避开专供拼车(高承载)车辆行使的道路。可用性:所有国家
  • 避开快速车道结果将避开指定为快速车道的道路。可用性:所有国家
  • 避开轮渡结果将避开轮渡。可用性:所有国家
  • 避开关口结果将避开存在关键通道或守卫控制入口等关口的道路。可用性:所有国家
  • 避开限行道路结果将避开限制进入高速公路的道路。可用性:所有国家
  • 避开私家道路结果将避开非公有和维护的道路。可用性:所有国家
  • 避开不适合行人的道路结果将避开不适合行人的道路。可用性:所有国家
  • 避开楼梯结果将避开行人适合路线上的所有楼梯。可用性:所有国家
  • 避开收费公路结果将避开汽车收费公路。可用性:所有国家
  • 避开卡车收费公路结果将避开卡车收费公路。可用性:所有国家
  • 避开货车禁行道路结果将避开禁止货车通行的道路,除非正在进行配送。可用性:所有国家
  • 避开未铺设道路结果将避开未铺设(例如,泥土、砾石等)的道路。可用性:所有国家
  • 轴计数限制结果将不包含具有指定轴数的卡车禁行的道路。 可使用车轴数限制参数指定车轴数。可用性:在北美洲及欧洲选择国家
  • 驾驶公共汽车结果将不包含公共汽车禁行的道路。 使用此约束条件还将确保结果支持单行道。可用性:所有国家
  • 驾驶出租车结果将不包含出租车禁行的道路。 使用此约束条件还将确保结果支持单行道。可用性:所有国家
  • 驾驶货车结果将不包含卡车禁行的道路。 使用此约束条件还将确保结果支持单行道。可用性:所有国家
  • 驾驶汽车结果将不包含汽车禁行的道路。 使用此约束条件还将确保结果支持单行道。可用性:所有国家
  • 驾驶急救车辆结果将不包含急救车辆禁行的道路。 使用此约束条件还将确保结果支持单行道。可用性:所有国家
  • 高度限制结果将不包含车辆高度超出道路所允许的最大高度的道路。 可使用“车辆高度(米)”限制参数指定车辆高度。可用性:在北美洲及欧洲选择国家
  • 主销到后轴长度限制结果将不包含车辆长度超出路上所有货车所允许的主销到后轴最大长度的道路。 可使用“车辆主销到后轴长度(米)”限制参数指定车辆中心立轴与后轴之间的长度。可用性:在北美洲及欧洲选择国家
  • 长度限制结果将不包含车辆长度超出道路所允许的最大长度的道路。 可使用“车辆长度(单位为米)”限制参数指定车辆长度。可用性:在北美洲及欧洲选择国家
  • 行人首选结果将使用适合行人导航的首选路线。可用性:在北美洲及欧洲选择国家
  • 骑摩托车结果将不包含摩托车禁行的道路。 使用此约束条件还将确保结果支持单行道。可用性:所有国家
  • 禁止在建道路结果将不包含在建道路。可用性:所有国家
  • 禁止带有一个或多个拖车的半挂车或牵引车结果将不包含带有一个或多个拖车的半挂车或牵引车禁行的道路。可用性:在北美洲及欧洲选择国家
  • 禁止单轴车辆结果将不包含单轴车辆禁行的道路。可用性:在北美洲及欧洲选择国家
  • 禁止双轴车辆结果将不包含双轴车辆禁行的道路。可用性:在北美洲及欧洲选择国家
  • 禁止过境交通结果将不包含禁止过境交通(非本地)的道路。可用性:所有国家
  • 带拖车的卡车限制结果将不包含具有指定拖车数量的货车禁行的道路。 可使用“卡车上的拖车数量”限制参数指定卡车的拖车数量。可用性:在北美洲及欧洲选择国家
  • 使用首选危险物品路径结果将优先选择专用于运输危险类型材料的道路。可用性:在北美洲及欧洲选择国家
  • 使用首选卡车路径结果将优先选择指定为卡车路径的道路,例如,由美国的《国家地面交通援助法案》指定为国家网络的一部分的道路,由州或省指定为卡车路径的道路,或在某区域内驾驶卡车的首选道路。可用性:在北美洲及欧洲选择国家
  • 步行结果将不包含行人禁行的道路。可用性:所有国家
  • 重量限制结果将不包含车辆重量超出道路所允许的最大重量的道路。 可使用“车辆重量(千克)”限制参数指定车辆重量。可用性:在北美洲及欧洲选择国家
  • 轴负重限制结果将不包含车辆轴负重超出道路所允许的最大轴负重的道路。 可使用“车辆轴负重(千克)”限制参数指定车辆轴负量。可用性:在北美洲及欧洲选择国家
  • 宽度限制结果将不包含车辆宽度超出道路所允许的最大宽度的道路。 可使用“车辆宽度(单位为米)”限制参数指定车辆宽度。可用性:在北美洲及欧洲选择国家
注:

除非将出行模式设置为自定义,否则会忽略您为此参数提供的值。

String
属性参数值
(可选)

使用此参数可指定属性或限制条件所需的其他值,例如,指定限制对在受限道路上行驶是禁止、避免还是首选。 如果该限制要避免或首选道路,您可以使用此参数进一步指定要避免或首选的程度。 例如,您可以选择从不使用收费公路,尽可能的避开它们,或首选它们。

注:

除非将出行模式设置为自定义,否则会忽略您为此参数提供的值。

如果指定了要素类的属性参数值参数,则要素类上的字段名称必须与以下字段相匹配:

  • AttributeName- 限制的名称。
  • ParameterName- 与限制关联的参数名称。 限制根据其用途可具有一个或多个 ParameterName 字段值。
  • ParameterValue- 工具在评估限制时使用的 ParameterName 的值。

属性参数值参数取决于限制参数。 仅当限制名称指定为限制参数值时,ParameterValue 字段才适用。

属性参数值中,每个限制(以 AttributeName 形式列出)具有一个 ParameterName 字段值,指定限制的行程是禁止、避免还是首选的限制用法与道路选择避免或首选的限制和程度相关联。 可为限制用法 ParameterName 分配下列字符串值,或在括号内列出等效数值:

  • PROHIBITED (-1) - 完全禁止在使用限制的道路上行驶。
  • AVOID_HIGH (5) - 工具极不可能将与限制相关的道路包括在路径中。
  • AVOID_MEDIUM (2) - 工具不可能将与限制相关的道路包括在路径中。
  • AVOID_LOW (1.3) - 工具不太可能将与限制相关的道路包括在路径中。
  • PREFER_LOW (0.8) - 工具稍微有可能将与限制相关的道路包括在路径中。
  • PREFER_MEDIUM (0.5) - 工具可能将与限制相关的道路包括在路径中。
  • PREFER_HIGH (0.2) - 工具非常有可能将与限制相关的道路包括在路径中。

大多数情况下,如果限制取决于车辆高度等车辆特征,则可以将“限制用法”设置为默认值 PROHIBITED。 但是在某些情况下,“限制用法”值取决于您的路径偏好。 例如,“避开收费公路”限制将“限制用法”参数设置为默认值 AVOID_MEDIUM。 这表示在使用限制时,在可能的情况下工具将绕开收费公路。 AVOID_MEDIUM 也表示查找最佳路径时避开收费公路的重要性,即优先级为中等。 选择 AVOID_LOW 会降低避开收费公路的重要性;而选择 AVOID_HIGH 则会增加其重要性,因此服务为避开收费公路而生成更长的路径时更容易为人所接受。 选择 PROHIBITED 则会完全不允许在收费公路上行驶,因此路径不可能经过收费公路的所有部分。 但是请注意,避开或禁止收费公路以及避开公路通行费只是一部分人的目的。 对另外一部分人来说,因为避开拥堵的交通比交一些公路通行费更为重要,会宁愿走收费公路。 在后一种情况中,选择 PREFER_LOW、PREFER_MEDIUM 或 PREFER_HIGH 作为“限制用法”的值。 首选的等级越高,工具在与限制相关的道路上行驶的距离越远。

Record Set
填充路线
(可选)

指定是否将生成输出路线。

  • 选中 (True) - 输出路径将具有基础街道的精确形状。
  • 未选中 (False) - 不会为输出路径生成任何形状,但路径仍会包含有关解决方案的表格信息。 如果没有创建路径线,则将无法生成行驶方向。

路径形状参数设置为实际形状时,可以使用适当的路线简化容差参数值对路径形状的制图综合进行进一步控制。

无论为路径形状参数选择了什么值,最佳路径总是通过最大限度地缩短沿街行驶的路程来确定,而不是使用直线距离来确定。 这意味着只有路径形状是不同的,而非查找路径时搜索的基础街道。

Boolean
路线简化容差
(可选)

要对路径和方向的输出线几何进行简化的程度。

除非将出行模式设置为自定义(这是默认值),否则会忽略为此参数提供的值。

如果未选中 populate_route_lines 参数 (False),则工具将忽略该参数。

简化将保留路径上定义路径基本形状所需的关键点(例如交点处的转弯)而删除其他点。 指定的简化距离为简化线偏离原始线的最大允许偏移。 简化线将减少路径几何中的折点数。 这可改善工具处理时间。

Linear Unit
填充方向
(可选)

指定工具是否将为每条路径生成行驶方向。

  • 选中(在 Python 中为 True)- 将根据方向语言方向样式名称方向距离单位参数值生成和配置方向。
  • 未选中(在 Python 中为 False)- 将不会生成方向,且工具将返回一个空的 Directions 图层。

Boolean
方向语言
(可选)

在生成行驶方向时使用的语言。

此参数仅在选中填充方向参数(在 Python 中为 True)时使用。

可使用下列两位或五位字符语言代码指定参数值:

  • ar - 阿拉伯语
  • bg - 保加利亚语
  • bs - 波斯尼亚语
  • ca - 加泰罗尼亚语
  • cs - 捷克语
  • da - 丹麦语
  • de - 德语
  • el - 希腊语
  • en - 英语
  • es - 西班牙语
  • et - 爱沙尼亚语
  • fi - 芬兰语
  • fr - 法语
  • he - 希伯来语
  • hr - 克罗地亚语
  • hu - 匈牙利语
  • id - 印度尼西亚语
  • it - 意大利语
  • ja - 日语
  • ko - 朝鲜语
  • lt - 立陶宛语
  • lv - 拉脱维亚语
  • nb - 挪威语
  • nl - 荷兰语
  • pl - 波兰语
  • pt-BR - 葡萄牙語(巴西)
  • pt-PT - 葡萄牙语(葡萄牙)
  • ro - 罗马尼亚语
  • ru - 俄语
  • sk - 斯洛伐克语
  • sl - 斯洛文尼亚语
  • sr - 塞尔维亚语
  • sv - 瑞典语
  • th - 泰语
  • tr - 土耳其语
  • uk - 乌克兰语
  • vi - 越南语
  • zh-CN - 中文(中国)
  • zh-HK - 中文(香港)
  • zh-TW - 中文(台湾)

工具首先在全部本地化语言中搜索与指定值完全匹配的语言。 如果未找到完全匹配,则会尝试匹配语系。 如果仍未找到匹配,该工具将会使用默认语言(英语)返回方向。 例如,如果将方向指示语言指定为 es-MX(墨西哥西班牙语),则工具将返回西班牙语的指示,因为它支持 es 语言代码但不支持 es-MX。

警告:

如果某种语言支持本地化,例如巴西葡萄牙语 (pt-BR) 和欧洲葡萄牙语 (pt-PT),则指定语系和本地化。 如果您只指定语系,则工具将无法与具体语系匹配,而使用默认语言(英语)返回方向。 例如,如果方向语言指定为 pt,则工具将返回英文指示,因为它无法确定应该使用 pt-BR 还是 pt-PT 返回方向。

String
方向样式名称
(可选)

指定方向的格式化样式的名称。 此参数仅在选中填充方向参数(在 Python 中为 True)时使用。

  • Network Analyst Desktop此样式适合打印的转弯说明。
  • Network Analyst 导航此样式针对车载导航设备的转弯说明。
String
出行模式
(可选)

用于分析建模的交通模式。 出行模式在 ArcGIS Online 中进行管理,组织管理员可通过对其进行配置,以反映组织工作流。 指定组织所支持的出行模式名称。

要获取受支持的出行模式名称列表,请运行获取出行模式工具,该工具位于访问工具所使用的同一 GIS Server 连接下的实用程序工具箱中。 获取出行模式工具会将表“支持的出行模式”添加到应用程序中。 可将“支持的出行模式”表中 Travel Mode Name 字段的任何值指定为输入。 您还可以将 Travel Mode Settings 字段中的值指定为输入。 由于工具不必根据出行模式名称查找设置,因而加快了工具的执行速度。

默认值自定义可以使用自定义出行模式参数(在交汇点处 U 形转弯应用等级限制属性参数值阻抗)配置自定义出行模式。 自定义出行模式参数的默认值对使用汽车的出行方式建模。 也可以选择自定义并设置上述自定义出行模式参数,从而以快速步行速度对行人建模,或以给定高度、重量和特定危险材料货物对卡车建模。 您可以尝试不同的设置以获取所需的分析结果。 一旦确定了分析设置,则可使用组织管理员身份并将这些设置保存为新建或现有出行模式的一部分,以便您组织中的所有人均运行相同设置的分析。

警告:

选择自定义后,您为自定义出行模式参数设置的值便会包含在分析中。 指定您组织定义的其他出行模式,将忽略为自定义出行模式参数设置的所有值;该工具将用您所指定的出行模式中的值将其覆盖。

String
阻抗
(可选)

指定阻抗,该值表示沿交通网络的路段或其他部分行进所需的精力或成本。

行程时间是一种阻抗,比如,汽车花费 1 分钟沿空无一人的道路行驶一公里。 行程时间会随出行模式的不同而不同(行人可能需要 20 多分钟才能走完一公里),所以在建模时为出行模式选择正确的阻抗非常重要。

行程距离也是一种阻抗,可将以千米表示的道路长度作为阻抗。 从这个意义上,行程距离对所有模式均相同,即对行人而言 1 千米的距离对汽车而言也是 1 千米。 (但不同模式所允许行进的线路可能会有变化,而这会影响两点间的距离,可通过出行模式设置对此进行建模。)

如果选择基于时间的阻抗(例如 TravelTimeTruckTravelTimeMinutesTruckMinutesWalkTime),则必须将中断单位参数设置为基于时间的值;如果您选择基于距离的阻抗(例如 MilesKilometers),则中断单位必须基于距离。

  • 行驶时间使用历史和实时流量数据。 此选项适用于在每天的特定时间使用实时流量速度数据(如果适用)对汽车沿道路行驶的时间进行建模。 如果使用此选项,则可以选择设置 TravelTime::车辆最大速度 (km/h) 属性参数来指定车辆能够行驶的速度的物理限制。
  • 不使用实时流量数据,而是使用汽车数据的历史平均速度。
  • 卡车行驶时间使用历史和实时流量数据,但将速度限制为发布的卡车限速要求。 这有助于模拟卡车在特定时间沿着道路行驶所需的时间。 如果使用此选项,则可以选择设置 TruckTravelTime::车辆最大速度 (km/h) 属性参数来指定卡车能够行驶的速度的物理限制。
  • 卡车分钟不使用实时流量数据,而是使用汽车历史平均速度的较小值以及发布的卡车限速要求。
  • 步行时间在所有道路和路径上的默认速度为 5 千米/小时,但可以通过 WalkTime::步行速度 (km/h) 属性参数进行配置。
  • 每小时一公里的时间默认将所有道路和路径上的速度都设为 1 千米/小时。 使用任何属性参数都无法更改速度。
  • 行驶时间为小型汽车的行程时间建模。 这些行驶时间是动态的,会随交通数据可用区域的交通流量而波动。 这是默认值。
  • 卡车时间为卡车的行程时间建模。 这些行驶时间对于每条道路都是静态的,不会随交通流量而波动。
  • 步行时间为行人的出行时间建模。
警告:

除非将出行模式设置为自定义(这是默认值),否则会忽略您为此参数提供的值。

旧版本:

不再支持行驶时间卡车时间步行时间行驶距离阻抗值,且将在未来版本中删除。 如果您使用上述任一值,则工具将为基于时间的值使用时间阻抗参数,为基于距离的值使用距离阻抗参数。

String
时间字段的时区使用情况
(可选)

为工具支持的输入日期时间字段指定时区。 此参数指定以下字段的时区:TimeWindowStart1TimeWindowEnd1TimeWindowStart2TimeWindowEnd2InboundArriveTimeOutboundDepartTime(停靠点)。 TimeWindowStart1TimeWindowEnd1TimeWindowStart2TimeWindowEnd2(站点)。 EarliestStartTimeLatestStartTime(路径)。 TimeWindowStartTimeWindowEnd(休息点)。

  • GEO_LOCAL与停靠点或站点相关的日期时间值位于停靠点和站点所在的时区内。 对于路径,日期时间值基于路径的起始站点所在的时区。 如果路径没有起始站点,则路径上的所有停靠点和站点必须位于一个时区中。 对于中断点,日期时间值基于路径的时区。 例如,如果站点所在的区域实行东部标准时间并且第一个时间窗值(指定为 TimeWindowStart1TimeWindowEnd1)为 8 AM 和 5 PM,则时间窗值将被视为东部标准时间 8:00 a.m. 和 5:00 p.m.。
  • UTC与停靠点或站点相关的日期时间值位于协调世界时间 (UTC) 中,且不基于停靠点或站点所在的时区。 例如,如果站点所在的区域实行东部标准时间,并且第一个时间窗值(指定为 TimeWindowStart1TimeWindowEnd1)为 8 AM 和 5 PM,则在东部标准时间(假设东部标准时间遵循夏令时)中时间窗值将被视为 12:00 p.m. 和 9:00 p.m.。
  • GEO_LOCALGEO_LOCAL
  • UTCUTC

如果不知道停靠点或站点所在的时区,或者停靠点或站点处在多个时区内,并且您想要所有的日期时间值同时启动,则按 UTC 指定日期时间值非常有用。 UTC 选项仅在您的网络数据集定义了时区属性时才可用。 否则,所有的日期时间值将始终被视为 GEO_LOCAL。

String
保存输出网络分析图层
(可选)

指定是否将分析设置另存为网络分析图层文件。 即使在 ArcGIS Desktop 应用程序(例如 ArcMap)中打开文件,仍然无法直接使用此文件。 需要将其发送至 Esri 技术支持以诊断工具所返回结果的质量。

  • 选中 (True) - 将保存网络分析图层文件。 文件将下载到计算机上的临时目录中。 在 ArcGIS Pro 中,可以通过查看输出网络分析图层参数的值来确定已下载文件的位置,该参数位于与工程地理处理历史中的工具执行相对应的条目中。 在 ArcMap 中,可以通过访问输出网络分析图层参数上的快捷菜单中的复制位置选项来确定文件的位置,该参数位于与地理处理结果窗口中的工具执行对应的条目中。
  • 未选中 (False) - 将不会保存网络分析图层文件。 这是默认设置。

Boolean
覆盖
(可选)

注:

此参数仅供内部使用。

String
保存路径数据
(可选)

指定输出中是否包括含有某类文件地理数据库的 .zip 文件,该类文件地理数据库通过可与 ArcGIS OnlinePortal for ArcGIS 共享路径图层的格式保存分析的输入和输出。

  • 选中 (True) - 路径数据将另存为 .zip 文件。 文件将下载到计算机上的临时目录中。 在 ArcGIS Pro 中,可以通过查看输出路径数据参数的值来确定已下载文件的位置,该参数位于与工程地理处理历史中的工具执行相对应的条目中。 在 ArcMap 中,可以通过访问输出路径数据参数上的快捷菜单中的复制位置选项来确定文件的位置,该参数位于与地理处理结果窗口中的工具执行对应的条目中。

  • 未选中 (False) - 不会保存路径数据。 这是默认设置。

Boolean
时间阻抗
(可选)

基于时间的阻抗值表示沿交通网络的路段或其他部分行进所需的出行时间。

  • 时间阻抗为分钟。
  • 行驶时间时间阻抗为行驶时间。
  • 每小时一公里的时间时间阻抗为每小时一公里的时间。
  • 步行时间时间阻抗为步行时间。
  • 卡车分钟时间阻抗为卡车分钟。
  • 卡车行驶时间时间阻抗为卡车行驶时间。
注:
如果使用阻抗参数指定的出行模式阻抗是基于时间的,则时间阻抗阻抗参数的值必须相同。 否则,服务将返回错误。
String
距离阻抗
(可选)

基于距离的阻抗值表示沿交通网络的路段或其他部分行进所需的出行时间。

  • 英里距离阻抗为英里。
  • 千米距离阻抗为千米。
注:
如果使用阻抗参数指定的出行模式阻抗是基于距离的,则距离阻抗阻抗参数的值必须相同。 否则,服务将返回错误。
String
填充停靠点形状
(可选)

指定工具是否将为输出已分配和未分配的停靠点创建形状。

  • 选中 (True) - 将输出已分配和未分配的停靠点创建为点要素。 这对于可视化可分配给路径的停靠点以及无法分配给任何路径的停靠点非常有用。

  • 未选中 (False) - 将输出已分配和未分配的停靠点创建为表格,并且将不具有形状。 这是默认设置。 仅当您不需要应用程序可视化输出停靠点,并且只能使用停靠点的属性时,才使用此选项。

Boolean
输出格式
(可选)

指定将返回输出要素的格式。

如果指定基于文件的输出格式(如 JSON 文件GeoJSON 文件),则不会向显示添加输出,因为应用程序(例如 ArcMapArcGIS Pro)无法绘制结果文件的内容。 相反,结果文件将下载到计算机上的临时目录中。 在 ArcGIS Pro 中,可以通过查看输出结果文件参数的值来确定已下载文件的位置,该参数位于与工程地理处理历史中的工具操作相对应的条目中。 在 ArcMap 中,可以通过访问输出结果文件参数上的快捷菜单中的复制位置选项来确定文件的位置,该参数位于与地理处理结果窗口中的工具操作对应的条目中。

  • 要素集输出要素将作为要素类和表返回。 这是默认设置。
  • JSON 文件输出要素将作为包含输出的 JSON 表示的压缩文件返回。 指定此选项时,输出将是包含由服务针对每个输出创建的一个或多个 JSON 文件(扩展名为 .zip)的单个文件(扩展名为 .json)。
  • GeoJSON 文件输出要素将作为包含输出的 GeoJSON 表示的压缩文件返回。 指定此选项时,输出将是包含由服务针对每个输出创建的一个或多个 GeoJSON 文件(扩展名为 .zip)的单个文件(扩展名为 .geojson)。
String
忽略无效的停靠点位置
(可选)

指定在求解车辆配送问题时是否忽略无效停靠点。

  • 选中 (True) - 只要求解操作没有遇到其他错误,就会忽略无效停靠点并返回解决方案。 如果需要生成路径并将其立即提供给驾驶员,则可以忽略无效路径,并为驾驶员求解和分配路径。 然后,解决上次求解时的无效停靠点,并将其包含在下一工作日或工作时段的 VRP 分析中。

  • 未选中 (False) - 当遇到无效停靠点时,求解操作将失败。 无效停靠点是指 VRP 求解程序无法到达的停靠点。 停靠点不可达的原因可能有多种,包括:停靠点定位于禁止的网络元素,停靠点未定位于网络,或停靠点定位于网络的离线部分。

Boolean
定位设置
(可选)

使用此参数指定影响输入定位方式的设置,例如在网络上定位输入时使用的最大搜索距离或用于定位的网络源。

了解有关定位输入的更多信息

参数值指定为 JSON 对象。 您可通过 JSON 对象为分析中的所有输入要素指定定位器 JSON,或者可以选择为特定输入指定覆盖。 您可通过覆盖对每个分析输入使用不同的设置。

定位器 JSON 对象具有以下属性:

  • tolerancetoleranceUnits - 允许您控制定位输入时的最大搜索距离。 如果在此距离内未发现有效的网络位置,则输入要素将被视为未定位。 小的搜索容差会降低定位到错误街道的可能性,但会增加找不到任何有效网络位置的可能性。 toleranceUnits 参数值应指定为下列值之一:
    • esriCentimeters
    • esriDecimalDegrees
    • esriDecimeters
    • esriFeet
    • esriInches
    • esriIntFeet
    • esriIntInches
    • esriIntMiles
    • esriIntNauticalMiles
    • esriIntYards
    • esriKilometers
    • esriMeters
    • esriMiles
    • esriMillimeters
    • esriNauticalMiles
    • esriYards
  • sources - 允许您控制可用于定位的网络源。 例如,您可以将分析配置为在街道上而不是在人行道上定位输入。 可用于定位的源列表特定于此服务引用的网络数据集。 只有源数组中存在的源将用于定位。 源指定为对象数组,每个对象具有以下属性:
    • name - 可用于定位输入的网络源要素类的名称。
  • allowAutoRelocate - 允许您控制是否可以在求解时自动重定位具有现有网络位置字段的输入,以确保分析的位置字段有效并且可以用于路径选择。 如果值为 true,则位于限制网络元素上的点和受障碍影响的点将重定位至最近的可路由位置。 如果值为 false,则网络位置字段将按原样使用(即使点无法访问),并且这可能会导致求解失败。 即使值为 false,没有位置字段或位置字段不完整的输入也会在求解期间定位。
注:
此时,sources 数组不允许指定不同的源名称。 此外,由于服务不支持位置字段,因此 allowAutoRelocate 始终设置为 true

Locate_Settings JSON 对象允许您为分析中的所有输入要素指定默认定位器 JSON 对象,也可以为每个输入类指定覆盖。 指定 Locate_Settings JSON 时,您需要提供以下属性:tolerancetoleranceUnitsallowAutoRelocate。 如果需要为特定输入类提供不同的定位器 JSON,则需要为该输入添加覆盖属性。 属性名称必须与输入参数名匹配。 特定输入的定位器 JSON 不需要包含所有属性;仅需要包含与默认定位器 JSON 属性不同的属性。

String

派生输出

标注说明数据类型
输出未分配的停靠点
注:

可以从服务资源 JSON 中获取此参数的默认值。 将 ?token=<yourToken>&f=pjson 追加到服务 URL 以访问服务资源 JSON。

为任何路径都无法访问的停靠点提供了访问权限。 您还可以确定这些停靠点无法访问的原因,以便进行必要的更改来解决这一问题。

Feature Set
输出停靠点

将提供有关在站点、停靠点及休息点停靠的信息。 该信息包含哪些路径组成了停靠点、到达时间和离开时间以及停靠点顺序。

Feature Set
输出路径

将为车辆配送问题分析提供对驾驶员、车辆和路线路径的访问权限。

Feature Set
输出方向

将提供对每个生成路径转弯方向的访问权限。

Feature Set
求解成功

确定求解车辆配送分析是否成功。

Boolean
输出网络分析图层

网络分析图层可用于在地图中进行进一步分析或调试,其属性可在工具参数中进行配置。

File
输出路径数据

包含特定路径的所有信息的 .zip 文件。

File
输出结果文件

.zip 文件包含分析结果,每个输出对应一个或多个文件。 单个文件的格式由输出格式参数指定。

File
输出网络分析图层包

此图层包包含网络分析图层,该图层包含用于分析的数据和设置。

File
使用成本

此参数可返回分析使用的配额

注:

每个分析可以生成不同数量的付费对象,因此将使用不同数量的配额。 如果服务无法确定配额,则 usage_cost 参数会为 credits 返回值 -1

JSON

arcpy.agolservices.SolveVehicleRoutingProblem(orders, depots, routes, breaks, time_units, distance_units, {analysis_region}, {default_date}, {uturn_policy}, {time_window_factor}, {spatially_cluster_routes}, {route_zones}, {route_renewals}, {order_pairs}, {excess_transit_factor}, {point_barriers}, {line_barriers}, {polygon_barriers}, {use_hierarchy_in_analysis}, restrictions, {attribute_parameter_values}, {populate_route_lines}, {route_line_simplification_tolerance}, {populate_directions}, {directions_language}, {directions_style_name}, {travel_mode}, {impedance}, {time_zone_usage_for_time_fields}, {save_output_layer}, {overrides}, {save_route_data}, {time_impedance}, {distance_impedance}, {populate_stop_shapes}, {output_format}, {ignore_invalid_order_locations}, {locate_settings})
名称说明数据类型
orders

指定 VRP 分析的路径将访问的一个或多个位置。 停靠点可以表示送货(例如配送家具)、接收(例如机场巴士接送乘客)或某种类型的服务或检查(例如,树木修剪作业或建筑物检查)。

指定停靠点后,可使用以下特性为每个停靠点设置属性,例如停靠点的名称或服务时间:

ObjectID

系统管理的 ID 字段。

Name

停靠点的名称。 名称必须唯一。 如果该名称为空,则求解时会自动生成一个名称。

Description

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

ServiceTime

该属性指定了路径访问网络位置所花费的时间;也就是说,它存储了网络位置的阻抗值。 零值或空值表示网络位置不需要任何服务时间。

该字段值的单位由 time_units 参数指定。

TimeWindowStart1

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

时间窗仅说明车辆何时可以到达停靠点,并不说明服务时间必须何时结束。 为了考虑服务时间并在时间窗终止前离开,请从 TimeWindowEnd1 字段中减去 ServiceTime

时间窗口字段(TimeWindowStart1TimeWindowEnd1TimeWindowStart2TimeWindowEnd2)可以在日期字段中包含仅时间值或日期和时间值,但不能是表示自新纪元以来的毫秒数的整数。 时间窗口字段的时区可以使用时间字段的时区使用情况参数进行指定。 如果像 TimeWindowStart1 这样的时间字段具有“仅时间”值(例如 8:00 a.m.),则假定日期是针对分析设定的默认日期。 使用“日期和时间”值(例如 7/11/2010 8:00 a.m.)允许您设置持续多天的时间窗。

求解跨越多个时区的问题时,每个停靠点的时间窗值均采用停靠点所处位置的时区。

TimeWindowEnd1

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

TimeWindowStart2

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

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

如果两个时间窗均不为空,则二者不能重叠。 而且,第二个时间窗必须在第一个之后出现。

TimeWindowEnd2

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

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

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

MaxViolationTime1

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

该字段值的单位由时间字段单位参数指定

时间窗冲突可通过求解程序进行追踪和加权。 因此,您可以指示 VRP 求解程序执行以下操作之一:

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

通过指定时间窗冲突重要性参数的重要性级别,实际上就是从这三个选项中任选其中一个。 不过,无论在什么情况下,只要超过了为 MaxViolationTime1 设置的值,求解程序就会返回错误。

MaxViolationTime2

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

InboundArriveTime

定义要配送到停靠点的项在起始站点准备就绪的时间。

仅当入站到达时间早于路径的最晚开始时间值时,才能将该停靠点分配给此路径;这样,在项已准备就绪,可以进行装载之前,路径无法离开站点。

此字段有助于对涉及入站中转的情景进行建模。 例如,停靠点的某项作业需要一些特殊材料,但该站点当前并不具备这些材料。 现在正从另一位置运送这些材料,预计将在上午 11:00 到达该站点。为了确保不会将在货物到达之前离开的路径分配给此停靠点,停靠点的入站到达时间被设置为上午 11:00。 这些特殊材料在上午 11:00 到达后会被装载到车辆上,随后车辆离开该站点,驶向指派的停靠点。

注:

  • 包括服务时间在内的路径开始时间必须晚于入站到达时间。 如果路径的开始时间早于停靠点的入站到达时间,则无法将该停靠点分配给这一路径。 即使路径的起始站点服务时间晚于入站到达时间,这种分配也仍然无效。

  • 此时间字段可以包含“仅时间”值或“日期和时间”值。 如果该字段的设置为“仅时间”值(例如,11:00 AM),则假定日期为针对分析设置的默认日期。 但是,当站点、路径、停靠点或中断内的任一时间字段包含当时的日期时,将会忽略默认日期。 此时,需要使用日期和时间(例如,7/11/2015 11:00 AM)指定所有此类字段。

  • 无论 DeliveryQuantities 值为多少,VRP 求解程序都会遵循 InboundArriveTime

  • 如果同时指定了出站离开时间,则其时间值必须晚于入站到达时间。

OutboundDepartTime

定义要在停靠点接收的货物必须到达终止站点的时间。

仅当路径能够访问停靠点且到达终止站点的时间早于指定的出站离开时间时,才能将该停靠点分配给路径。

此字段有助于对涉及出站中转的情景进行建模。 例如,货运公司派出运货车去接收停靠点的包裹,并将其运送至采用其他设施的转运站点,然后将其送往最终目的地。 每天下午 3:00 会有一辆半挂车停靠在该站点,接收高优先级包裹并将其直接送往中转站。 为了避免将这些高优先级包裹的配送延迟至第二天下午 3:00 的行程,货运公司尝试让运货车在下午 3:00 之前接收停靠点的高优先级包裹,同时在该截止时间之前将其运送至中转站。 这完全可以通过将出站离开时间设置为下午 3:00 来实现。

注:

  • 包括服务时间在内的路径结束时间必须早于出站离开时间。 如果路径能够到达某站点,但其终止站点服务时间晚于该停靠点的出站离开时间,则无法将该停靠点分配给路径。

  • 此时间字段可以包含“仅时间”值或“日期和时间”值。 如果该字段的设置为“仅时间”值(例如,11:00 AM),则假定日期为针对分析设置的默认日期。 但是,当站点、路径、停靠点或中断内的任一时间字段包含当时的日期时,将会忽略默认日期。 此时,需要使用日期和时间(例如,7/11/2015 11:00 AM)指定所有此类字段。

  • 无论 PickupQuantities 值为多少,VRP 求解程序都会遵循 OutboundDepartTime

  • 如果同时指定了入站到达时间,则其时间值必须早于出站离开时间。

DeliveryQuantities

配送量。 可以按任何度量单位(如重量、体积或数量)来指定配送量。 也可以指定多个度量单位,例如,重量和体积。

输入未指明单位的配送量数值。 例如,如果需要将一个 300 磅的对象配送到某个停靠点,请输入 300。 您需要记住,该值的单位是磅。

如果您正在追踪的是具有多个维度的对象,请以空格分隔各维度的值。 例如,如果您在记录一次重 2,000 磅,体积为 100 立方英尺的配送业务的重量和体积,请输入 2000 100。 同样地,您需要记住单位,在这种情况下,单位分别是磅和立方英尺。 您还需要记住值及其对应单位的输入顺序。

确保以同样的方式指定“路径”的 Capacities 以及“停靠点”的 DeliveryQuantitiesPickupQuantities;即这些值的单位必须相同。 如果使用多个度量单位,则需要按照相同顺序列出所有参数的度量单位。 例如,对于 DeliveryQuantities,如果以磅为单位指定重量,后面以立方英尺为单位指定体积,则必须按照相同的方式指定路径的容量和停靠点的接收量:以磅为单位指定重量,后面以立方英尺为单位指定体积。 如果使用的单位不同或顺序发生变化,那么您将得到意外结果,但不会收到任何警告消息。

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

PickupQuantities

接收的大小。 可以按任何度量单位(如重量、体积或数量)来指定配送量。 也可以指定多个度量单位,例如,重量和体积。 但是,不可以使用负值。 该字段与“停靠点”的 DeliveryQuantities 字段相似。

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

Revenue

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

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

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

SpecialtyNames

一个以空格分隔的字符串,其中包含了停靠点特性要求的名称。 空值表示停靠点没有特殊要求。

停靠点和路径类中列出的所有特性的拼写必须完全匹配,这样 VRP 求解程序才能将它们链接起来。

为了说明什么是特殊要求及其工作方式,假设草坪护理及树木修剪公司都有一部分停靠点需要使用斗式铲车来修剪所有树木。 公司可以在 SpecialtyNames 字段中为这些停靠点输入 BucketTruck 来表示其特殊需求。 SpecialtyNames 将保留为空值(对于其他停靠点)。 同样,公司也可以在带液压吊杆的铲车路径的 SpecialtyNames 字段中输入 BucketTruck。 对于其他路径,该字段将保留为空值。 求解时,VRP 求解程序会将无任何特殊要求的停靠点分配给任意路径,而将需要斗式铲车的停靠点分配给有斗式铲车的路径。

AssignmentRule

用于指定将停靠点分配给路径时所要遵循的规则。 该字段值可指定为以下整数之一(请使用数值代码而非括号中的名称):

  • 0(排除)- 停靠点不参与后续的求解操作。
  • 1(保留路径和相对顺序)- 在求解操作过程中,求解程序必须始终将停靠点分配给预分配的路径并且遵照预先分配的相对顺序。 如果无法遵守该分配规则,就会导致停靠点冲突。 使用此设置,仅维护相对顺序,而不是绝对顺序。 为说明其中的含义,设想有两个停靠点:A 和 B。 其顺序值分别为 2 和 3。 如果将其 AssignmentRule 字段值设置为“保留路径和相对顺序”,则求解后 A 和 B 的顺序值可能发生改变,因为可以在 A 和 B 之前、之间或之后排序其他停靠点、休息点和站点访问。 只是,B 不可以排在 A 之前。
  • 2(保留路径)- 求解操作过程中,求解程序必须始终将停靠点分配给预分配的路径。 即使不一定会保留顺序,但也必须设置有效的顺序。 如果无法将停靠点分配给指定的路径,就会导致停靠点冲突。
  • 3(覆盖)- 在求解操作过程中,求解程序会尝试为停靠点保留路径和顺序的预分配信息。 不过,如果停靠点的新路径或新顺序有助于最小化目标函数的总体值,则可能会为停靠点分配新路径或新顺序。 这是默认值。
  • 4(固定第一个)- 在求解操作过程中,求解程序会忽略停靠点的路径和顺序预分配信息(如果有的话)。 求解程序将为停靠点分配路径,并使其成为该路径上的第一个停靠点,从而最小化目标函数的总体值。
  • 5(固定最后一个)- 在求解操作过程中,求解程序会忽略停靠点的路径和顺序预分配信息(如果有的话)。 求解程序将为停靠点分配路径,并使其成为该路径上的最后一个停靠点,从而最小化目标函数的总体值。

该字段不能包含空值。

CurbApproach

指定车辆到达和离开停靠点的方向。 该字段值可指定为以下整数之一(请使用数值代码而非括号中的名称):

  • 0(车辆的任意一侧)- 车辆可从任一方向到达和离开停靠点,因此在事件点处允许 U 形转弯。 如果车辆有可能要在停靠点处调头,则可以选择该设置。 此决策可能取决于道路的宽度以及交通量,或者该停靠点是否有停车场能让车辆驶入并调头。
  • 1(车辆的右侧)- 当车辆到达和离开停靠点时,停靠点必须在车辆右侧。 禁止 U 形转弯。 通常用于必须在右侧停靠的车辆(如公共汽车)。
  • 2(车辆的左侧)- 当车辆到达和离开停靠点时,路边必须在车辆左侧。 禁止 U 形转弯。 通常用于必须在左侧停靠的车辆(如公共汽车)。
  • 3(禁止 U 形转弯)- 当车辆到达停靠点时,路边可在车辆的任意一侧;但是,车辆在离开时不得调头。

CurbApproach 属性是专为使用以下两种国家驾驶标准而设计的:右侧通行(美国)和左侧通行(英国)。 首先,考虑位于车辆左侧的停靠点。 不管车辆行驶在左车道还是右车道,停靠点始终位于车辆的左侧。 决定从其中任一方向到达停靠点可能会随国家驾驶标准更改,也就是说,从车辆的右侧或左侧靠近停靠点。 例如,如果要到达一个停靠点并且在车辆与停靠点之间不存在其他交通车道,在美国应该选择 1(车辆的右侧),而在英国应该选择 2(车辆的左侧)。

RouteName

向其分配停靠点的路径的名称。

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

完成求解操作后,如果已为停靠点分配路径,则 RouteName 字段将包含向其分配停靠点的路径的名称。

Sequence

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

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

输入顺序值应为正且对于各路径均唯一(在货物补给点、停靠点和休息点之间共享),但是不需要从 1 开始,也不需要连续。

执行求解操作后,Sequence 字段中会包含停靠点在其分配的路径上的顺序值。 路径的输出 sequence 值在货物补给点、停靠点和休息点之间分配;从 1 开始(在起始站点处);并且是连续的。 已分配路径的停靠点的最小可能输出顺序值为 2,因为路径始终从站点处开始。

Bearing

点移动的方向。 单位为度,从正北开始沿顺时针方向进行测量。 该字段与 BearingTol 字段结合使用。

方位角数据通常会从配有 GPS 接收器的移动设备自动发送。 如果正在加载移动输入位置(例如行人或车辆),请尝试包括方位角数据。

使用该字段可以防止将位置添加到错误的边上,例如,车辆刚好在交叉路口或天桥附近时。 方位角也可帮助工具确定点在街道的哪一边上。

BearingTol

使用 Bearing 字段在边上定位移动点时,方位角容差值将创建一个可接受方位角值的范围。 如果 Bearing 字段值在可接受值范围(由边上的方位角容差生成)内,则可以将该点作为网络位置添加在此处,否则,将计算下一个最近边上的最近点。

单位为度,默认值为 30。 值必须大于 0 且小于 180。 值为 30 表示,Network Analyst 尝试在边上添加网络位置时,在边的每一侧(左侧和右侧)的两个数字化方向上都将生成一个 15 度的可接受方位角值。

NavLatency

如果 BearingBearingTol 也具有值,则该字段只在求解过程中使用;但是,即使当 BearingBearingTolNavLatency 字段中有值时,NavLatency 值的输入也是可选的。NavLatency 表示 GPS 信息从移动的车辆上发送到服务器以及车辆导航设备接收到处理后路径这两个时刻之间预期要花费的成本。

NavLatency 的单位与阻抗属性的单位相同。

Feature Set
depots

为给定车辆配送问题指定一个或多个站点。 站点是指车辆在工作时间开始时离开并在工作时间结束后返回的位置。 车辆在站点装货(对于配送)或卸货(对于接收)。 在某些情况下,站点还可以作为一个货物补给或货物更新的位置,车辆可以在此处卸货或重新装货,然后继续进行配送和接收。 站点具有打开时间和关闭时间,这由硬性时间窗指定。 车辆不能在该时间窗以外的时刻到达站点。

指定站点后,可使用以下特性为每个站点设置属性,例如站点的名称或服务时间:

ObjectID

系统管理的 ID 字段。

Name

站点的名称。 路径上的 StartDepotNameEndDepotName 字段引用您在此处指定的名称。 使用路径货物补给点时,也会对其进行引用。

站点名称不区分大小写,但必须非空且唯一。

Description

有关站点位置的描述性信息。 描述性信息可以包含任何文本信息,对唯一性没有任何限制。

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

TimeWindowStart1

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

时间窗口字段(TimeWindowStart1TimeWindowEnd1TimeWindowStart2TimeWindowEnd2)可以在日期字段中包含仅时间值或日期和时间值,但不能是表示自新纪元以来的毫秒数的整数。 时间窗口字段的时区可以使用时间字段的时区使用情况参数进行指定。 如果像 TimeWindowStart1 这样的时间字段具有“仅时间”值(例如 8:00 a.m.),则假定日期是针对分析设定的默认日期。 使用“日期和时间”值(例如 7/11/2010 8:00 a.m.)允许您设置持续多天的时间窗。

解决跨越多个时区的问题时,每个站点时间窗的值均采用站点所处位置的时区。

TimeWindowEnd1

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

TimeWindowStart2

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

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

如果两个时间窗均不为空,则二者不可以重叠。 而且,第二个时间窗必须在第一个之后出现。

TimeWindowEnd2

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

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

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

CurbApproach

  • 0(车辆的任意一侧)- 车辆可从任一方向到达和离开站点,因此事件点处允许 U 形转弯。 如果您的车辆有可能要在站点处调头,则可以选择该设置。 此决策可能取决于道路的宽度以及交通量,或者该站点是否有停车场能让车辆驶入并调头。
  • 1(车辆的右侧)- 当车辆到达和离开站点时,站点必须在车辆右侧。 禁止 U 形转弯。 通常用于必须在右侧停靠的车辆(如公共汽车)。
  • 2(车辆的左侧)- 当车辆到达和离开站点时,路边必须在车辆右侧。 禁止 U 形转弯。 通常用于必须在左侧停靠的车辆(如公共汽车)。
  • 3(禁止 U 形转弯)- 当车辆到达站点时,路边可在车辆的任意一侧;但是,车辆在离开时不得调头。

CurbApproach 属性是专为使用以下两种国家驾驶标准而设计的:右侧通行(美国)和左侧通行(英国)。 首先,考虑位于车辆左侧的站点。 不管车辆行驶在左车道还是右车道,停靠点始终位于车辆的左侧。 决定从其中任一方向到达站点可能会随国家驾驶标准更改,也就是说,从车辆的右侧或左侧靠近事件点。 例如,如果想要到达一个站点并且在车辆与站点之间不存在其他交通车道,在美国应该选择 1(车辆的右侧),而在英国应该选择 2(车辆的左侧)。

Bearing

点移动的方向。 单位为度,从正北开始沿顺时针方向进行测量。 该字段与 BearingTol 字段结合使用。

方位角数据通常会从配有 GPS 接收器的移动设备自动发送。 如果正在加载移动输入位置(例如行人或车辆),请尝试包括方位角数据。

使用该字段可以防止将位置添加到错误的边上,例如,车辆刚好在交叉路口或天桥附近时。 方位角也可帮助工具确定点在街道的哪一边上。

BearingTol

使用 Bearing 字段在边上定位移动点时,方位角容差值将创建一个可接受方位角值的范围。 如果 Bearing 字段值在可接受值范围(由边上的方位角容差生成)内,则可以将该点作为网络位置添加在此处,否则,将计算下一个最近边上的最近点。

单位为度,默认值为 30。 值必须大于 0 且小于 180。 值为 30 表示,Network Analyst 尝试在边上添加网络位置时,在边的每一侧(左侧和右侧)的两个数字化方向上都将生成一个 15 度的可接受方位角值。

NavLatency

如果 BearingBearingTol 也具有值,则该字段只在求解过程中使用;但是,即使当 BearingBearingTolNavLatency 字段中有值时,NavLatency 值的输入也是可选的。NavLatency 表示 GPS 信息从移动的车辆上发送到服务器以及车辆导航设备接收到处理后路径这两个时刻之间预期要花费的成本。

NavLatency 的单位与阻抗属性的单位相同。

Feature Set
routes

指定一个或多个用于描述车辆和驾驶员特征的路径。 路径可以具有开始和结束站点服务时间、固定或灵活的起始时间、基于时间的运行成本、基于距离的运行成本、多个容量、对驾驶员工作时间的各种约束等等。

可通过以下属性指定路径:

Name

路径的名称。 名称必须唯一。

如果字段值为空,则工具会在求解时生成唯一的名称。因此,在大多数情况下,可自行选择是否输入值。 但是,如果您的分析中包括向路径预分配的中断、路径货物补给点、按区域配送或停靠点,则您必须输入名称,因为在这些情况下路径名称将用作外键。 路径名称不区分大小写。

StartDepotName

路径的起始站点名称。 该字段是“站点”中 Name 字段的外键。

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

如果停靠点或站点跨多个时区,则不允许使用虚拟起始站点。

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

EndDepotName

路径的终止站点名称。 该字段是“站点”中 Name 字段的外键。

StartDepotServiceTime

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

该字段值的单位由时间字段单位参数指定。

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

EndDepotServiceTime

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

该字段值的单位由时间字段单位参数指定。

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

EarliestStartTime

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

该字段不能包含空值,其默认“仅时间”值为 8:00 AM。 该默认值被解释为针对分析设置的默认日期的 8:00 a.m。

解决跨越多个时区的问题时,EarliestStartTime 的时区与起始站点所在的时区相同。

LatestStartTime

路径允许的最晚开始时间。

该字段不能包含空值,其默认“仅时间”值为 10:00 AM。 该默认值被解释为针对分析设置的默认日期的 10:00 a.m。

解决跨越多个时区的问题时,LatestStartTime 的时区与起始站点所在的时区相同。

ArriveDepartDelay

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

该属性的成本是因为对不重合的停靠点、站点和货物补给点进行访问而产生的。 例如,如果路径从站点处开始,然后访问第一个停靠点,则总的到达/离开延迟会计入行驶时间。 这同样适用于从第一个停靠点行驶到第二个停靠点的情况。 如果第二个停靠点与第三个停靠点重合,则不会在它们之间添加 ArriveDepartDelay 值,因为车辆并不需要移动。 如果路径行驶到一个货物补给点,则该值会再次计入行驶时间。

尽管车辆必须减速、停下来休息,然后再加速,但 VRP 求解程序也不能将 ArriveDepartDelay 值计入休息时间。 这表示如果路径离开某个停靠点、停下休息,然后继续行驶到下一个停靠点,则仅计入一次到达/离开延迟,而不是两次。

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

该字段值的单位由 time_units 参数指定。

Capacities

车辆的最大容量。 可以按任何度量单位(如重量、体积或数量)来指定容量。 也可以指定多个度量单位,例如,重量和体积。

输入未指明单位的容量。 例如,如果您车辆的最大载重为 40,000 磅,输入 40000。 您需要记住,该值的单位是磅。

如果您正在追踪的是具有多个维度的对象,请以空格分隔各维度的值。 例如,如果您在记录一次重 2,000 磅,体积为 100 立方英尺的配送业务的重量和体积,请输入 2000 100。 同样地,您需要记住单位,在这种情况下,单位分别是磅和立方英尺。 您还需要记住值及其对应单位的输入顺序。

鉴于以下原因,记住单位和单位顺序非常重要:第一,您可以在稍后重新解释信息;第二,您可以在停靠点的 DeliveryQuantitiesPickupQuantities 字段中输入正确的值。 请注意,VRP 求解程序会同时引用 CapacitiesDeliveryQuantitiesPickupQuantities,以确保路径不会超载。 不能在字段中输入单位,VRP 工具无法进行单位转换。 必须以相同的单位和单位顺序在这三个字段中输入值,才能确保正确地解释值。 如果在这三个字段的任意字段中使用的单位不同或顺序发生变化,将得到意外结果,但不会收到任何警告消息。 建议您事先设置单位和单位顺序标准,且后续在这三个字段中输入值时始终参考此标准。

空字符串或空值等同于无穷大。 容量值不能为负。

如果 Capacities 字段中值的个数相对于停靠点的 DeliveryQuantitiesPickupQuantities 字段来说数量不足,则其余的值将被视为无穷大。

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

FixedCost

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

CostPerUnitTime

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

该字段值的单位由 time_units 参数指定。

CostPerUnitDistance

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

该字段值的单位由 distance_units 参数指定。

OvertimeStartTime

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

该字段值的单位由 time_units 参数指定。

例如,如果路径总持续时间超过八小时,要为驾驶员支付加班费,假定时间单位为“分钟”,则 OvertimeStartTime 将被指定为 480(8 小时 * 60 分钟/小时)。

CostPerUnitOvertime

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

MaxOrderCount

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

MaxTotalTime

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

该字段值的单位由 time_units 参数指定。

MaxTotalTravelTime

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

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

该字段值的单位由 time_units 参数指定。

MaxTotalDistance

路径允许的最长行驶距离。

该字段值的单位由 distance_units 参数指定。

该字段可以包含空值;空值表示对允许的最长行驶距离无限制。

SpecialtyNames

一个以空格分隔的字符串,其中包含了停靠点特性要求的名称。 空值表示停靠点没有特殊要求。

停靠点和路径类中列出的所有特性的拼写必须完全匹配,这样 VRP 求解程序才能将它们链接起来。

为了说明什么是特殊要求及其工作方式,假设草坪护理及树木修剪公司都有一部分停靠点需要使用斗式铲车来修剪所有树木。 公司可以在 SpecialtyNames 字段中为这些停靠点输入 BucketTruck 来表示其特殊需求。 SpecialtyNames 将保留为空值(对于其他停靠点)。 同样,公司也可以在带液压吊杆的铲车路径的 SpecialtyNames 字段中输入 BucketTruck。 对于其他路径,该字段将保留为空值。 求解时,VRP 求解程序会将无任何特殊要求的停靠点分配给任意路径,而将需要斗式铲车的停靠点分配给有斗式铲车的路径。

AssignmentRule

用于指定将停靠点分配给路径时所要遵循的规则。 该字段值可指定为以下整数之一(请使用数值代码而非括号中的名称):

该字段不能包含空值。

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

Record Set
breaks

给定车辆配送问题 (VRP) 中路径的休息时段或中断。 一个休息点仅与一条路径相关联,而且可在以下情况下获得:完成停靠点服务后、去往停靠点的途中或在为停靠点提供服务之前。 中断具有一个起始时间和持续时间,该时间段内可能会为驾驶员支付报酬,也可能不支付。 中断开始时可通过三种方式来建立:时间窗、最长行驶时间或最长工作时间。

如果停靠点或站点跨多个时区,则除非时间以 UTC 计,否则不允许使用时间窗中断。

指定休息点后,可使用以下特性为每个休息点设置属性,例如休息点的名称或服务时间。

ObjectID

系统管理的 ID 字段。

RouteName

此休息点所适用的路径名称。 一个休息点仅分配给一条路径,但可将多个休息点分配给同一路径。

该字段是“路径”中 Name 字段的外键,所以不能具有空值。

Precedence

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

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

ServiceTime

休息点的持续时间。 此字段不能包含空值。 默认值为 60。

该字段值的单位由 time_units 参数指定。

TimeWindowStart

休息点时间窗的开始时间。 必须指定开始时间和结束时间。

如果该字段中存在值,则 MaxTravelTimeBetweenBreaksMaxCumulWorkTime 字段值必须为空,而且分析中所有其他休息点的 MaxTravelTimeBetweenBreaksMaxCumulWorkTime 必须也为空值。

如果路径具有时间窗相互重叠的多个休息点,求解时将出错。

中断的时间窗口字段可以在日期字段中包含仅时间值或日期和时间值,但不能是表示自新纪元以来的毫秒数的整数。 时间窗口字段的时区可以使用时间字段的时区使用情况参数进行指定。 如果像 TimeWindowStart 这样的时间字段的值只有时间(例如下午 12:00),则假定日期为默认日期参数(Python 中的 default_date)指定的日期。 使用“日期和时间”值(例如 7/11/2012 12:00 p.m.)可以指定时长为两天或两天以上的时间窗。 这适用于应在午夜前后的某个时间中断的情况。

TimeWindowEnd

休息点时间窗的结束时间。 必须指定开始时间和结束时间。

如果该字段中存在值,则 MaxTravelTimeBetweenBreaksMaxCumulWorkTime 必须为空,而且分析中所有其他休息点的 MaxTravelTimeBetweenBreaksMaxCumulWorkTime 必须也为空值。

MaxViolationTime

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

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

该属性可以为空。 如果 TimeWindowStartTimeWindowEnd 值为空,则表示对允许的冲突时间没有限制。 如果 MaxTravelTimeBetweenBreaksMaxCumulWorkTime 中存在值,则 MaxViolationTime 必须为空。

该字段值的单位由 time_units 参数指定。

MaxTravelTimeBetweenBreaks

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

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

该字段用于限制可在驾驶多长时间之后才需要中断。 例如,如果将分析的时间单位设置为分钟,而且 MaxTravelTimeBetweenBreaks 的值为 120,则司机将在驾驶两个小时之后中断驾驶以得到休息。 如果要再行驶两个小时后休息一次,则第二个休息点的 MaxTravelTimeBetweenBreaks 属性必须为 120。

如果该字段中存在值,则要成功求解分析,TimeWindowStartTimeWindowEndMaxViolationTimeMaxCumulWorkTime 必须均为空。

该字段值的单位由 time_units 参数指定。

MaxCumulWorkTime

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

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

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

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

如果该字段中存在值,则要成功求解分析,TimeWindowStartTimeWindowEndMaxViolationTimeMaxTravelTimeBetweenBreaks 必须均为空。

该字段值的单位由 time_units 参数指定。

IsPaid

用来指示是否为休息点支付报酬的布尔值。 将此字段的值设置为 1,表示在计算路径成本和判定加班时间时将包括在休息点处所花费的时间。 值为 0,则反之。 默认值为 1。

Sequence

指示休息点在其路径上的顺序。 此字段可以包含空值,这会使求解程序分配休息点顺序。 如果指定顺序值,则其应为正且对于各路径均唯一(在货物补给点、停靠点和休息点之间分配),但是不需要从 1 开始,也不需要连续。

Record Set
time_units

分析中所有基于时间的字段值的时间单位。 VRP 分析中的许多要素和记录都具有用于存储时间值的字段,例如用于停靠点的 ServiceTime 和用于路径的 CostPerUnitTime。 为了最大程度减少数据输入的要求,这些字段值不包含单位。 相反,所有基于距离的字段值都必须以相同单位输入,而此参数用于指定这些值的单位。

  • Seconds时间单位为秒。
  • Minutes时间单位为分钟。
  • Hours时间单位为小时。
  • Days时间单位为天。

请注意,基于时间的输出字段使用此参数指定的相同单位。

String
distance_units

分析中所有基于距离的字段值的距离单位。 VRP 分析中许多要素和记录都有用于存储距离值的字段,例如路径的 MaxTotalDistanceCostPerUnitDistance。 为了最大程度减少数据输入的要求,这些字段值不包含单位。 相反,所有基于距离的字段值都必须以相同单位输入,而此参数用于指定这些值的单位。

  • Meters线性单位为米。
  • Kilometers线性单位为千米。
  • Feet线性单位为英尺。
  • Yards线性单位为码。
  • Miles线性单位为英里。
  • NauticalMiles线性单位为海里。

注意,基于距离的输出字段使用此参数指定的相同单位。

String
analysis_region
(可选)

将执行分析的区域。 如果未对此参数指定值,工具会基于输入点的位置自动计算区域名称。 仅当自动检测的区域名称输入不准确时,才需要设置区域名称。

要指定区域,请使用以下值之一:

  • Europe分析区域为欧洲。
  • Japan分析区域为日本。
  • Korea分析区域为韩国。
  • MiddleEastAndAfrica分析区域为中东和非洲。
  • NorthAmerica分析区域为北美洲。
  • SouthAmerica分析区域为南美洲。
  • SouthAsia分析区域为南亚。
  • Thailand分析区域为泰国。
旧版本:

不再支持以下区域名称,且将在未来版本中删除这些名称。 如果您指定了任一已弃用的区域名称,则工具会自动为您所在的区域分配支持的区域名称。

  • 希腊将重定向到欧洲
  • 印度将重定向到南亚
  • 大洋洲将重定向到南亚
  • 东南亚将重定向到南亚
  • 台湾将重定向到南亚

String
default_date
(可选)

指定一天中的时间(不包含日期)的时间字段值的默认日期。 您可以在各种输入参数中查找这些时间字段,例如停靠点和休息点参数中的 ServiceTime 属性。

Date
uturn_policy
(可选)

执行是限制还是允许服务区在交汇点处进行 U 形转弯。 为理解这些参数值,请考虑下列术语:交汇点是在路段的尽头且可能与其他一条或多条路段相连的点;伪交汇点是指两条街道确实在此处相连的点;交叉点是指三条或更多街道在此处相连的点;死角是指一条不与其他路段相连的路段的尽头。

  • ALLOW_UTURNS可在任何地方 U 形转弯。 允许 U 形转弯表示车辆可以在任何交汇点处转向并沿同一街道往回行驶。 这是默认值。
  • NO_UTURNS在伪交汇点、交叉点和死角等所有交汇点处禁止 U 形转弯。 但是请注意,即使选中此选项,也可能允许 U 形转弯。 为防止在事件点和设施点处 U 形转弯,设置 CurbApproach 字段值以禁止 U 形转弯。
  • ALLOW_DEAD_ENDS_ONLY除仅有一条连接街道要素(死角)的交汇点外,其他交汇点均禁止 U 形转弯。
  • ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY确有两条相邻街道相交的伪交汇点处禁止 U 形转弯,但是交叉点和死角处允许。 若道路中的一段正好数字化为两个街道要素,这可防止道路中央的转弯。

除非将出行模式设置为自定义(这是默认值),否则会忽略您为此参数提供的值。

String
time_window_factor
(可选)

指定支持时间窗的重要性。

  • High提高按时到达停靠点的重要性,降低减少驾驶时间的重要性。 例如,进行时间紧迫的配送或注重客户服务的组织将使用此选项。
  • Medium平衡减少驾驶时间的重要性与在时间窗内到达的重要性。 这是默认值。
  • Low提高减少驾驶时间的重要性,降低按时到达停靠点的重要性。 如果积压的服务请求逐渐增多,则可以使用此设置。 如果为了在当日内为更多的停靠点提供服务并减少积压的订单数,则可使用此选项,即使迟到可能会为客户带来不便。
String
spatially_cluster_routes
(可选)

指定是否将对路径进行空间聚类。

  • CLUSTER (True) - 为所有路径自动创建动态补给点,而分配到各个路径的停靠点将发生空间聚类。 对停靠点进行聚类往往在较小区域保持路径,并减小不同路径线彼此相交的频率;然而,聚类也往往会增加总行程时间。
  • NO_CLUSTER (False) - 不会创建动态补给点。 如果指定了路径区,选择此选项。

Boolean
route_zones
(可选)

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

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

指定路径区后,必须使用以下特性为每个路径区设置属性,例如路径区的关联路径:

ObjectID

系统管理的 ID 字段。

RouteName

该区域所应用到的路径的名称。 按区域配送最大可覆盖一条关联路径。 该字段不能包含空值,而且是路径中 Name 字段的外键。

IsHardZone

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

Feature Set
route_renewals
(可选)

指定路径可以访问的中间站点,以重新装载或卸载正在配送或接收的货物。 具体而言,货物补给点将把路径链接到站点。 这一关系表示可在关联的站点处进行货物补给(在途中重新装货或卸货)。

货物补给可用于为以下情景建立模型:车辆在起始站点接收满载的配送量、到各停靠点提供服务、返回到该站点更新配送量,然后继续为更多停靠点提供服务。 例如,在丙烷气配送中,车辆可能需要进行多次交货才能将气罐排空,而且需要访问加气点并继续进行配送。

以下是要考虑的一些规则和选项:

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

在指定货物补给点时,您必须使用以下特性为每条路径设置属性,例如进行货物补给的站点的名称:

ObjectID

系统管理的 ID 字段。

DepotName

进行该更新时所在站点的名称。 该字段不能包含空值,而且是站点中 Name 字段的外键。

RouteName

该补给点适用的路径的名称。 该字段不能包含空值,而且是路径中 Name 字段的外键。

ServiceTime

更新的服务时间。 该字段可以包含空值;空值表示没有服务时间。

该字段值的单位由 time_units 参数指定。

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

Record Set
order_pairs
(可选)

将接收停靠点和配送停靠点配对,使其可由同一路径提供服务。 指定停靠点对可避免只将其中一个停靠点分配给路径:要么将两个停靠点都分配给同一条路径,要么都不分配。

有时,要求停靠点的接收和配送必须是成对的。 例如,快递公司可能需要让路径从一个停靠点接收高优先级包裹并送往另一个停靠点,而不返回站点或分拣站,以减少送货时间。 可以通过使用停靠点对,按照相应的顺序将这些相关的停靠点分配给同一路径。 此外,还可以对包裹在车辆上停留的时间进行限制;例如,包裹可能是血液样本,必须在两个小时内从医生办公室运送到实验室。

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

在指定停靠点对时,您必须使用以下特性为每一停靠点对设置属性,例如两个停靠点的名称:

ObjectID

系统管理的 ID 字段。

FirstOrderName

停靠点对中第一个停靠点的名称。 该字段是“停靠点”中 Name 字段的外键。

SecondOrderName

停靠点对中第二个停靠点的名称。 该字段是“停靠点”中 Name 字段的外键。

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

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

MaxTransitTime

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

该字段值的单位由分析对象的 timeUnits 属性指定。

求解程序可对额外行驶时间(相对于停靠点对之间的直线行驶时间来测量)进行追踪和加权。 因此,您可指示 VRP 求解程序采用以下三种方法之一:

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

通过指定 excess_transit_factor 参数的重要性级别,实际上就是从这三种方法中任选其中一种。 无论重要性级别如何,只要超过 MaxTransitTime 值,求解程序就会返回错误。

Record Set
excess_transit_factor
(可选)

指定减少停靠点对的额外行驶时间的重要性。 额外行驶时间是指超出停靠点对间直线行驶所需时间的数量。 额外时间可能由司机休息或前往中间停靠点和站点造成。

  • High提高减少停靠点对之间额外行驶时间的重要性(以增加总体行驶成本为代价)。 当在停靠点对间运载乘客并且想缩短他们的乘车时间时,通常使用此选项。 这是出租车服务的特征。
  • Medium平衡减少额外行驶时间和降低总体解决方案成本的重要性。 这是默认值。
  • Low提高减少总体解决方案成本的重要性(不考虑额外行驶时间)。 此设置通常应用于快递服务。 由于快递运输的是包裹而不是人员,因此无需担心行驶时间。 通过此选项,快递可以按照最适合的顺序为停靠点对提供服务,并且总体解决方案成本最低。
String
point_barriers
(可选)

使用此参数可指定一个或多个点,来充当临时限制或表示在基础街道上行驶可能需要的附加时间或距离。 例如,可使用点障碍显示一棵沿街倒下的树或穿过铁路道口时花费的时间延迟。

工具限制了可添加为障碍的点不得超过 250 个。

指定点障碍时,可通过使用以下特性为每个障碍点设置属性,例如其名称或障碍类型。

Name

障碍名称。

BarrierType

指定点障碍是完全限制通行还是会在穿越时增加时间或距离。 此特性值可指定为以下整数之一(请使用数值代码而非括号中的名称):

  • 0(限制型)- 禁止穿过障碍。 此障碍称为限制型点障碍,因为它作为限制使用。

  • 2(增加成本型)- 穿过此障碍会增加通过 Additional_TimeAdditional_DistanceAdditionalCost 字段指定的行驶时间或行驶距离的数值。 此障碍类型称为增加成本型点障碍。

Additional_Time

遍历障碍时增加的行驶时间。 此字段仅适用于增加成本型障碍,且仅在测量单位参数值基于时间时适用。

此字段值必须大于或等于零,并且其单位必须与在测量单位参数中指定的单位相同。

Additional_Distance

遍历障碍时增加的距离。 此字段仅适用于增加成本型障碍,且仅在测量单位参数值基于距离时适用。

该字段值必须大于或等于零,并且其单位必须与在测量单位参数中指定的单位相同。

AdditionalCost

遍历障碍时增加的成本。 当测量单位参数值不基于时间或距离时,此字段仅适用于增加成本型障碍。

FullEdge

指定分析期间如何将限制点障碍应用于边元素。 该字段值可指定为以下整数之一(请使用数值代码而非括号中的名称):

  • 0 (False) - 允许沿边行进到障碍,但不允许穿过障碍。 这是默认值。
  • 1 (True) - 禁止沿关联边的任何位置行进。

CurbApproach

指定受障碍影响的行驶方向。 该字段值可指定为以下整数之一(请使用数值代码而非括号中的名称):

  • 0(车辆的任一侧)- 障碍将影响在边左右两个方向上行驶的车辆。
  • 1(车辆右侧)- 只会影响车辆的右行方向(障碍位于车辆左侧)。 在同一条边上行驶但从左侧接近障碍的车辆不会受到障碍的影响。
  • 2(车辆左侧)- 只会影响车辆的左行方向(障碍位于车辆左侧)。 在同一条边上行驶但从右侧接近障碍的车辆不会受到障碍的影响。

由于交汇点是点且不分左右侧,所以无论路边通道如何设置,交汇点上的障碍都会影响所有车辆。

CurbApproach 属性适用于以下两种国家驾驶标准:右侧通行(美国)和左侧通行(英国)。 首先,考虑位于车辆左侧的设施点。 不管车辆行驶在左车道还是右车道,停靠点始终位于车辆的左侧。 不同国家的驾驶标准可能会要求您从这两种方向中的其中一个接近设施点,也就是说,只能从车辆的右侧或左侧接近设施点。 例如,要到达一个设施点并且在车辆与设施点之间不存在其他交通车道,在美国应该选择 1(车辆的右侧),而在英国应该选择 2(车辆的左侧)。

Bearing

点移动的方向。 单位为度,从正北开始沿顺时针方向进行测量。 该字段与 BearingTol 字段结合使用。

方位角数据通常会从配有 GPS 接收器的移动设备自动发送。 如果正在加载移动输入位置(例如行人或车辆),请尝试包括方位角数据。

使用该字段可以防止将位置添加到错误的边上,例如,车辆刚好在交叉路口或天桥附近时。 方位角也可帮助工具确定点在街道的哪一边上。

BearingTol

使用 Bearing 字段在边上定位移动点时,方位角容差值将创建一个可接受方位角值的范围。 如果 Bearing 字段值在可接受值范围(由边上的方位角容差生成)内,则可以将该点作为网络位置添加在此处,否则,将计算下一个最近边上的最近点。

单位为度,默认值为 30。 值必须大于 0 且小于 180。 值为 30 表示,Network Analyst 尝试在边上添加网络位置时,在边的每一侧(左侧和右侧)的两个数字化方向上都将生成一个 15 度的可接受方位角值。

NavLatency

如果 BearingBearingTol 也具有值,则该字段只在求解过程中使用;但是,即使当 BearingBearingTolNavLatency 字段中有值时,NavLatency 值的输入也是可选的。NavLatency 表示 GPS 信息从移动的车辆上发送到服务器以及车辆导航设备接收到处理后路径这两个时刻之间预期要花费的成本。

NavLatency 的单位与阻抗属性的单位相同。

Feature Set
line_barriers
(可选)

使用此参数可指定一条或多条线,以禁止在线与街道的所有相交位置通行。 例如,线障碍可用于对阻塞若干个路段交通的游行或抗议队伍进行建模。 线障碍还可隔离多条道路以禁止进行遍历,从而在可能的路径中去除不符合要求的街道网络部分。

该工具限制了您可以使用线障碍参数限制的街道数量。 可指定为线障碍的线数没有限制时,所有线的相交街道的合并数不能超过 500

指定线障碍时,可使用以下特性设置每个线障碍的名称和障碍类型:

Name

障碍名称。

Feature Set
polygon_barriers
(可选)

使用此参数可指定面,以完全限制通行或按比例调整在与面相交的街道上行进所需的时间或距离。

该服务限制了您可以使用面障碍参数限制的街道数量。 可指定为面障碍的面数没有限制时,所有面的相交街道的合并数不能超过 2,000

指定面障碍时,可通过使用以下特性为每个面障碍设置属性,例如其名称或障碍类型。

Name

障碍名称。

BarrierType

指定障碍是完全禁止通行还是按比例调整穿过成本(例如时间或距离)。 该字段值可指定为以下整数之一(请使用数值代码而非括号中的名称):

  • 0(限制型)- 禁止穿过障碍的任何部分。 此障碍称作限制型面障碍,因为它禁止在与障碍相交的街道上行驶。 此类障碍的一个具体应用是对覆盖街道中某些区域且导致街道无法通行的洪水进行建模。

  • 1(按比例调整成本型)- 根据使用 ScaledTimeFactorScaledDistanceFactor 字段指定的系数,按比例调整在基础街道上行驶所需的成本(例如行驶时间或距离)。 如果障碍部分覆盖了街道,则会按比例调整行程时间或行程距离。 例如,系数 0.25 表示在基础街道上行进的速度是正常速度的四倍。 系数 3.0 表示预期在基础街道上行进相同距离所花费的时间为正常值的三倍。 此障碍类型称为按比例调整成本型面障碍。 例如,可使用该障碍对导致特定区域的行进速度减慢的暴风雨进行建模。

ScaledTimeFactor

它是与障碍相交街道的行驶时间要乘以的因子。 该字段值必须大于零。

此字段仅适用于按比例调整成本型障碍且仅在测量单位参数基于时间时适用。

ScaledDistanceFactor

它是与障碍相交街道的距离要乘以的因子。 该字段值必须大于零。

此字段仅适用于按比例调整成本型障碍且仅在测量单位参数基于距离时适用。

ScaledCostFactor

这是与障碍相交的街道的成本要乘以的系数。 该字段值必须大于零。

此字段仅适用于按比例调整成本型障碍且仅在测量单位参数既不基于时间也不基于距离时适用。

Feature Set
use_hierarchy_in_analysis
(可选)

指定在查找最佳路径时是否将使用等级。

  • 选中 (True) - 查找路径时将使用等级。 在应用等级时,相比低等级的街道(例如地方道路),该工具会优先标识等级较高的街道(例如高速公路),且该工具可以用于模拟驾驶员对在高速公路(而非地方道路)上行驶的偏好,即使这意味着行程更远。 查找远距离位置的路径时尤为如此,因为长途驾驶员往往更偏好于在高速公路上行驶,这样可以避免停靠、交叉路口和转弯。 应用等级可实现更快的计算速度,尤其是对于长途路径来说,因为该工具需要在相对较小的街道子集中标识最佳路径。
  • 未选中 (False) - 查找路径时不会使用等级。 如果没有应用等级,该工具就会考虑所有的街道且在选择路线时并不一定标识等级较高的街道。 这常用于在市内查找短途路径。

如果停靠点之间、站点之间、或停靠点与站点之间的直线距离大于 50 英里,即使未选中此参数 (False),工具也会自动转换为使用等级。

除非将出行模式设置为自定义(这是默认值),否则系统会忽略此参数。

Boolean
restrictions
[restrictions,...]

在查找最佳路径时工具将遵从的限制。

限制表示行驶偏好或要求。 大多数情况下,限制条件会导致道路禁行。 例如,使用“避开收费公路”限制将导致路径仅在需要借道收费公路才能访问某一事件点或设施点时包含收费公路。 高度限制则使您可以绕开低于车辆高度的间隙。 如果车辆上装载着腐蚀性物质,使用“禁止任何危险物品”限制将防止在标记着运输腐蚀性材料为非法行为的路上运输这些材料。

注:

除非将出行模式设置为自定义,否则会忽略您为此参数提供的值。

注:

某些限制需要指定一个额外值才能进行使用。 该值必须与限制名称和用于限制的特定参数相关联。 可识别名称在属性参数值参数的 AttributeName 列中显示的限制。 在查找可遍历道路时,要正确使用限制,请指定属性参数值参数的 ParameterValue 字段。

注:

有些限制仅适用于某些国家/地区;下表按区域显示了这些限制的可用性。 关于在某区域内可用性有限的限制,通过在网络分析覆盖范围上查看“国家/地区列表”部分中的表,可以确定该限制在特定国家/地区是否可用。 如果一个国家/地区具有 Logistics Attribute 列的 Yes 值,则该国家/地区支持具有区域可选性的限制。 如果您指定的限制名称在事件点所在的国家/地区不可用,该服务会忽略无效限制。 该服务还会忽略约束条件用法属性参数值为 0 到 1(请参阅属性参数值参数)时的约束条件。 它会禁止约束条件用法参数值大于 0 时的所有约束条件。

该服务支持以下约束条件:

  • Any Hazmat Prohibited结果将不包含禁止运输任何危险类型材料的道路。可用性:在北美洲及欧洲选择国家
  • Avoid Carpool Roads结果将避开专供拼车(高承载)车辆行使的道路。可用性:所有国家
  • Avoid Express Lanes结果将避开指定为快速车道的道路。可用性:所有国家
  • Avoid Ferries结果将避开轮渡。可用性:所有国家
  • Avoid Gates结果将避开存在关键通道或守卫控制入口等关口的道路。可用性:所有国家
  • Avoid Limited Access Roads结果将避开限制进入高速公路的道路。可用性:所有国家
  • Avoid Private Roads结果将避开非公有和维护的道路。可用性:所有国家
  • Avoid Roads Unsuitable for Pedestrians结果将避开不适合行人的道路。可用性:所有国家
  • Avoid Stairways结果将避开行人适合路线上的所有楼梯。可用性:所有国家
  • Avoid Toll Roads结果将避开汽车收费公路。可用性:所有国家
  • Avoid Toll Roads for Trucks结果将避开卡车收费公路。可用性:所有国家
  • Avoid Truck Restricted Roads结果将避开禁止货车通行的道路,除非正在进行配送。可用性:所有国家
  • Avoid Unpaved Roads结果将避开未铺设(例如,泥土、砾石等)的道路。可用性:所有国家
  • Axle Count Restriction结果将不包含具有指定轴数的卡车禁行的道路。 可使用车轴数限制参数指定车轴数。可用性:在北美洲及欧洲选择国家
  • Driving a Bus结果将不包含公共汽车禁行的道路。 使用此约束条件还将确保结果支持单行道。可用性:所有国家
  • Driving a Taxi结果将不包含出租车禁行的道路。 使用此约束条件还将确保结果支持单行道。可用性:所有国家
  • Driving a Truck结果将不包含卡车禁行的道路。 使用此约束条件还将确保结果支持单行道。可用性:所有国家
  • Driving an Automobile结果将不包含汽车禁行的道路。 使用此约束条件还将确保结果支持单行道。可用性:所有国家
  • Driving an Emergency Vehicle结果将不包含急救车辆禁行的道路。 使用此约束条件还将确保结果支持单行道。可用性:所有国家
  • Height Restriction结果将不包含车辆高度超出道路所允许的最大高度的道路。 可使用“车辆高度(米)”限制参数指定车辆高度。可用性:在北美洲及欧洲选择国家
  • Kingpin to Rear Axle Length Restriction结果将不包含车辆长度超出路上所有货车所允许的主销到后轴最大长度的道路。 可使用“车辆主销到后轴长度(米)”限制参数指定车辆中心立轴与后轴之间的长度。可用性:在北美洲及欧洲选择国家
  • Length Restriction结果将不包含车辆长度超出道路所允许的最大长度的道路。 可使用“车辆长度(单位为米)”限制参数指定车辆长度。可用性:在北美洲及欧洲选择国家
  • Preferred for Pedestrians结果将使用适合行人导航的首选路线。可用性:在北美洲及欧洲选择国家
  • Riding a Motorcycle结果将不包含摩托车禁行的道路。 使用此约束条件还将确保结果支持单行道。可用性:所有国家
  • Roads Under Construction Prohibited结果将不包含在建道路。可用性:所有国家
  • Semi or Tractor with One or More Trailers Prohibited结果将不包含带有一个或多个拖车的半挂车或牵引车禁行的道路。可用性:在北美洲及欧洲选择国家
  • Single Axle Vehicles Prohibited结果将不包含单轴车辆禁行的道路。可用性:在北美洲及欧洲选择国家
  • Tandem Axle Vehicles Prohibited结果将不包含双轴车辆禁行的道路。可用性:在北美洲及欧洲选择国家
  • Through Traffic Prohibited结果将不包含禁止过境交通(非本地)的道路。可用性:所有国家
  • Truck with Trailers Restriction结果将不包含具有指定拖车数量的货车禁行的道路。 可使用“卡车上的拖车数量”限制参数指定卡车的拖车数量。可用性:在北美洲及欧洲选择国家
  • Use Preferred Hazmat Routes结果将优先选择专用于运输危险类型材料的道路。可用性:在北美洲及欧洲选择国家
  • Use Preferred Truck Routes结果将优先选择指定为卡车路径的道路,例如,由美国的《国家地面交通援助法案》指定为国家网络的一部分的道路,由州或省指定为卡车路径的道路,或在某区域内驾驶卡车的首选道路。可用性:在北美洲及欧洲选择国家
  • Walking结果将不包含行人禁行的道路。可用性:所有国家
  • Weight Restriction结果将不包含车辆重量超出道路所允许的最大重量的道路。 可使用“车辆重量(千克)”限制参数指定车辆重量。可用性:在北美洲及欧洲选择国家
  • Weight per Axle Restriction结果将不包含车辆轴负重超出道路所允许的最大轴负重的道路。 可使用“车辆轴负重(千克)”限制参数指定车辆轴负量。可用性:在北美洲及欧洲选择国家
  • Width Restriction结果将不包含车辆宽度超出道路所允许的最大宽度的道路。 可使用“车辆宽度(单位为米)”限制参数指定车辆宽度。可用性:在北美洲及欧洲选择国家
String
attribute_parameter_values
(可选)

使用此参数可指定属性或限制条件所需的其他值,例如,指定限制对在受限道路上行驶是禁止、避免还是首选。 如果该限制要避免或首选道路,您可以使用此参数进一步指定要避免或首选的程度。 例如,您可以选择从不使用收费公路,尽可能的避开它们,或首选它们。

注:

除非将出行模式设置为自定义,否则会忽略您为此参数提供的值。

如果指定了要素类的属性参数值参数,则要素类上的字段名称必须与以下字段相匹配:

  • AttributeName- 限制的名称。
  • ParameterName- 与限制关联的参数名称。 限制根据其用途可具有一个或多个 ParameterName 字段值。
  • ParameterValue- 工具在评估限制时使用的 ParameterName 的值。

属性参数值参数取决于限制参数。 仅当限制名称指定为限制参数值时,ParameterValue 字段才适用。

属性参数值中,每个限制(以 AttributeName 形式列出)具有一个 ParameterName 字段值,指定限制的行程是禁止、避免还是首选的限制用法与道路选择避免或首选的限制和程度相关联。 可为限制用法 ParameterName 分配下列字符串值,或在括号内列出等效数值:

  • PROHIBITED (-1) - 完全禁止在使用限制的道路上行驶。
  • AVOID_HIGH (5) - 工具极不可能将与限制相关的道路包括在路径中。
  • AVOID_MEDIUM (2) - 工具不可能将与限制相关的道路包括在路径中。
  • AVOID_LOW (1.3) - 工具不太可能将与限制相关的道路包括在路径中。
  • PREFER_LOW (0.8) - 工具稍微有可能将与限制相关的道路包括在路径中。
  • PREFER_MEDIUM (0.5) - 工具可能将与限制相关的道路包括在路径中。
  • PREFER_HIGH (0.2) - 工具非常有可能将与限制相关的道路包括在路径中。

大多数情况下,如果限制取决于车辆高度等车辆特征,则可以将“限制用法”设置为默认值 PROHIBITED。 但是在某些情况下,“限制用法”值取决于您的路径偏好。 例如,“避开收费公路”限制将“限制用法”参数设置为默认值 AVOID_MEDIUM。 这表示在使用限制时,在可能的情况下工具将绕开收费公路。 AVOID_MEDIUM 也表示查找最佳路径时避开收费公路的重要性,即优先级为中等。 选择 AVOID_LOW 会降低避开收费公路的重要性;而选择 AVOID_HIGH 则会增加其重要性,因此服务为避开收费公路而生成更长的路径时更容易为人所接受。 选择 PROHIBITED 则会完全不允许在收费公路上行驶,因此路径不可能经过收费公路的所有部分。 但是请注意,避开或禁止收费公路以及避开公路通行费只是一部分人的目的。 对另外一部分人来说,因为避开拥堵的交通比交一些公路通行费更为重要,会宁愿走收费公路。 在后一种情况中,选择 PREFER_LOW、PREFER_MEDIUM 或 PREFER_HIGH 作为“限制用法”的值。 首选的等级越高,工具在与限制相关的道路上行驶的距离越远。

Record Set
populate_route_lines
(可选)

指定是否将生成输出路线。

  • 选中 (True) - 输出路径将具有基础街道的精确形状。
  • 未选中 (False) - 不会为输出路径生成任何形状,但路径仍会包含有关解决方案的表格信息。 如果没有创建路径线,则将无法生成行驶方向。

路径形状参数设置为实际形状时,可以使用适当的路线简化容差参数值对路径形状的制图综合进行进一步控制。

无论为路径形状参数选择了什么值,最佳路径总是通过最大限度地缩短沿街行驶的路程来确定,而不是使用直线距离来确定。 这意味着只有路径形状是不同的,而非查找路径时搜索的基础街道。

Boolean
route_line_simplification_tolerance
(可选)

要对路径和方向的输出线几何进行简化的程度。

除非将出行模式设置为自定义(这是默认值),否则会忽略为此参数提供的值。

如果未选中 populate_route_lines 参数 (False),则工具将忽略该参数。

简化将保留路径上定义路径基本形状所需的关键点(例如交点处的转弯)而删除其他点。 指定的简化距离为简化线偏离原始线的最大允许偏移。 简化线将减少路径几何中的折点数。 这可改善工具处理时间。

Linear Unit
populate_directions
(可选)

指定工具是否将为每条路径生成行驶方向。

  • 选中(在 Python 中为 True)- 将根据方向语言方向样式名称方向距离单位参数值生成和配置方向。
  • 未选中(在 Python 中为 False)- 将不会生成方向,且工具将返回一个空的 Directions 图层。

Boolean
directions_language
(可选)

在生成行驶方向时使用的语言。

此参数仅在选中填充方向参数(在 Python 中为 True)时使用。

可使用下列两位或五位字符语言代码指定参数值:

  • ar - 阿拉伯语
  • bg - 保加利亚语
  • bs - 波斯尼亚语
  • ca - 加泰罗尼亚语
  • cs - 捷克语
  • da - 丹麦语
  • de - 德语
  • el - 希腊语
  • en - 英语
  • es - 西班牙语
  • et - 爱沙尼亚语
  • fi - 芬兰语
  • fr - 法语
  • he - 希伯来语
  • hr - 克罗地亚语
  • hu - 匈牙利语
  • id - 印度尼西亚语
  • it - 意大利语
  • ja - 日语
  • ko - 朝鲜语
  • lt - 立陶宛语
  • lv - 拉脱维亚语
  • nb - 挪威语
  • nl - 荷兰语
  • pl - 波兰语
  • pt-BR - 葡萄牙語(巴西)
  • pt-PT - 葡萄牙语(葡萄牙)
  • ro - 罗马尼亚语
  • ru - 俄语
  • sk - 斯洛伐克语
  • sl - 斯洛文尼亚语
  • sr - 塞尔维亚语
  • sv - 瑞典语
  • th - 泰语
  • tr - 土耳其语
  • uk - 乌克兰语
  • vi - 越南语
  • zh-CN - 中文(中国)
  • zh-HK - 中文(香港)
  • zh-TW - 中文(台湾)

工具首先在全部本地化语言中搜索与指定值完全匹配的语言。 如果未找到完全匹配,则会尝试匹配语系。 如果仍未找到匹配,该工具将会使用默认语言(英语)返回方向。 例如,如果将方向指示语言指定为 es-MX(墨西哥西班牙语),则工具将返回西班牙语的指示,因为它支持 es 语言代码但不支持 es-MX。

警告:

如果某种语言支持本地化,例如巴西葡萄牙语 (pt-BR) 和欧洲葡萄牙语 (pt-PT),则指定语系和本地化。 如果您只指定语系,则工具将无法与具体语系匹配,而使用默认语言(英语)返回方向。 例如,如果方向语言指定为 pt,则工具将返回英文指示,因为它无法确定应该使用 pt-BR 还是 pt-PT 返回方向。

String
directions_style_name
(可选)

指定方向的格式化样式的名称。 此参数仅在选中填充方向参数(在 Python 中为 True)时使用。

  • NA Desktop此样式适合打印的转弯说明。
  • NA Navigation此样式针对车载导航设备的转弯说明。
String
travel_mode
(可选)

用于分析建模的交通模式。 出行模式在 ArcGIS Online 中进行管理,组织管理员可通过对其进行配置,以反映组织工作流。 指定组织所支持的出行模式名称。

要获取受支持的出行模式名称列表,请运行获取出行模式工具,该工具位于访问工具所使用的同一 GIS Server 连接下的实用程序工具箱中。 获取出行模式工具会将表“支持的出行模式”添加到应用程序中。 可将“支持的出行模式”表中 Travel Mode Name 字段的任何值指定为输入。 您还可以将 Travel Mode Settings 字段中的值指定为输入。 由于工具不必根据出行模式名称查找设置,因而加快了工具的执行速度。

默认值自定义可以使用自定义出行模式参数(在交汇点处 U 形转弯应用等级限制属性参数值阻抗)配置自定义出行模式。 自定义出行模式参数的默认值对使用汽车的出行方式建模。 也可以选择自定义并设置上述自定义出行模式参数,从而以快速步行速度对行人建模,或以给定高度、重量和特定危险材料货物对卡车建模。 您可以尝试不同的设置以获取所需的分析结果。 一旦确定了分析设置,则可使用组织管理员身份并将这些设置保存为新建或现有出行模式的一部分,以便您组织中的所有人均运行相同设置的分析。

警告:

选择自定义后,您为自定义出行模式参数设置的值便会包含在分析中。 指定您组织定义的其他出行模式,将忽略为自定义出行模式参数设置的所有值;该工具将用您所指定的出行模式中的值将其覆盖。

String
impedance
(可选)

指定阻抗,该值表示沿交通网络的路段或其他部分行进所需的精力或成本。

行程时间是一种阻抗,比如,汽车花费 1 分钟沿空无一人的道路行驶一公里。 行程时间会随出行模式的不同而不同(行人可能需要 20 多分钟才能走完一公里),所以在建模时为出行模式选择正确的阻抗非常重要。

行程距离也是一种阻抗,可将以千米表示的道路长度作为阻抗。 从这个意义上,行程距离对所有模式均相同,即对行人而言 1 千米的距离对汽车而言也是 1 千米。 (但不同模式所允许行进的线路可能会有变化,而这会影响两点间的距离,可通过出行模式设置对此进行建模。)

警告:

除非将出行模式设置为自定义(这是默认值),否则会忽略您为此参数提供的值。

  • TravelTime使用历史和实时流量数据。 此选项适用于在每天的特定时间使用实时流量速度数据(如果适用)对汽车沿道路行驶的时间进行建模。 如果使用此选项,则可以选择设置 TravelTime::车辆最大速度 (km/h) 属性参数来指定车辆能够行驶的速度的物理限制。
  • Minutes不使用实时流量数据,而是使用汽车数据的历史平均速度。
  • TruckTravelTime使用历史和实时流量数据,但将速度限制为发布的卡车限速要求。 这有助于模拟卡车在特定时间沿着道路行驶所需的时间。 如果使用此选项,则可以选择设置 TruckTravelTime::车辆最大速度 (km/h) 属性参数来指定卡车能够行驶的速度的物理限制。
  • TruckMinutes不使用实时流量数据,而是使用汽车历史平均速度的较小值以及发布的卡车限速要求。
  • WalkTime在所有道路和路径上的默认速度为 5 千米/小时,但可以通过 WalkTime::步行速度 (km/h) 属性参数进行配置。
  • TimeAt1KPH默认将所有道路和路径上的速度都设为 1 千米/小时。 使用任何属性参数都无法更改速度。
  • Drive Time为小型汽车的行程时间建模。 这些行驶时间是动态的,会随交通数据可用区域的交通流量而波动。 这是默认值。
  • Truck Time为卡车的行程时间建模。 这些行驶时间对于每条道路都是静态的,不会随交通流量而波动。
  • Walk Time为行人的出行时间建模。

如果选择基于时间的阻抗(例如 TravelTimeTruckTravelTimeMinutesTruckMinutesWalkTime),则必须将中断单位参数设置为基于时间的值;如果您选择基于距离的阻抗(例如 MilesKilometers),则中断单位必须基于距离。

旧版本:

不再支持行驶时间卡车时间步行时间行驶距离阻抗值,且将在未来版本中删除。 如果您使用上述任一值,则工具将为基于时间的值使用时间阻抗参数,为基于距离的值使用距离阻抗参数。

String
time_zone_usage_for_time_fields
(可选)

为工具支持的输入日期时间字段指定时区。 此参数指定以下字段的时区:TimeWindowStart1TimeWindowEnd1TimeWindowStart2TimeWindowEnd2InboundArriveTimeOutboundDepartTime(停靠点)。 TimeWindowStart1TimeWindowEnd1TimeWindowStart2TimeWindowEnd2(站点)。 EarliestStartTimeLatestStartTime(路径)。 TimeWindowStartTimeWindowEnd(休息点)。

  • GEO_LOCAL与停靠点或站点相关的日期时间值位于停靠点和站点所在的时区内。 对于路径,日期时间值基于路径的起始站点所在的时区。 如果路径没有起始站点,则路径上的所有停靠点和站点必须位于一个时区中。 对于中断点,日期时间值基于路径的时区。 例如,如果站点所在的区域实行东部标准时间并且第一个时间窗值(指定为 TimeWindowStart1TimeWindowEnd1)为 8 AM 和 5 PM,则时间窗值将被视为东部标准时间 8:00 a.m. 和 5:00 p.m.。
  • UTC与停靠点或站点相关的日期时间值位于协调世界时间 (UTC) 中,且不基于停靠点或站点所在的时区。 例如,如果站点所在的区域实行东部标准时间,并且第一个时间窗值(指定为 TimeWindowStart1TimeWindowEnd1)为 8 AM 和 5 PM,则在东部标准时间(假设东部标准时间遵循夏令时)中时间窗值将被视为 12:00 p.m. 和 9:00 p.m.。
  • GEO_LOCALGEO_LOCAL
  • UTCUTC

如果不知道停靠点或站点所在的时区,或者停靠点或站点处在多个时区内,并且您想要所有的日期时间值同时启动,则按 UTC 指定日期时间值非常有用。 UTC 选项仅在您的网络数据集定义了时区属性时才可用。 否则,所有的日期时间值将始终被视为 GEO_LOCAL。

String
save_output_layer
(可选)

指定是否将分析设置另存为网络分析图层文件。 即使在 ArcGIS Desktop 应用程序(例如 ArcMap)中打开文件,仍然无法直接使用此文件。 需要将其发送至 Esri 技术支持以诊断工具所返回结果的质量。

  • 选中 (True) - 将保存网络分析图层文件。 文件将下载到计算机上的临时目录中。 在 ArcGIS Pro 中,可以通过查看输出网络分析图层参数的值来确定已下载文件的位置,该参数位于与工程地理处理历史中的工具执行相对应的条目中。 在 ArcMap 中,可以通过访问输出网络分析图层参数上的快捷菜单中的复制位置选项来确定文件的位置,该参数位于与地理处理结果窗口中的工具执行对应的条目中。
  • 未选中 (False) - 将不会保存网络分析图层文件。 这是默认设置。

Boolean
overrides
(可选)

注:

此参数仅供内部使用。

String
save_route_data
(可选)

指定输出中是否包括含有某类文件地理数据库的 .zip 文件,该类文件地理数据库通过可与 ArcGIS OnlinePortal for ArcGIS 共享路径图层的格式保存分析的输入和输出。

  • 选中 (True) - 路径数据将另存为 .zip 文件。 文件将下载到计算机上的临时目录中。 在 ArcGIS Pro 中,可以通过查看输出路径数据参数的值来确定已下载文件的位置,该参数位于与工程地理处理历史中的工具执行相对应的条目中。 在 ArcMap 中,可以通过访问输出路径数据参数上的快捷菜单中的复制位置选项来确定文件的位置,该参数位于与地理处理结果窗口中的工具执行对应的条目中。

  • 未选中 (False) - 不会保存路径数据。 这是默认设置。

Boolean
time_impedance
(可选)

基于时间的阻抗值表示沿交通网络的路段或其他部分行进所需的出行时间。

注:
如果使用阻抗参数指定的出行模式阻抗是基于时间的,则时间阻抗阻抗参数的值必须相同。 否则,服务将返回错误。
  • Minutes时间阻抗为分钟。
  • TravelTime时间阻抗为行驶时间。
  • TimeAt1KPH时间阻抗为每小时一公里的时间。
  • WalkTime时间阻抗为步行时间。
  • TruckMinutes时间阻抗为卡车分钟。
  • TruckTravelTime时间阻抗为卡车行驶时间。
String
distance_impedance
(可选)

基于距离的阻抗值表示沿交通网络的路段或其他部分行进所需的出行时间。

注:
如果使用阻抗参数指定的出行模式阻抗是基于距离的,则距离阻抗阻抗参数的值必须相同。 否则,服务将返回错误。
  • Miles距离阻抗为英里。
  • Kilometers距离阻抗为千米。
String
populate_stop_shapes
(可选)

指定工具是否将为输出已分配和未分配的停靠点创建形状。

  • 选中 (True) - 将输出已分配和未分配的停靠点创建为点要素。 这对于可视化可分配给路径的停靠点以及无法分配给任何路径的停靠点非常有用。

  • 未选中 (False) - 将输出已分配和未分配的停靠点创建为表格,并且将不具有形状。 这是默认设置。 仅当您不需要应用程序可视化输出停靠点,并且只能使用停靠点的属性时,才使用此选项。

Boolean
output_format
(可选)

指定将返回输出要素的格式。

  • Feature Set输出要素将作为要素类和表返回。 这是默认设置。
  • JSON File输出要素将作为包含输出的 JSON 表示的压缩文件返回。 指定此选项时,输出将是包含由服务针对每个输出创建的一个或多个 JSON 文件(扩展名为 .zip)的单个文件(扩展名为 .json)。
  • GeoJSON File输出要素将作为包含输出的 GeoJSON 表示的压缩文件返回。 指定此选项时,输出将是包含由服务针对每个输出创建的一个或多个 GeoJSON 文件(扩展名为 .zip)的单个文件(扩展名为 .geojson)。

如果指定基于文件的输出格式(如 JSON 文件GeoJSON 文件),则不会向显示添加输出,因为应用程序(例如 ArcMapArcGIS Pro)无法绘制结果文件的内容。 相反,结果文件将下载到计算机上的临时目录中。 在 ArcGIS Pro 中,可以通过查看输出结果文件参数的值来确定已下载文件的位置,该参数位于与工程地理处理历史中的工具操作相对应的条目中。 在 ArcMap 中,可以通过访问输出结果文件参数上的快捷菜单中的复制位置选项来确定文件的位置,该参数位于与地理处理结果窗口中的工具操作对应的条目中。

String
ignore_invalid_order_locations
(可选)

指定在求解车辆配送问题时是否忽略无效停靠点。

  • 选中 (True) - 只要求解操作没有遇到其他错误,就会忽略无效停靠点并返回解决方案。 如果需要生成路径并将其立即提供给驾驶员,则可以忽略无效路径,并为驾驶员求解和分配路径。 然后,解决上次求解时的无效停靠点,并将其包含在下一工作日或工作时段的 VRP 分析中。

  • 未选中 (False) - 当遇到无效停靠点时,求解操作将失败。 无效停靠点是指 VRP 求解程序无法到达的停靠点。 停靠点不可达的原因可能有多种,包括:停靠点定位于禁止的网络元素,停靠点未定位于网络,或停靠点定位于网络的离线部分。

Boolean
locate_settings
(可选)

使用此参数指定影响输入定位方式的设置,例如在网络上定位输入时使用的最大搜索距离或用于定位的网络源。

了解有关定位输入的更多信息

参数值指定为 JSON 对象。 您可通过 JSON 对象为分析中的所有输入要素指定定位器 JSON,或者可以选择为特定输入指定覆盖。 您可通过覆盖对每个分析输入使用不同的设置。

定位器 JSON 对象具有以下属性:

  • tolerancetoleranceUnits - 允许您控制定位输入时的最大搜索距离。 如果在此距离内未发现有效的网络位置,则输入要素将被视为未定位。 小的搜索容差会降低定位到错误街道的可能性,但会增加找不到任何有效网络位置的可能性。 toleranceUnits 参数值应指定为下列值之一:
    • esriCentimeters
    • esriDecimalDegrees
    • esriDecimeters
    • esriFeet
    • esriInches
    • esriIntFeet
    • esriIntInches
    • esriIntMiles
    • esriIntNauticalMiles
    • esriIntYards
    • esriKilometers
    • esriMeters
    • esriMiles
    • esriMillimeters
    • esriNauticalMiles
    • esriYards
  • sources - 允许您控制可用于定位的网络源。 例如,您可以将分析配置为在街道上而不是在人行道上定位输入。 可用于定位的源列表特定于此服务引用的网络数据集。 只有源数组中存在的源将用于定位。 源指定为对象数组,每个对象具有以下属性:
    • name - 可用于定位输入的网络源要素类的名称。
  • allowAutoRelocate - 允许您控制是否可以在求解时自动重定位具有现有网络位置字段的输入,以确保分析的位置字段有效并且可以用于路径选择。 如果值为 true,则位于限制网络元素上的点和受障碍影响的点将重定位至最近的可路由位置。 如果值为 false,则网络位置字段将按原样使用(即使点无法访问),并且这可能会导致求解失败。 即使值为 false,没有位置字段或位置字段不完整的输入也会在求解期间定位。
注:
此时,sources 数组不允许指定不同的源名称。 此外,由于服务不支持位置字段,因此 allowAutoRelocate 始终设置为 true

Locate_Settings JSON 对象允许您为分析中的所有输入要素指定默认定位器 JSON 对象,也可以为每个输入类指定覆盖。 指定 Locate_Settings JSON 时,您需要提供以下属性:tolerancetoleranceUnitsallowAutoRelocate。 如果需要为特定输入类提供不同的定位器 JSON,则需要为该输入添加覆盖属性。 属性名称必须与输入参数名匹配。 特定输入的定位器 JSON 不需要包含所有属性;仅需要包含与默认定位器 JSON 属性不同的属性。

String

派生输出

名称说明数据类型
out_unassigned_stops
注:

可以从服务资源 JSON 中获取此参数的默认值。 将 ?token=<yourToken>&f=pjson 追加到服务 URL 以访问服务资源 JSON。

为任何路径都无法访问的停靠点提供了访问权限。 您还可以确定这些停靠点无法访问的原因,以便进行必要的更改来解决这一问题。

Feature Set
out_stops

将提供有关在站点、停靠点及休息点停靠的信息。 该信息包含哪些路径组成了停靠点、到达时间和离开时间以及停靠点顺序。

Feature Set
out_routes

将为车辆配送问题分析提供对驾驶员、车辆和路线路径的访问权限。

Feature Set
out_directions

将提供对每个生成路径转弯方向的访问权限。

Feature Set
solve_succeeded

确定求解车辆配送分析是否成功。

Boolean
out_network_analysis_layer

网络分析图层可用于在地图中进行进一步分析或调试,其属性可在工具参数中进行配置。

File
out_route_data

包含特定路径的所有信息的 .zip 文件。

File
out_result_file

.zip 文件包含分析结果,每个输出对应一个或多个文件。 单个文件的格式由输出格式参数指定。

File
output_network_analysis_layer_package

此图层包包含网络分析图层,该图层包含用于分析的数据和设置。

File
usage_cost

此参数可返回分析使用的配额

注:

每个分析可以生成不同数量的付费对象,因此将使用不同数量的配额。 如果服务无法确定配额,则 usage_cost 参数会为 credits 返回值 -1

JSON

代码示例

SolveVehicleRoutingProblem 示例 1(独立脚本)

以下 Python 脚本演示了如何在脚本中使用 Solve Vehicle Routing Problem 服务。

"""This example shows how to obtain the schema for the inputs, populate the inputs,
excute the tool and save the results.
"""

import sys
import time
import arcpy

# Change the username and password applicable to your own ArcGIS Online account
username = "<your user name>"
password = "<your password>"

vrp_service = "https://logistics.arcgis.com/arcgis/services;World/VehicleRoutingProblem;{0};{1}".format(username, password)

# Add the geoprocessing service as a toolbox.
# Check https://pro.arcgis.com/en/pro-app/arcpy/functions/importtoolbox.htm for
# other ways in which you can specify credentials to connect to a geoprocessing service.
arcpy.ImportToolbox(vrp_service)
vrp_tool_name = "SolveVehicleRoutingProblem_VehicleRoutingProblem"

# Set the variables to store results from the tool. Overwrite the results if they already exist.
arcpy.env.overwriteOutput = True
output_routes = "C:/data/Results.gdb/Routes"
assigned_orders = "C:/data/Results.gdb/AssignedOrders"
unassigned_orders = "C:/data/Results.gdb/UnassignedOrders"

# Get the schema for input orders, depots and routes
input_orders = arcpy.GetParameterValue(vrp_tool_name, 0)
input_depots = arcpy.GetParameterValue(vrp_tool_name, 1)
input_routes = arcpy.GetParameterValue(vrp_tool_name, 2)

# Create two orders as input. The coordinate values are in WGS84 spatial reference.
# AssignmentRule for orders is 3 which specifies that the tool should assign a new
# sequence and route for every order.
orders = [(-122.51, 37.7724), (-122.4889, 37.7538)]
sr = arcpy.SpatialReference(4326)
with arcpy.da.InsertCursor(input_orders, ("SHAPE@", "Name", "AssignmentRule")) as cursor:
    for i, order in enumerate(orders):
        order_shape = arcpy.PointGeometry(arcpy.Point(order[0], order[1]), sr)
        row = (order_shape, "O{}".format(i + 1), 3)
        cursor.insertRow(row)

# Create one depot as input. The coordinate values are in WGS84 spatial reference
depots = [(-122.3943, 37.7967)]
with arcpy.da.InsertCursor(input_depots, ("SHAPE@", "Name")) as cursor:
    for i, depot in enumerate(depots):
        depot_shape = arcpy.PointGeometry(arcpy.Point(depot[0], depot[1]), sr)
        row = (depot_shape, "D{}".format(i + 1))
        cursor.insertRow(row)

# Create one route as input. Ensure that the StartDepotName and EndDepotName fields on 
# routes has same value as the Name field on input depots. AssignmentRule for routes
# is 1 which specifies that the tool must include the route.
# CostPerUnitTime and MaxOrderCount are fields that cannot have null values if the route
# is to be considered as a valid route.  
with arcpy.da.InsertCursor(input_routes, ("Name", "StartDepotName",
                                          "EndDepotName", "AssignmentRule",
                                          "CostPerUnitTime", "MaxOrderCount")) as cursor:
    row = ("R1", "D1", "D1", 1, 1, 10)
    cursor.insertRow(row)

# Call the tool
result = arcpy.VehicleRoutingProblem.SolveVehicleRoutingProblem(input_orders, input_depots, input_routes)
arcpy.AddMessage("Running the analysis with result ID: {}".format(result.resultID))

# Check the status of the result object every 1 second until it has a
# value of 4 (succeeded) or greater
while result.status < 4:
    time.sleep(1)

# print any warning or error messages returned from the tool
result_severity = result.maxSeverity
if result_severity == 2:
    arcpy.AddError("An error occured when running the tool")
    arcpy.AddError(result.getMessages(2))
    sys.exit(2)
elif result_severity == 1:
    arcpy.AddWarning("Warnings were returned when running the tool")
    arcpy.AddWarning(result.getMessages(1))

# Save the output routes and orders to a local geodatabase
result.getOutput(0).save(unassigned_orders)
result.getOutput(1).save(assigned_orders)
result.getOutput(2).save(output_routes)
SolveVehicleRoutingProblem 示例 2(独立脚本)

以下示例将显示如何使用自定义出行模式来执行车辆配送问题分析,从而对宽载卡车进行建模。

"""This example shows how to perform a vehicle routing problem analysis using a custom travel mode that
models trucks carrying wide load."""

import sys
import time
import json
import arcpy

# Change the username and password applicable to your own ArcGIS Online account
username = "<your user name>"
password = "<your password>"

vrp_service = "https://logistics.arcgis.com/arcgis/services;World/VehicleRoutingProblem;{0};{1}".format(username, password)

# Add the geoprocessing service as a toolbox.
arcpy.ImportToolbox(vrp_service)
vrp_tool_name = "SolveVehicleRoutingProblem_VehicleRoutingProblem"

# Set the variables to store results from the tool. Overwrite the results if they already exist.
arcpy.env.overwriteOutput = True
output_routes = "C:/data/Results.gdb/Routes"
assigned_orders = "C:/data/Results.gdb/AssignedOrders"
unassigned_orders = "C:/data/Results.gdb/UnassignedOrders"

# Get the schema for input orders, depots and routes
input_orders = arcpy.GetParameterValue(vrp_tool_name, 0)
input_depots = arcpy.GetParameterValue(vrp_tool_name, 1)
input_routes = arcpy.GetParameterValue(vrp_tool_name, 2)

# Create two orders as input. The coordinate values are in WGS84 spatial reference.
# AssignmentRule for orders is 3 which specifies that the tool should assign a new
# sequence and route for every order.
orders = [(-122.51, 37.7724), (-122.4889, 37.7538)]
sr = arcpy.SpatialReference(4326)
with arcpy.da.InsertCursor(input_orders, ("SHAPE@", "Name", "AssignmentRule")) as cursor:
    for i, order in enumerate(orders):
        order_shape = arcpy.PointGeometry(arcpy.Point(order[0], order[1]), sr)
        row = (order_shape, "O{}".format(i + 1), 3)
        cursor.insertRow(row)

# Create one depot as input. The coordinate values are in WGS84 spatial reference
depots = [(-122.3943, 37.7967)]
with arcpy.da.InsertCursor(input_depots, ("SHAPE@", "Name")) as cursor:
    for i, depot in enumerate(depots):
        depot_shape = arcpy.PointGeometry(arcpy.Point(depot[0], depot[1]), sr)
        row = (depot_shape, "D{}".format(i + 1))
        cursor.insertRow(row)

# Create one route as input. Ensure that the StartDepotName and EndDepotName fields on routes has same
# value as the Name field on input depots. AssignmentRule for routes is 1 which specifies that the tool
# must include the route. CostPerUnitTime and MaxOrderCount are fields that cannot have null values if
# the route is to be considered as a valid route.  
with arcpy.da.InsertCursor(input_routes, ("Name", "StartDepotName",
                                          "EndDepotName", "AssignmentRule",
                                          "CostPerUnitTime", "MaxOrderCount")) as cursor:
    row = ("R1", "D1", "D1", 1, 1, 10)
    cursor.insertRow(row)

# Change Vehicle Width attribute parameter value to 4.5 (about 15 feet) for the Trucking Time travel mode
# used for the analysis
portal_url = "https://www.arcgis.com"
arcpy.SignInToPortal(portal_url, username, password)
travel_mode_list = arcpy.na.GetTravelModes(portal_url)
tt = travel_mode_list["Trucking Time"]
tt_json = str(tt)
tt_dict = json.loads(tt_json)
tt_dict["restrictionAttributeNames"].append("Width Restriction")

for attr_param in tt_dict["attributeParameterValues"]:
    if attr_param['attributeName'] == 'Width Restriction' and attr_param['parameterName'] == 'Vehicle Width (meters)':
        attr_param['value'] = 4.5
travel_mode = json.dumps(tt_dict)

# Call the tool
result = arcpy.VehicleRoutingProblem.SolveVehicleRoutingProblem(input_orders, input_depots,
                                                                input_routes, travel_mode=travel_mode)
arcpy.AddMessage("Running the analysis with result ID: {}".format(result.resultID))

# Check the status of the result object every 1 second until it has a
# value of 4 (succeeded) or greater
while result.status < 4:
    time.sleep(1)

# print any warning or error messages returned from the tool
result_severity = result.maxSeverity
if result_severity == 2:
    arcpy.AddError("An error occured when running the tool")
    arcpy.AddError(result.getMessages(2))
    sys.exit(2)
elif result_severity == 1:
    arcpy.AddWarning("Warnings were returned when running the tool")
    arcpy.AddWarning(result.getMessages(1))

# Save the output routes and orders to a local geodatabase
result.getOutput(0).save(unassigned_orders)
result.getOutput(1).save(assigned_orders)
result.getOutput(2).save(output_routes)

环境

此工具不使用任何地理处理环境。