VehicleRoutingProblem 输入数据类型

下文将介绍在执行车辆配送问题 (VRP) 分析时可以指定的输入数据类型。

停靠点

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

该数据类型支持以下字段:

字段说明数据类型

Name

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

字符串

Description

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

字符串

ServiceTime

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

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

双精度型

TimeWindowStart1

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

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

时间窗字段(TimeWindowStart1TimeWindowEnd1TimeWindowStart2TimeWindowEnd2)可以包含“仅时间”值或“日期和时间”值。如果像 TimeWindowStart1 这样的时间字段具有“仅时间”值(例如 8:00 AM),则假定日期是针对分析设定的默认日期。使用“日期和时间”值(例如 7/11/2010 8:00 AM)允许您设置持续多天的时间窗。

可以使用 datetime Python 对象(如 datetime.datetime(2019, 5, 11, 8, 30, 0)指定此属性的值,该对象表示 2019 年 5 月 11 日星期六上午 8:30:00。如果要指定“仅时间”值,则 datetime.time(8, 30, 0) 表示使用 defaultDate 属性设置的默认日期的 8:30 AM

值的时区由分析对象的 timeZoneForTimeFields 属性指定。

日期型

TimeWindowEnd1

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

日期型

TimeWindowStart2

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

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

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

日期型

TimeWindowEnd2

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

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

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

日期型

MaxViolationTime1

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

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

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

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

通过为分析对象的 timeWindowFactor 属性分配重要性级别,您实际上是选择其中一个选项。不过,无论在什么情况下,只要超过了为 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

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

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

双精度型

SpecialtyNames

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

“Orders”和“Routes”类中列出的所有特性的拼写必须完全匹配,这样 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(固定最后一个)- 在求解操作过程中,求解程序会忽略停靠点的路径和顺序预分配信息(如果有的话)。求解程序将为停靠点分配路径,并使其成为该路径上的最后一个停靠点,以便最小化目标函数的总体值。

该字段不能包含空值。

整数

RouteName

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

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

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

字符串

Sequence

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

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

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

整数

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

NavLatency 的时间单位与分析对象的 timeUnits 属性指定的单位相同。

NavLatency 的时间单位与分析对象的 timeUnits 属性指定的单位相同。

双精度型

网络位置字段

  • SourceID
  • SourceOID
  • PosAlong
  • SideOfEdge

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

站点

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

该数据类型支持以下字段:

字段说明数据类型

Name

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

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

字符串

Description

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

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

字符串

TimeWindowStart1

TimeWindowStart1

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

时间窗字段(TimeWindowStart1TimeWindowEnd1TimeWindowStart2TimeWindowEnd2)可以包含“仅时间”值或“日期和时间”值。如果像 TimeWindowStart1 这样的时间字段具有“仅时间”值(例如 8:00 AM),则假定日期是针对分析设定的默认日期。使用“日期和时间”值(例如 7/11/2010 8:00 AM)允许您设置持续多天的时间窗。

可以使用 datetime Python 对象(如 datetime.datetime(2019, 5, 11, 8, 30, 0)指定此属性的值,该对象表示 2019 年 5 月 11 日星期六上午 8:30:00。如果要指定“仅时间”值,则 datetime.time(8, 30, 0) 表示使用 defaultDate 属性设置的默认日期的 8:30 AM

值的时区由分析对象的 timeZoneForTimeFields 属性指定。

日期型

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

NavLatency 的时间单位与分析对象的 timeUnits 属性指定的单位相同。

NavLatency 的时间单位与分析对象的 timeUnits 属性指定的单位相同。

双精度型

网络位置字段

  • SourceID
  • SourceOID
  • PosAlong
  • SideOfEdge

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

路线

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

注:

与其他数据类型(如“停靠点”和“站点”)不同,此数据类型是表,不包含任何位置信息。

该数据类型支持以下字段:

字段说明数据类型

Name

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

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

字符串

Description

有关路径的描述性信息。这可以包含任何文本信息,且不必是唯一的。

字符串

StartDepotName

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

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

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

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

字符串

EndDepotName

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

字符串

StartDepotServiceTime

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

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

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

双精度型

EndDepotServiceTime

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

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

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

双精度型

EarliestStartTime

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

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

可以使用 datetime Python 对象(如 datetime.datetime(2019, 5, 11, 8, 30, 0)指定此属性的值,该对象表示 2019 年 5 月 11 日星期六上午 8:30:00。如果要指定“仅时间”值,则 datetime.time(8, 30, 0) 表示使用 defaultDate 属性设置的默认日期的 8:30 AM

值的时区由分析对象的 timeZoneForTimeFields 属性指定。

日期型

LatestStartTime

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

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

可以使用 datetime Python 对象(如 datetime.datetime(2019, 5, 11, 8, 30, 0)指定此属性的值,该对象表示 2019 年 5 月 11 日星期六上午 8:30:00。如果要指定“仅时间”值,则 datetime.time(8, 30, 0) 表示使用 defaultDate 属性设置的默认日期的 8:30 AM

值的时区由分析对象的 timeZoneForTimeFields 属性指定。

日期型

ArriveDepartDelay

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

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

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

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

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

双精度型

Capacities

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

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

如果您正在追踪的是具有多个维度的对象,请以空格分隔各维度的值。例如,如果您要记录重量和体积,而您的车辆最大载重为 40,000 磅,最大容量为 2,000 立方英尺,则请将 Capacities 值输入为 40000 2000。同样地,您需要记住单位。您还需要记住值及其对应单位的输入顺序(在此情况下,前者是磅,后者是立方英尺)。

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

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

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

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

字符串

FixedCost

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

双精度型

CostPerUnitTime

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

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

双精度型

CostPerUnitDistance

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

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

双精度型

OvertimeStartTime

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

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

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

双精度型

CostPerUnitOvertime

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

双精度型

MaxOrderCount

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

整数

MaxTotalTime

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

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

双精度型

MaxTotalTravelTime

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

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

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

双精度型

MaxTotalDistance

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

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

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

双精度型

SpecialtyNames

一个以空格分隔的字符串,其中包含路径所支持的特殊要求的名称。空值表示路径不支持任何特殊要求。

该字段是“停靠点”中 SpecialtyNames 字段的外键。

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

字符串

AssignmentRule

该字段指定解决问题时是否可以使用路径。该字段受到下面所列值的属性域的约束(使用数值代码而非括号中的名称)。

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

整数

Locations

此字段中的信息将定义线或面覆盖的网络边和交汇点,以及覆盖的每个边元素部分。您无法直接读取或编辑此字段中包含的信息,但是在求解分析时,Network Analyst 将对其进行解释。

Blob

休息点

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

与其他数据类型(如“停靠点”或“站点”)不同,此数据类型是表,不包含任何位置信息。

该数据类型支持以下字段:

字段说明数据类型

RouteName

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

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

字符串

Precedence

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

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

整数

ServiceTime

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

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

双精度型

TimeWindowStart

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

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

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

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

可以使用 datetime Python 对象(如 datetime.datetime(2019, 5, 11, 8, 30, 0)指定此属性的值,该对象表示 2019 年 5 月 11 日星期六上午 8:30:00。如果要指定“仅时间”值,则 datetime.time(8, 30, 0) 表示使用 defaultDate 属性设置的默认日期的 8:30 AM

值的时区由分析对象的 timeZoneForTimeFields 属性指定。

日期型

TimeWindowEnd

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

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

可以使用 datetime Python 对象(如 datetime.datetime(2019, 5, 11, 8, 30, 0)指定此属性的值,该对象表示 2019 年 5 月 11 日星期六上午 8:30:00。如果要指定“仅时间”值,则 datetime.time(8, 30, 0) 表示使用 defaultDate 属性设置的默认日期的 8:30 AM

值的时区由分析对象的 timeZoneForTimeFields 属性指定。

日期型

MaxViolationTime

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

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

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

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

双精度型

MaxTravelTimeBetweenBreaks

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

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

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

如果该字段中存在值,那么为了能够顺利求解分析,TimeWindowStartTimeWindowEndMaxViolationTimeMaxCumulWorkTime 必须都为空。

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

双精度型

MaxCumulWorkTime

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

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

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

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

如果该字段中存在值,那么为了能够顺利求解分析,TimeWindowStartTimeWindowEndMaxViolationTimeMaxTravelTimeBetweenBreaks 必须都为空。

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

双精度型

IsPaid

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

整数

Sequence

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

整数

停靠点对

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

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

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

该数据类型支持以下字段:

字段说明数据类型

FirstOrderName

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

字符串

SecondOrderName

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

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

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

字符串

MaxTransitTime

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

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

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

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

通过使用分析对象的 excessTransitFactor 属性分配重要性级别,实际上就是在这三种方法中选择一种方法。无论重要性级别如何,只要超过 MaxTransitTime 值,求解程序就会返回错误。

双精度型

货物补给点

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

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

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

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

该数据类型支持以下字段:

字段说明数据类型

RouteName

该更新所应用到的路径名称。该字段不能包含空值,而且是路径中 Name 字段的外键。

字符串

DepotName

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

字符串

ServiceTime

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

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

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

双精度型

Sequences

用于指定一个以空格分隔且包含对货物补给站点进行访问的 sequence 值的字符串。该字段可包含空值,并且用于将访问预分配给货物补给站点。

字符串

路径区

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

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

该数据类型支持以下字段:

字段说明数据类型

RouteName

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

字符串

IsHardZone

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

短整型

Locations

此字段中的信息将定义线或面覆盖的网络边和交汇点,以及覆盖的每个边元素部分。您无法直接读取或编辑此字段中包含的信息,但是在求解分析时,Network Analyst 将对其进行解释。

Blob

点障碍

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

该数据类型支持以下字段:

字段说明数据类型

Name

障碍的名称。

字符串

BarrierType

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

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

  • 2(增加成本型)- 穿过此障碍会增加行驶时间或行驶距离,增加量由 Additional_TimeAdditional_DistanceAdditional_Cost 字段指定。此障碍类型称为增加成本型点障碍。

短整型

Additional_Time

穿越障碍时增加的行驶时间。该字段仅适用于增加成本型障碍,并且仅当用于分析的出行模式使用基于时间的阻抗属性时才适用。

该字段值必须大于或等于零,并且值将以 timeUnits 属性指定的单位进行解释。

双精度型

Additional_Distance

穿越障碍时增加的距离。该字段仅适用于增加成本型障碍,并且仅当用于分析的出行模式使用基于距离的阻抗属性时才适用。

该字段值必须大于或等于零,并且值将以 distanceUnits 属性指定的单位进行解释。

双精度型

Additional_Cost

穿越障碍时增加的成本。该字段仅适用于增加成本型障碍,并且仅当用于分析的出行模式使用的阻抗属性不基于时间或距离时才适用。

该字段值必须大于或等于零,并且值将以未知单位进行解释。

双精度型

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

NavLatency 的时间单位与分析对象的 timeUnits 属性指定的单位相同。

NavLatency 的时间单位与分析对象的 timeUnits 属性指定的单位相同。

双精度型

网络位置字段

  • SourceID
  • SourceOID
  • PosAlong
  • SideOfEdge

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

线障碍

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

该数据类型支持以下字段:

字段说明数据类型

Name

障碍的名称。

字符串

BarrierType

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

  • 0(限制型)- 禁止穿行障碍物与交通网络相交的任何位置。障碍称为限制型线障碍。

  • 1(按比例调整成本型)- 通过使用 ScaledTimeFactorScaledDistanceFactor 字段指定的系数,按比例调整在基础街道上行进所需的成本(例如行程时间或距离)。如果障碍部分覆盖了街道,则会按比例调整行驶时间或行驶距离。例如,系数 0.25 表示在基础街道上行进的速度是正常速度的四倍。系数 3.0 表示预期在基础街道上行进相同距离所花费的时间为正常值的三倍。此障碍类型称为按比例调整成本型障碍。可使用该障碍对施工期间交通车道封闭造成的减速进行建模。

短整型

ScaledTimeFactor

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

该字段仅适用于按比例调整成本型障碍,并且仅当用于分析的出行模式使用基于时间的阻抗属性时才适用。

双精度型

ScaledDistanceFactor

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

该字段仅适用于增加成本型障碍,并且仅当用于分析的出行模式使用基于距离的阻抗属性时才适用。

双精度型

ScaledCostFactor

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

该字段仅适用于按比例调整成本型障碍,并且仅当用于分析的出行模式使用的阻抗属性不基于时间或距离时才适用。

双精度型

Locations

此字段中的信息将定义线或面覆盖的网络边和交汇点,以及覆盖的每个边元素部分。您无法直接读取或编辑此字段中包含的信息,但是在求解分析时,Network Analyst 将对其进行解释。

Blob

面障碍

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

该数据类型支持以下字段:

字段说明数据类型

Name

障碍的名称。

字符串

BarrierType

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

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

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

短整型

ScaledTimeFactor

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

该字段仅适用于按比例调整成本型障碍,并且仅当用于分析的出行模式使用基于时间的阻抗属性时才适用。

双精度型

ScaledDistanceFactor

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

该字段仅适用于增加成本型障碍,并且仅当用于分析的出行模式使用基于距离的阻抗属性时才适用。

双精度型

ScaledCostFactor

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

该字段仅适用于按比例调整成本型障碍,并且仅当用于分析的出行模式使用的阻抗属性不基于时间或距离时才适用。

双精度型

Locations

此字段中的信息将定义线或面覆盖的网络边和交汇点,以及覆盖的每个边元素部分。您无法直接读取或编辑此字段中包含的信息,但是在求解分析时,Network Analyst 将对其进行解释。

Blob