练习 7:使用一支车队服务一组停靠点

复杂程度: 入门级 数据要求: ArcGIS 教程数据安装程序 数据路径: C:\ArcGIS\ArcTutor\Network Analyst\Tutorial 目标: 求解多路径派发 (VRP) 分析。

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

这可通过求解多路径派发 (VRP) 来实现。确定送货顺序后,便可生成结果路径的转弯指示,并将该路径以电子形式分发给驾驶员,或打印后交给驾驶员以进行送货。

准备显示

步骤:
  1. 如果在 ArcMap 中打开了 Exercise07.mxd,请跳到步骤 6。
  2. 单击开始 > 所有程序 > ArcGIS > ArcMap 10 启动 ArcMap。
  3. ArcMap - 启动 对话框中,单击现有地图 > 浏览更多。

    将弹出打开 ArcMap 文档 对话框。

  4. 浏览至 C:\ArcGIS\ArcTutor\Network Analyst\Tutorial。

    这是本教程数据的默认安装位置。

  5. 双击 Exercise07.mxd

    将在 ArcMap 中打开该地图文档。

  6. 启用“网络分析”扩展模块。
    1. 单击自定义 > 扩展模块

      将打开扩展模块 对话框。

    2. 选中网络分析
    3. 单击关闭
  7. 如果未显示 Network Analyst 工具条,则需要添加该工具条。

  8. Click Customize > Toolbars > Network Analyst.

    The Network Analyst toolbar is added to ArcMap.

    网络分析工具条

  9. 如果未显示 Network Analyst 窗口,则需要添加该窗口。

  10. Network Analyst 工具条上,单击显示/隐藏 Network Analyst 窗口按钮 显示/隐藏网络分析窗口

    The dockable Network Analyst window opens.

    “网络分析”窗口

  11. 可以停靠或取消停靠 Network Analyst 窗口。在本练习中,其停靠在内容列表 窗口下方。

    Exercise07 地图文档

创建多路径派发 (VRP) 分析图层

步骤:
  1. Network Analyst 工具条上,单击 Network Analyst,然后单击新建多路径派发(VRP)

    选择“新建 OD 成本矩阵”

    多路径派发 (VRP) 分析图层即被添加到 Network Analyst 窗口中。网络分析类(停靠点、站点、路径、站点访问、中断、路径区、路径种子点、路径更新、特点、停靠点对、点障碍、线障碍和面障碍)为空。

    具有空类的 Network Analyst 窗口

    分析图层也将被添加到内容列表 窗口中。

    显示在内容列表中的多路径派发 (VRP) 分析图层

添加停靠点

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

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

商店表的概览

接下来会将这些商店的点要素作为停靠点添加到分析图层中。

步骤:
  1. Network Analyst 窗口中,右键单击停靠点 (0),然后选择加载位置

    选择“加载位置”

    将打开加载位置 对话框。

  2. 加载位置下拉菜单中选择商店
  3. 可以在加载位置 对话框的位置分析属性部分指定商店要素类的哪些属性包含 ArcGIS Network Analyst 将要用于求解此多路径派发 (VRP) 的值。

  4. 位置分析属性部分中,请确保 Name 属性已自动与 NAME 字段匹配,而 ServiceTime 属性也与 ServiceTime 字段匹配。

    Network Analyst 会根据配置文件([ ArcGIS 安装目录 ]\NetworkAnalyst\NetworkConfiguration\NASolverConfiguration.xml)来尝试对新创建的多路径派发 (VRP) 图层的位置分析属性进行自动匹配。

  5. TimeWindowStart1字段值设为 TimeStart1

    映射时间窗开始的字段

  6. TimeWindowEnd1字段值设为 TimeEnd1
  7. DeliveryQuantities字段值设为 Demand
  8. MaxViolationTime1 属性对应的默认值下输入 0

    将此属性设为零即表示不能违反时间窗。

    查看加载商店的属性设置

  9. 单击确定

    Network Analyst 窗口中的停靠点下列出了 25 家商店,而且这些商店在地图上显示为停靠点。

添加站点

货物会从单个配送中心(其位置显示于 ArcMap 中的 DistributionCenter 要素图层)发出。配送中心的营业时间从 8:00 a.m. 到 5:00 p.m.。接下来会将此点要素添加到站点网络分析类中。

步骤:
  1. Network Analyst 窗口中,右键单击 站点 (0),然后选择加载位置

    将打开加载位置 对话框。

  2. 加载位置下拉菜单中选择 DistributionCenter
  3. 位置分析属性部分中,请确保 Name 属性已自动与 NAME 字段匹配。
  4. TimeWindowStart1 属性的默认值下输入 8 AM
  5. TimeWindowEnd1 属性的默认值下输入 5 PM

    加载站点的属性的概览

  6. 单击确定

    Network Analyst 窗口中的站点下会列出一个配送中心,而且该配送中心会在地图中显示为站点。

添加路径

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

步骤:
  1. Network Analyst 窗口,右键单击路径 (0),然后选择添加项目

    创建路径对象

    新路径 Item 1 会被添加到 Network Analyst 窗口的路径类下,而且会打开该路径的属性 窗口。

  2. 属性 窗口中,如下表所示来指定路径的属性。该表的“描述”列解释了特定值的用法。对于表中未列出的属性,需要保留它们的默认值。

    属性

    描述

    名称

    Truck_1

    车辆名称。

    StartDepotName

    San Francisco

    卡车从配送中心出发。

    EndDepotName

    San Francisco

    卡车返回路径终点处的配送中心。

    StartDepotServiceTime

    60

    将卡车装满货物所需的时间(在此案例中单位为分钟)。

    EarliestStartTime

    8 AM

    卡车可以开始工作的最早时间为配送中心的开业时间 8:00 a.m.。

    LatestStartTime

    8 AM

    卡车必须尽早开始工作。

    Capacities

    15000

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

    CostPerUnitTime

    0.20

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

    CostPerUnitDistance

    1.5

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

    MaxOrderCount

    10

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

    MaxTotalTime

    360

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

    MaxTotalTravelTime

    120

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

    MaxTotalDistance

    80

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

    路径的属性设置概览

  3. 单击确定

    新路径 Truck_1 会被添加到 Network Analyst 窗口中的路径类。

  4. 由于配送中心的三辆卡车相同,因此您可以复制出第一辆卡车的两个副本,并对它们重命名。

  5. 右键单击 Network Analyst 窗口中的 Truck_1 路径对象,然后选择复制

    复制路径对象

  6. 右键单击 Network Analyst 窗口中的路径 (1) 类,然后选择粘贴

    粘贴新路径对象

    该路径类中包含两个相同的路径对象。

  7. 重复上一步骤创建第三个路径对象。

    Network Analyst 窗口中的三个路径对象

  8. 双击列表中的第二个 Truck_1 对象。

    将打开属性 窗口。

  9. 单击名称属性并输入 Truck_2
  10. 按两次 ENTER。

    将对该路径指定唯一名称,然后关闭窗口。

  11. 通过同样的方法将最后一条路径的名称更改为 Truck_3。

    每个路径对象都具有唯一名称

设置多路径派发 (VRP) 分析的属性

步骤:
  1. 单击 Network Analyst 窗口中的分析图层属性按钮。

    单击“图层属性”按钮

    将打开图层属性 对话框。

  2. 单击分析设置选项卡。
  3. 确保将时间属性下拉列表设置为旅行时间(分钟)

    VRP 求解程序将使用此属性来计算停靠点间及停靠点与站点间基于时间的成本。

  4. 单击距离属性下拉列表,并选择

    此属性可在考虑限制条件的前提下确定停靠点间及停靠点与站点间的行驶距离,并创建指示;但是 VRP 求解程序的目标是使时间成本最小化。

  5. 默认日期设置为星期。在星期下拉列表中选择星期一

  6. 确保将容量计数设置为 1

    此设置指示运送的货物只有一种度量值。在此情况下,度量值为重量(磅)。如果为容量指定了两种度量值(例如重量和体积),则容量计数应设置为 2。

  7. 确保选择分钟作为时间字段单位

    这将指定所有基于时间的属性(例如停靠点的 ServiceTime 和 MaxViolationTime1 以及路径的 MaxTotalTime、MaxTotalTravelTime 和 CostPerUnitTime)都以分钟为单位。

  8. 确保将距离字段单位设置为英里

    这将指定所有基于距离的属性(例如路径的 MaxTotalDistance 和 CostPerUnitDistance)都以英里为单位。

  9. 由于这些送货卡车很难进行 U 形转弯,请将交汇点的 U 形转弯设置为不允许
  10. 输出 Shape 类型下拉列表中选择直线

    如果希望路径沿街道确定,则应该选择具有测量值的实际形状真实形状。请注意,此选项只对路径的显示有影响,而对 VRP 求解程序所得出的结果没有任何作用。

  11. 确保选中应用等级
  12. 约束条件框中,确保已选中 RestrictedTurnsOneway 选项。
  13. 保持方向框中选项的默认值设置。

    “分析设置”配置概览

  14. 单击确定

运行过程来确定最佳的路径分配和停靠点顺序

步骤:
  1. Network Analyst 工具条上,单击求解按钮 求解

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

    如果收到任何错误信息,则应确保路径的 Capacities 属性值已设置为 15000,而不是 15,000,并确保路径的名称是唯一的。

    三条路径概览

确定路径中的转弯指示

步骤:
  1. 右键单击 Network Analyst 窗口中的路径 (3),然后单击选择 > 清除所选要素。
  2. Network Analyst 工具条上,单击指示窗口按钮 指示窗口

    将打开指示 对话框。

  3. 另外,您也可以将多路径派发 (VRP) 图层导出为图层文件(<文件名>.lyr),方法是在内容列表 窗口中右键单击多路径派发 (VRP) 并选择另存为图层文件。这可将分析保存在磁盘上,以便将来将其添加到其它地图文档中重新使用。
  4. 如果希望继续此教程练习下面的高级部分,请关闭指示 窗口。否则,请退出 ArcMap,而且不要保存任何对于 Exercise 07.mxd 的更改。

通过更改现有解决方案来对其它情况进行求解

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

从解决方案中删除现有路径

步骤:
  1. Network Analyst 窗口中,右键单击路径类中的 Truck_2,然后单击删除

    删除路径

添加路径更新

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

步骤:
  1. Network Analyst 窗口中,右键单击站点 (1),然后选择查找地址

    将打开查找对话框。

  2. 选择地址定位器下拉菜单中选择 SanFranciscoLocator
  3. 街道或交叉点框中输入 800 Brush St

    查找地址

  4. 单击查找

    已添加至 Exercise07.mxd 的地址定位器 SanFranciscoLocator 会查找地址,并将查找结果显示在查找 对话框的底部。

  5. 查找 对话框中右键单击该结果,然后选择添加为网络分析对象

    会将定位到的地址添加为 Network Analyst 窗口和地图显示中的站点。

  6. 查找 对话框的街道或交叉点框中输入 100 Old County Rd
  7. 单击查找
  8. 查找 对话框的底部右键单击新结果,然后选择添加为网络分析对象

    第三个站点将被添加至站点网络分析类。

    Network Analyst 窗口中的三个站点

  9. 关闭查找 对话框。
  10. 由于两辆卡车均可在 800 Brush Street 和 100 Old County Road 这两个位置补充载货,所以您需要将每辆卡车与这两个补货位置相关联。VRP 求解程序将会算出卡车的最佳补货位置。

  11. Network Analyst 窗口中,右键单击路径更新 (0),然后单击添加项目

    添加路径更新

    新的路径更新对象 Item1 会被添加到 Network Analyst 窗口的路径更新类下,同时会打开 Item1 的属性 窗口。

  12. 属性 窗口中,如下所示指定路径更新的属性。

    属性

    描述

    DepotName

    800 Brush St

    卡车可使用此站点位置补货。

    RouteName

    Truck_1

    车辆名称。

    ServiceTime

    30

    卡车装载所需的时间(以分钟为单位)。

    属性窗口

  13. 单击确定

    新的路径更新对象 800 Brush St 将列入 Network Analyst 窗口中的 Truck_1 项。

  14. 遵照以上三步再添加三个路径更新对象,以使每辆车(Truck_1 和 Truck_3)都能在两个补货位置(800 Brush St 和 100 Old County Rd)补充货物。

    现在,Network Analyst 窗口中的 Truck_1Truck_3 项下应分别列有两个路径更新对象。

    窗口中的四个路径更新

修改路径以算入加班

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

步骤:
  1. Network Analyst 窗口中,在路径网络分析类下双击 Truck_1

    将打开属性 窗口。

  2. 更改 Truck_1 的属性,使其与下表中的值相匹配。

    属性

    描述

    OvertimeStartTime

    360

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

    CostPerUnitOvertime

    0.3

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

    MaxOrderCount

    20

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

    MaxTotalTime

    <空>

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

    MaxTotalTravelTime

    <空>

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

    MaxTotalDistance

    <空>

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

    新的 Truck_1 属性值

  3. 单击确定
  4. Truck_3 重复以上三步。

添加休息时间

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

步骤:
  1. Network Analyst 窗口中,右键单击休息时间 (0),然后选择添加项目

    将打开属性 窗口。

  2. 在如下所示的表中为新休息时间指定属性值。

    属性

    描述

    TimeWindowStart

    12:30 PM

    休息时间必须始于 12:30 p.m. 之后。

    TimeWindowEnd

    1:30 PM

    休息时间必须始于 1:30 p.m. 之前。

    RouteName

    Truck_1

    此休息时间所适用的路径的名称。

    ServiceTime

    30

    休息时间(以分钟为单位)。

    MaxViolationTime

    0

    休息的开始时间必须介于 12:30 p.m. 和 1:30 p.m. 之间。零值表示休息时间不可始于 1:30 p.m. 之后(即,休息的时间窗是固定的)。

    IsPaid

    True

    由于这是带薪休息,因此该成本也包含在路径的总成本中。

    休息时间的属性窗口

  3. 单击确定
  4. 重复以上三步,在 RouteName 属性处输入 Truck_3

    现在,Network Analyst 窗口的中断类中便列有两个对象:Truck_1 和 Truck_3。

    Network Analyst 窗口中的两个中断

确定解决方案

步骤:
  1. Network Analyst 工具条上,单击求解按钮 求解

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

    路径鹰眼图

    此解决方案符合该配送公司指定的所有约束。但是,将行驶路线交给两个驾驶员后,该公司发现 Truck_1 的驾驶员更愿意在市区驾驶,而 Truck_3 的驾驶员则更希望在东湾区域驾驶。于是公司想要确定一个新的解决方案,以使路径所服务的停靠点位于驾驶员所喜欢的区域。在下面的步骤中,您将考虑驾驶员的个人喜好来添加路径种子点。

添加路径种子点

在此步骤中,您将通过对地址进行地理编码的方式来为 Truck_1 和 Truck_3 添加路径种子点。请注意,路径种子点还可从现有的点要素中导入,或通过使用创建网络位置工具 创建网络位置工具 以交互方式创建。

步骤:
  1. Network Analyst 窗口中,右键单击路径种子点 (0),然后选择查找地址

    将打开查找对话框。

  2. 街道或交叉点组合框中输入 278 Dorantes Ave

    “查找”对话框

  3. 单击查找

    SanFranciscoLocator 将找到该地址,并将结果显示在对话框的底部。

  4. 右键单击该结果并选择添加为网络分析对象

    该地址的位置会被添加为路径种子点。该点将在 Network Analyst 窗口和地图显示中显示。

  5. 关闭查找 对话框。
  6. Network Analyst 窗口中,右键单击新的路径种子点 278 Dorantes Ave

    将打开属性 对话框。

  7. 在如下所示的表中为路径种子点指定属性值。

    属性

    描述

    RouteName

    Truck_1

    此种子点所适用的路径的名称。

    SeedPointType

    静态

    这会使靠近该指定种子点的停靠点更有可能被分配给 Truck_1。

    属性窗口

  8. 重复此部分的步骤 1–5,以在 1888 Peralta St 位置添加另一个路径种子点。
  9. 重复步骤 6 和 7,以将第二个种子点的 RouteName 属性更改为 Truck_3

    Network Analyst 窗口中的两个路径种子点

确定解决方案

步骤:
  1. Network Analyst 工具条上,单击求解按钮 求解

    VRP 求解程序会计算停靠点服务所需的两个路径,并绘制连接各停靠点的直线。Truck_1 的路径将仅包括市区的停靠点。

  2. 退出 ArcMap 而不保存任何更改。

7/10/2012