使用一支车队服务一组停靠点

需要 Network Analyst 许可。

在本练习中,您将为某配送公司的车队找出将货物从配送中心运送到 25 家杂货店的最佳路径。 每家商店对于货物的需求量都不尽相同,而且每辆卡车载货能力也各有限制。 本例的主要目标是为车队中的每辆卡车分配一组所要服务的商店,并确定送货的顺序,从而将总运输成本控制在最低。

这可通过求解车辆配送 (VRP) 分析来实现。 确定送货顺序后,便可生成结果路径的建议路线规划指示,并将该路径以电子形式分发给驾驶员,或打印后交给驾驶员以进行送货。

警告:
如果您使用 ArcGIS Online 运行本教程,则会消耗配额

获取数据

本教程的数据可供下载。

  1. 请转至数据下载页面
  2. 单击下载按钮将文件保存到本地。
  3. 解压下载的文件。

创建地图

  1. 打开 ArcGIS Pro
  2. 基于 Map.aptx 模板创建新工程。

    随即出现具有地图的新工程。

将教程数据添加到工程中

网络数据集是道路系统的智能模型。 其不仅包含道路的位置和属性,而且还包含有关道路如何彼此关联(例如,哪些道路相连、相连的道路之间允许或禁止哪些转弯)的信息及其他影响可能的行驶路线和行驶时间的信息。 路径求解程序通过参考网络数据集确定停靠点之间的最短路径。

注:
如果您使用 ArcGIS Online 执行分析,则求解程序将参考存储在 ArcGIS Online 云中的高质量的世界级网络数据集并使用 ArcGIS Online 配额。 您还可以使用存储在本地计算机上的网络数据集或使用自己的网络数据集通过 ArcGIS Enterprise 发布路径服务,并通过企业门户配置服务以在 ArcGIS Pro 中使用。

在这组步骤中,将网络数据集添加到地图中。

  1. 目录窗格(默认情况下,位于应用程序的一侧)上,右键单击文件夹,然后选择添加文件夹连接 添加文件夹连接

    随即出现添加文件夹连接对话框。

  2. 浏览到您放置了教程数据的文件夹,双击 Network Analyst,然后单击教程以选择该文件夹。
  3. 单击确定

    随即创建一个与教程文件夹之间的连接。

  4. 接下来,将该文件夹中包含的一个网络数据集添加到地图中。

  5. 目录窗格中,展开文件夹 > 教程 > SanFrancisco.gdb > Transportation
  6. Streets_ND(具有一个网络数据集图标 网络数据集)拖放到地图上。

    该网络数据集将被添加到内容窗格以及地图中。

  7. 右键单击内容窗格中的 Streets_ND,然后选择缩放至图层 缩放至图层 以查看旧金山地区。

    默认情况下,使用流量数据构建的网络数据集将在其被添加到地图后显示当前时间的交通状况。 此网络数据集包括历史流量,因此您可以看到该周当天时间的典型交通状况。 此网络数据集中并非所有道路都包括流量数据,因此默认情况下仅显示包括流量数据的道路。

    您可以在网络数据集所覆盖的地区执行网络分析。

    查看网络数据集不需要执行分析,因此接下来您要将其隐藏起来。

  8. 内容窗格中,取消选中 Streets_ND 以仅显示底图。
  9. 将表示杂货店位置的点添加到地图中。
  10. 目录窗格中,浏览至 Tutorial > SanFrancisco.gdb > Analysis
  11. 目录窗格中,右键单击 Stores 图层,然后选择添加至当前地图添加数据

    Stores 图层将被添加到内容窗格以及地图中。

  12. 重复步骤 9,向地图中添加 DistributionCenter 图层。
    注:

    还可以通过将图层从目录窗格拖动到地图来将图层添加到地图中。

创建车辆配送图层

车辆配送图层 (VRP) 图层提供设置和求解车辆配送问题所需的结构和属性。 它还包含求解后的结果。

  1. 分析选项卡的工作流组中,单击网络分析 > 车辆配送 车辆配送

    VRP 图层将添加到内容窗格中。 它包括多个保留分析输入和输出的子图层。

    这将参考 San Francisco 网络数据集,因为在创建 VRP 图层时,该网络位于内容窗格中。

    注:

    要查看或更改将用于创建网络分析图层的网络数据源,可单击分析选项卡工作流组中的网络分析下拉菜单,然后在网络数据源下进行查看。

  2. 内容窗格中,单击车辆配送以选择图层组。

    车辆配送选项卡显示在 ArcGIS Pro 顶部的 Network Analyst 组中。

  3. 单击 VRP 以查看该选项卡的控件。
    VRP 选项卡

    您将使用这些控件定义要生成的 VRP 模型。

    提示:

    仅当您在内容窗格中选择 VRP 图层后,才会显示 VRP 选项卡。 另外,如果您有多个 VRP 图层,则可以单独更改这些图层的设置,或选择多个图层来编辑所有选定图层(如果它们共享相同的网络数据源)的设置。目前,每个图层都有其自己的选项卡。

添加停靠点

您将向“停靠点”网络分析类中添加杂货店位置。 您可以将这里的停靠点视为要填充的停靠点,因为每个杂货店都要求将货物从配送中心运送过来。 停靠点类中的成员最终将成为车辆行驶路径沿途的站点。

已经在地图文档中将杂货店的位置添加为要素图层“商店”。 商店的属性包含每个商店所需的货物总重量(单位为磅)、运送期间的时间窗,以及访问商店时所用去的服务时间(单位为分钟)。 其中的服务时间是指卸货所需的时间。

商店要素图层的属性表中包含有关要送货商品的总重量、服务时间以及商店接受送货的时间窗等相关信息

下表显示了 12/30/1899 日期值。 这是用于指示仅指定时间的日期值。 当所有时间字段都将此日期与其时间值关联时,求解器将使用默认日期来确定用于求解的日期。 在这种情况下,我们将求解通用星期一,以用于各个时间字段。

了解有关时间窗以及如何确定日期的详细信息

  1. VRP 选项卡的输入数据组中,单击导入停靠点导入停靠点

    随即显示添加位置窗口。

  2. 请确保将输入网络分析图层设置为车辆配送,并将子图层设置为停靠点
  3. 单击输入位置下拉箭头并选择 Stores。 这是您之前添加到地图中的点要素类。
  4. 字段映射下,从属性中选择名称,并确保 NAME 可以在字段名称参数中自动映射。
  5. 如果未自动映射,请映射以下字段:

    • TimeWindowStart > TimeStart1
    • TimeWindowEnd > TimeEnd1
    • DeliveryQuantity_1 > Demand

  6. 字段映射下,从属性中选择 MaxViolationTime,然后在默认值参数中输入 0

    这表示无法在其指定的时间窗之外访问该位置。

  7. 保留其余参数的默认设置,然后单击确定按钮。
  8. 在 Orders 属性表中共列出了 25 家商店,这些商店将在地图上显示为停靠点。

添加站点

货物会从单个配送中心(其位置显示于先前添加到地图中的 DistributionCenter 要素图层)发出。 配送中心的营业时间从上午 8:00 到下午 5:00。您需要将此点要素添加到“站点”网络分析类中。

  1. VRP 选项卡的输入数据组中,单击导入站点导入站点

    随即显示添加位置窗口。

  2. 请确保将输入网络分析图层设置为车辆配送,并将子图层设置为站点
  3. 单击输入位置下拉箭头并选择 DistributionCenter
  4. 字段映射下,从属性中选择名称,并确保 NAME 可以在字段名称参数中自动映射。
  5. 字段映射下,从属性中选择 TimeWindowStart,然后在默认值参数中输入 8AM
  6. 字段映射下,从属性中选择 TimeWindowEnd,然后在默认值参数中输入 5PM
  7. 保留其余参数的默认设置,然后单击确定按钮。
  8. Depots 属性表中会列出一个配送中心,而且该配送中心会在地图中显示为“站点”。

添加路径

配送中心有三辆卡车,最大载货重量都是 15,000 磅。 您将添加三条路径(每辆车一条),并根据配送中心的操作程序设置各路径的属性。

  1. VRP 选项卡的输入数据组中,单击导入路径的下拉箭头,然后选择添加路径

    随即显示添加位置窗口。

  2. 确保输入车辆配送图层已设置为车辆配送
  3. 对于路径数,输入 3
  4. 路径名称前缀更改为卡车
  5. 起始站点名称终止站名称下拉选项中,选择 San Francisco。
  6. 这些路径以旧金山配送中心为起点或终点。
  7. 最早开始时间最晚开始时间更改为 8:00:00 AM。
  8. 司机需要在应该在上午 8 点开始工作,因此最早开始时间最晚开始时间均将被设置为 8:00:00 AM。
  9. 最大停靠点计数更改为 10
  10. 这表示一辆卡车最多可服务的商店的数量。
  11. 对于 Capacity_1,输入值 15000
  12. 卡车最多可装载 15,000 磅的货物。
  13. 对于路径约束,输入以下值:

    参数

    描述

    最长总时间

    360

    由于受到工作时间的限制,驾驶员的一个工作时段不能超过六小时(360 分钟)。

    最长总行驶时间

    120

    为在符合工作时间限制的前提下服务一定数量的商店(同时也将每个商店的服务时间考虑在内),卡车在路上行驶的时间不能超过两小时(120 分钟)。

    最长总距离

    80

    为了保持车队中每日的燃油和维护成本,所有卡车的路径都不得超过 80 英里。

  14. 对于成本,输入以下值:

    参数

    描述

    单位时间成本

    0.20

    每小时应向卡车驾驶员支付 12 美元,所以工资为:$12.00/60 分钟 = 每分钟 $0.20。

    单位距离成本

    1.5

    平均每公里在燃油消耗、车辆折旧和维护方面的花费量(以美元计)。

  15. 保留其余参数的默认设置,然后单击确定按钮。
  16. 将向 Routes 子图层属性表添加三个路径。

设置车辆配送分析的属性。

VRP 功能区包括不同的部分,您可以在其中指定图层的参数。

  1. VRP 选项卡的出行设置组中,单击出行设置部分右侧的启动出行模式属性按钮,以打开图层属性对话框。
    “启动出行模式属性”按钮

    随即显示图层属性:车辆配送对话框。

  2. 请展开 U 形转弯部分,并从下拉列表中选择
  3. 单击确定

    模式下拉列表中显示 <Driving Time> 时,表示已调整行驶模式。

  4. 出行设置组中,确保已将时间字段单位设置为分钟,已将距离字段单位设置为英里
    注:

    时间字段单位距离字段单位设置适用于 VRP 子图层的字段,并且不影响方向单位。 始终以使用的区域设置的标准报告方向单位。

  5. 默认日期组中,从默认日期类型下拉列表中选择星期
  6. 从星期的结果下拉列表中,选择星期一
  7. 输出几何组中,从输出几何线性 Shape 类型下拉列表中选择直线

    当需要了解分配到路径的停靠点及其访问顺序时,直线输出几何非常有用。 当需要每个车辆的精确路径时,可以使用沿网络选项。

    注:

    此输出几何选项仅对路径的显示有影响,而对 VRP 求解程序所得出的结果没有任何作用。

    注:

    如果使用 ArcGIS Online,则此设置不可用。

运行分析

运行 VRP 分析,来确定最佳的路径分配和停靠点顺序

  1. VRP 选项卡上,单击运行 运行

    VRP 求解程序可计算停靠点服务所需的三个路径,并绘制连接各停靠点的线。 每条路径的起点和终点均为配送中心,而且沿途都会经过一组停靠点。

    包含服务一组停靠点的三个路径的 VRP 解决方案

确定路径中的转弯说明

您可以在方向窗格中查看行进策略方向。

  1. VRP 选项卡的方向组中,单击显示方向按钮 方向

    随即出现方向窗格,其中显示每个路径的转弯方向。

    注:

    根据使用的区域设置的标准,以公制或英制报告方向单位。

  2. 如果希望继续此教程练习下面的高级部分,请关闭方向窗格。 否则,请保存工程并退出 ArcGIS Pro

通过更改现有解决方案来对其它情况进行求解:删除现有路径

为公司所制定的 VRP 解决方案在初期运作良好。 但数周过后,为 Truck2 指定的驾驶员需要休假。 现在,配送公司必须只使用两辆卡车来服务相同数量的商店。 为了应对额外的工作量,该公司决定为另两名驾驶员支付加班费,并在每天提供一段带薪休息时间。 该配送公司还额外征用了两个辅助配送中心。 有了这两个额外的配送中心,卡车便可在运送途中重新装载货物,而无需返回主配送中心补货。 下面将通过对上述步骤获得的解决方案进行修改,以使其适应这些变化。

  1. 内容窗格中,右键单击路径并从快捷菜单中选择属性表

    随即显示属性表,其中包含每个路径的输入和输出字段。

  2. 选择 Truck2 的行,然后单击表视图上的删除选择按钮。

    这会从表格中移除行,并地图中移除相应的路径。

  3. 单击编辑选项卡,在管理编辑内容组中,单击保存按钮 保存编辑内容
  4. 单击保存编辑内容对话框上的

修改路径以算入加班

为了应对额外的工作量,公司希望取消路径的最大时间、最大行驶时间和最大距离限制。 由于驾驶员不得不比以前工作更长时间,所以在完成六个小时工作后的加班时间可获得每小时 $18 的薪酬。 在此步骤中,您将对路径进行以下更改。

  1. 在 Routes 属性表处于打开状态时,在表中滚动到 OvertimeStartTime 字段,然后双击进行编辑。
  2. 编辑 Truck1 和 Truck3,使其与下表中的值匹配。 对于具有 <Null> 值的属性,移除已存在的值。

    字段名

    描述

    OvertimeStartTime

    360

    如果驾驶员工作时间超过六小时(360 分钟),则会向其支付加班工资。

    CostPerUnitOvertime

    0.3

    卡车驾驶员的加班工资为每小时 $18。 因此,如果按每分钟来计算,该工资为: $18.00/60 分钟 = 每分钟 $0.30。

    MaxOrderCount

    20

    由于驾驶员可得到加班工资,因此便可服务更多商店。

    MaxTotalTime

    <空>

    没有对驾驶员工作时段总时间的限制。

    MaxTotalTravelTime

    <空>

    没有对路上驾驶所花费时间的限制。

    MaxTotalDistance

    <空>

    没有对卡车行驶总距离的限制。

    已修改 Routes 属性表以包括加班

  3. 单击编辑选项卡,在管理编辑内容组中,单击保存按钮 保存编辑内容
  4. 单击保存编辑内容对话框上的
  5. 关闭 Routes 属性表。

添加路径更新

该公司收购了位于 800 Brush Street 和 100 Old County Road 的两个卫星配送中心,作为卡车的补给位置。 卡车可到这些补货位置补充货物,从而无需返回起始站点,这样便节省了时间。 您可以通过对补货地址进行地理编码,将补货位置添加至站点网络分析类。 可在补给点补充货物的运送路径以及补货所需的服务时间都可在网络分析类中指定。

第一组步骤是将补给地点放入“站点”子图层中。

  1. 单击地图选项卡,在查询组中,单击定位按钮 定位

    定位窗格随即显示。

  2. 单击搜索框旁边的选项下拉按钮,然后选择提供商设置
    提供商设置选项
  3. 单击将定位器添加到工程按钮。

    随即打开选择现有定位器对话框。

  4. 导航至教程数据位置,然后选择 SanFranciscoLocator.loc
  5. 选择现有定位器对话框中单击确定

    SanFranciscoLocator.loc 已添加到提供商设置窗格。

  6. 单击返回到定位窗格按钮。
    “返回到定位窗格”按钮
  7. 搜索框中输入 800 Brush St.,然后按 Enter 键。
  8. 右键单击 SanFranciscoLocator 中的“800 Brush St, Oakland, California, 94607”,然后从快捷菜单中选择添加到要素类 添加至要素类
    将位置添加到要素类
    注:

    使用世界地理编码服务作为定位器使用配额。

  9. 添加到要素类对话框中,展开“车辆配送:站点”,然后选择“站点”。
    添加到要素类对话框
  10. 单击确定

    站点随即添加到 Depots 属性表和地图中。

  11. 使用地址“100 Old County Rd, Brisbane, California, 94005”,重复步骤 7 到 10。
  12. 关闭查找窗格。
  13. 内容窗格中,右键单击 Depots 子图层并从快捷菜单中选择属性表
  14. 在 Depots 属性表中,双击“名称”字段,将新添加的站点名称分别从“800 Brush St”站点更改为“Brush St”,并将“100 Old County Rd”站点更改为“Old County Rd”。

    这些名称必须与下一组用于添加路径补给信息的步骤完全匹配。

  15. 编辑选项卡的管理编辑内容组中,单击存按钮 保存编辑内容
  16. 单击保存编辑内容对话框上的
  17. 关闭 Depots 属性表。
  18. 下一组步骤用于添加路径补给信息。 由于两辆卡车均可在 Brush St 和 Old County Rd 这两个位置补充载货,所以您需要将每辆卡车与这两个补货位置相关联。 在卡车需要补货时,VRP 求解程序将会计算卡车的最佳补货位置。
  19. 内容窗格内,右键单击 Route Renewals 子表,然后单击打开

    该表为空。

  20. 单击单击以添加新行行。
  21. 在属性表中添加以下信息:

    RouteName

    DepotName

    ServiceTime

    Truck1

    Brush St

    30

    Truck3

    Brush St

    30

    Truck1

    Old County Rd

    30

    Truck3

    Old County Rd

    30

    确保拼写与“站点”和“路径”表 Name 字段所使用的拼写匹配。 属性表应与下图相似:

    “货物补给点”属性表

  22. 编辑选项卡的管理编辑内容组中,单击存按钮 保存编辑内容
  23. 单击保存编辑内容对话框上的
  24. 关闭 Route Renewals 属性表。

添加休息点

由于驾驶员必须工作更长时间,因此他们需要在工作时段中休息半小时。 在此步骤中,您将为每个路径指定休息时间。

  1. VRP 选项卡的输入数据组中,单击导入休息点的下拉箭头,然后选择添加休息点

    随即显示添加位置窗口。

  2. 确保输入车辆配送图层参数已设置为车辆配送。
  3. 目标路径名称留空。

    这表示您设置的休息点适用于所有路径,并且将为 Routes 属性表中当前的每个路径创建条目。

  4. 确保休息点类型已被设置为时间窗休息点。
  5. 选中已支付框。

    司机将在这段时间内得到报酬,因此与在休息点停留时间相关的成本将计入路径总成本中。

  6. 休息点持续时间设置为 30。

    司机有 30 分钟的午餐时间。

  7. 时间窗开始设置为 12:30 PM。
  8. 时间窗结束设置为 1:30 PM。
  9. 最长冲突时间设置为 0。

    休息的开始时间必须介于 12:30 p.m. 和 1:30 p.m. 之间。 零值表示休息时间不可始于 1:30 p.m. 之后

  10. 保留其余参数的默认设置,然后单击确定按钮。
  11. Breaks 属性表现在显示两个条目,即各路径(Truck1 和 Truck3)在 12:30 pm 和 1:30 pm 之间的带薪午餐休息时间。

运行分析

请完成下列步骤以运行分析:

  1. VRP 选项卡上,单击运行按钮 运行

    VRP 求解程序将计算服务停靠点所需的两个路径,并绘制连接各停靠点的直线。 每条路径的起点和终点均为配送中心,而且沿途都会经过一组停靠点,在这过程中会到补货位置重新装货,继续服务其余的停靠点,并返回配送中心。

    可以检查 Depot Visits 属性表,以了解在一天开始时和访问补给位置时补充的货物数量的相关信息。 它还将显示到达这些位置的预计时间。

    包含服务一组停靠点的两个路径的 VRP 解决方案