Skip to main content

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

需具备 Network Analyst 许可方可使用。

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

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

注:

可以使用指定的教程网络数据集、ArcGIS Online 或使用涵盖分析输入数据地理的网络数据集发布的 ArcGIS Enterprise 路径选择服务作为网络数据源来完成本教程。 如果使用 ArcGIS Online 作为网络数据源,则将消耗 配额 。

了解有关使用服务进行网络分析的更多信息

获取数据

本教程的数据可供下载。

  1. 请转至 数据下载页面 。

  2. 单击 下载 按钮将文件保存到本地。

  3. 解压下载的文件。

创建地图

要创建地图,请完成以下步骤:

  1. 启动 ArcGIS Pro。

  2. 单击 地图 模板以创建工程。 可以选择性地更改工程的名称和位置。

  3. 单击 确定 。

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

将教程数据添加到工程中

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

注:

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

要将网络数据集添加到地图,请完成以下步骤:

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

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

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

  3. 单击 确定 。

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

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

    注:

    如果您打算使用 ArcGIS Online 或 ArcGIS Enterprise 路由服务作为网络数据源,则无需将网络数据集添加到地图中。

  4. 在 目录 窗格中,展开 文件夹 > 教程 > SanFrancisco.gdb > Transportation 。

  5. 将 Streets_ND (具有一个网络数据集图标 网络数据集 )拖放到地图上。

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

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

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

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

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

  7. 在 内容 窗格中,取消选中 Streets_ND 以仅显示底图。

    将表示杂货店位置的点添加到地图中。

  8. 在 目录 窗格中,单击 教程 > SanFrancisco.gdb > 分析 。

  9. 在 目录 窗格中,右键单击 Stores 图层,然后选择 添加至当前地图 添加数据 。

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

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

    注:

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

创建车辆配送图层

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

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

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

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

    注:

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

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

    VRP 图层 选项卡随即显示。

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

    “VRP 图层”选项卡

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

    提示:

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

添加停靠点

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

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

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

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

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

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

    随即显示 添加位置 窗口。

  2. 请确保将 输入网络分析图层 设置为 车辆配送 ,并将 子图层 设置为 停靠点 。

  3. 单击 输入位置 下拉箭头并选择 Stores 。

    这是您之前添加到地图中的点要素类。

  4. 在 字段映射 下,从 属性 中选择 名称 ,并确保 NAME 已在 字段名称 参数中自动映射。

  5. 如果以下字段未自动映射,请手动进行映射:

    • TimeWindowStart 至 TimeStart1

    • TimeWindowEnd 至 TimeEnd1

    • DeliveryQuantity_1 至 Demand

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

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

  7. 保留其余参数的默认设置,然后单击 确定 。

在 Orders 属性表中共列出了 25 家商店,这些商店将在地图上显示为停靠点。

添加站点

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

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

    随即显示 添加位置 窗口。

  2. 请确保将 输入网络分析图层 设置为 车辆配送 ,并将 子图层 设置为 站点 。

  3. 单击 输入位置 下拉箭头并选择 DistributionCenter 。

  4. 在 字段映射 下,从 属性 中选择 名称 ,并确保 NAME 已在 字段名称 参数中自动映射。

  5. 在 字段映射 下,从 属性 中选择 TimeWindowStart ,然后在 默认值 参数中输入 8AM 。

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

  7. 保留其余参数的默认设置,然后单击 确定 。

Depots 属性表中会列出一个配送中心,而且该配送中心会在地图中显示为“站点”。

已添加站点

添加路径

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

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

    随即显示 添加车队配送路线 窗口。

  2. 确保 输入车辆配送图层 已设置为 车辆配送 。

  3. 对于 路径数 ,输入 3 。

  4. 将 路径名称前缀 更改为 卡车 。

  5. 在 起始站点名称 和 终止站名称 下拉选项中,选择 San Francisco 。

    这些路径以旧金山配送中心为起点或终点。

  6. 将 最早开始时间 和 最晚开始时间 更改为 8:00:00 AM 。

    司机需要在上午 8 点开始工作。

  7. 将 最大停靠点 计数更改为 10 。

    这表示一辆卡车最多可服务的商店的数量。

  8. 对于 Capacity_1 ,输入值 15000 。

    卡车最多可装载 15,000 磅的货物。

  9. 对于 路径约束 ,输入以下值:

    参数

    值

    描述

    最长总时间

    360

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

    最长总行驶时间

    120

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

    最长总距离

    80

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

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

    参数

    值

    描述

    单位时间成本

    0.20

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

    单位距离成本

    1.5

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

  11. 保留其余参数的默认设置,然后单击 确定 。

将向 Routes 子图层属性表添加三个路径。

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

VRP 图层 功能区包含各种部分,用于指定图层参数。

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

    “启动出行模式属性”按钮

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

  2. 请展开 U 形转弯 部分,然后从下拉列表中选择 无 。

  3. 单击 确定 。

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

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

    注:

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

  5. 在 默认日期 组中,从 默认日期类型 下拉列表中选择 星期 。

  6. 从星期的结果下拉列表中,选择 星期一 。

  7. 在 输出几何 组中,从 输出几何线性 Shape 类型 下拉列表中选择 直线 。

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

    注:

    此输出几何选项仅对路径的显示有影响,而对 VRP 求解程序所得出的结果没有任何作用。 如果使用 ArcGIS Online,则此设置将不可用。

    VRP 功能区应与下图类似。

    VRP 功能区上的 VRP 属性集

运行分析

运行 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. ,后跟一个空格。 当建议列表随即出现后,从 SanFranciscoLocator 标题下的建议列表中选择 800 Brush St, Oakland, California, 94607 。

    您可能会看到来自工程中包含的各种定位器的许多建议。

  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 depot 更改为 Brush St ,并将 100 Old County Rd depot 更改为 Old County Rd 。

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

  15. 在 编辑 选项卡的 管理编辑内容 组中,单击 保 存按钮 保存编辑内容 。

  16. 单击 保存编辑内容 对话框上的 是 。

  17. 关闭 Depots 属性表。

    下一组步骤用于添加路径补给信息。 由于两辆卡车均可在 Brush St 和 Old County Rd 这两个位置补充载货,所以您需要将每辆卡车与这两个补货位置相关联。 在卡车需要补货时,VRP 求解程序将会计算卡车的最佳补货位置。

  18. 在 内容 窗格内,右键单击 Route Renewals 子表,然后单击 打开 。

    该表为空。

  19. 单击 单击以添加新行 行。

  20. 在属性表中添加以下信息:

    RouteName

    DepotName

    ServiceTime

    Truck1

    Brush St

    30

    Truck3

    Brush St

    30

    Truck1

    Old County Rd

    30

    Truck3

    Old County Rd

    30

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

    “货物补给点”属性表

  21. 在 编辑 选项卡的 管理编辑内容 组中,单击 保 存按钮 保存编辑内容 。

  22. 单击 保存编辑内容 对话框上的 是 。

  23. 关闭 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. 保留其余参数的默认设置,然后单击 确定 。

Breaks 属性表现在显示两个条目,即各路径(Truck1 和 Truck3)在 12:30 pm 和 1:30 pm 之间的带薪午餐休息时间。

为 Truck1 和 Truck3 添加的休息点

运行分析

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

  1. 在 VRP 图层 选项卡上,单击 运行 按钮 运行 。

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

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

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