文中涉及数据详见华为杯2007年D题附件 邮局间直达公路里程-数据集
一、问题的来源及意义:
在信息技术飞速发展的今天,互联网已经成为一种重要的通信手段,但在我们利用Email等方式交流信息的同时,邮政作为传统的通信手段仍然与我们的日常生活和工作息息相关,发挥着不可替代的作用。我国的邮政生产过程由收寄、分拣封发、邮政运输和投递四大环节组成。邮政运输作为邮政生产过程的第三大环节,是邮政赖以传递邮件实现实物空间转移的物质基础,涉及航空、铁路、公路、水运等多种运输途径以及各种邮政设施。时限与成本是邮政运输问题的两个重要指标。时限是指邮电部规定的邮件、报刊处理、传递的最大时间限制,时限关系到邮政通信质量的好坏;成本影响着企业的经营。我国将邮件按时限要求大致划分为快件和普件,针对不同的邮件类别实施相应的运输计划。快件主要强调传递时限短,普件着重考虑邮件运输成本的降低。在进行邮路规划和安排邮车运行计划时,针对不同的邮件种类,在不影响时限标准实现的前提下,必须尽可能地降低成本。
邮政运输网络是邮政企业运营的重要保障,是决定邮政企业竞争能力的主要因素。自20世纪60年代以来,发达国家随着社会经济的发展,为了使邮政满足社会的需求,适应相关行业之间的竞争形势,对邮路的结构、通信组织方式及运行机制作了较大的调整,逐步扩大网络的覆盖区域,并按时限要求改进业务分类,开办快件等业务。随着UPS等国际性物流公司进驻国内,我国邮政正面临极大的挑战。我国邮政必须发挥自身优势,在缩短邮件运输时限和降低成本的同时,节约能耗和人力资源,提高邮政行业的服务质量和信誉,切实提高我国邮政的运行效益,保持邮政行业的竞争能力和取得良好的社会效益。
二、问题描述:
我国的邮政运输网络采用邮区中心局体制,即以邮区中心局作为基本封发单元和网路组织的基本节点,承担着进、出、转口邮件的处理、封发和运输任务,在此基础上组织分层次的邮政网。邮路是邮政运输网络的基本组成单元,它是指利用各种运输工具按固定班期、规定路线运输邮件,并与沿线有交接频次的邮政局、所交换邮件总包所行驶的路线。邮路的结构形式有三种:辐射形、环形和混合形。如图1所示,邮路A为一条环形邮路,邮路B为一条辐射形邮路。
1、辐射形邮路:是指从起点局出发,走直线或曲折线的邮路,其特点是不论用一种或几种运输工具联运,从起点到终点后,仍按照原路线返回出发地点。因此须在同一条路线上往返两个行程。这种邮路可以缩短运递时间,加快邮运速度。但它的联系点较少,需用的运输工具较多,所耗费用较大。
2、环形邮路:是指邮政运输工具走环形路线的邮路,即运输工具从起点出发单向行驶,绕行一周,经过中途各站,回到出发地点。它的特点是不走重复路线,联系点较多,运输工具的利用率高,运费也较省。但是邮件送到最后几个交接点的时间较长。
3、混合形邮路:是指包含辐射形和环形两种结构形式的邮路。
某地区的邮政局、所分布如图2所示,分为地市中心局(简称地市局)、县级中心局(简称县局)和支局三
级机构,该地区的邮政运输网络由区级邮政运输网和县级邮政运输网构成。区级邮政运输网由从地市局出发并最终返回地市局的区级邮车所行驶的全部邮路构成,县级邮政运输网由从县局出发并最终返回县局的县级邮车所行驶的全部邮路构成。为使邮政企业实现低成本运营和较高的服务质量,我们需要对该地区的邮政运输网络进行重构,确定合适的邮路规划方案并进行邮车的合理调度。
为了满足邮政的时限要求,必须尽可能地保证各县局、支局在营业时间内收寄的多数邮件能当天运送回地市局进行分拣封发等处理,以及每天到达地市局的多数邮件能当天运送到目的地县局、支局。该地区从地市局到县局每天两班车,从县局到支局每天仅有一班车。该地区的邮政运输流程及时限规定如下:
Step1:区级第一班次邮车从地市局D出发将邮件运送到各县局Xi和沿途支局,并将各县局Xi和沿途支局收寄的邮件运送回地市局D;区级第一班次邮车出发时间必须在06:00之后,返回地市局D时间必须在11:00之前。
Step2:县局Xi将当天区级第一班次邮车及前一天的区级第二班次邮车所送达的本县邮件进行集中处理,按寄达支局装上相应的县级邮车;县局Xi对邮件的集中处理时间为1小时(包括邮件的卸装、分拣封发等处理时间)。
Step3:各县级邮车将邮件运送到其负责的支局并将这些支局收寄的邮件运送回县局Xi;
Step4: 区级第二班次邮车从地市局D出发将邮件运送到各县局Xi和沿途支局,并将各县局Xi收寄的邮件(包括当日各县级邮车运回县局Xi的邮件)和沿途支局收寄的邮件运送回地市局D;请注意区级第二班次邮车在县局Xi卸装完邮件后的出发时间必须在县局Xi的全部县级邮车返回县局并集中处理1小时以后,最终返回地市局D的时间必须在18:00之前。
假设区级两个班次邮车的行驶路线相同,要求区级邮政运输网必须至少覆盖该地市附近的16个支局Z58, Z59, ……, Z73和5个县局X1,……,X5。各县级邮政运输网必须覆盖本县内区级邮车不到达的支局。该地区邮局间公路网分布见表1,并且县级邮车平均时速为30km/h,区级邮车的平均时速为65km/h,邮车在各支局卸装邮件耗时5分钟,在各县局卸装邮件耗时10分钟。
问题1:
以县局X1及其所辖的16个支局Z1, Z2, ……, Z16为研究对象,假设区级第一班次邮车08:00到达县局X1,区级第二班次邮车16:00从县局X1再出发返回地市局D,若每辆县级邮车最多容纳65袋邮件,试问最少需要多少辆邮车才能满足该县的邮件运输需求?同时,为提高邮政运输效益,应如何规划邮路和如何安排邮车的运行?(邮件量见表2,空车率=(邮车最大承运的邮件量(袋)-邮车运载的邮件量(袋))/邮车最大承运的邮件量(袋),单车由于空车率而减少的收入为(空车率*2元/公里))
问题2:
采用尽可能少、尽可能短的邮路可以减少邮政部门车辆和人员等的投入,从而显著降低全区邮政运输网的总运行成本。考虑投入车况较好的邮车,通常每条邮路只需要一辆邮车即能满足运载能力要求,试问应如何构建该地区的邮政运输网络(县的划分不能变更),请你给出邮路规划和邮车调度方案。请注意邮车的调度必须满足上文中有关该地区的邮政运输流程及时限规定。(每条邮路的运行成本为3元/公里)
问题3:
考虑到部分县与县交界地带的支局,其邮件由邻县县局负责运送可能会降低全区的运行成本,带来可观的经济效益。若允许在一定程度上打破行政区域的限制,你能否给出更好的邮路规划和邮车调度方案?(在此同样不必考虑邮车的运载能力的限制,每条邮路的运行成本为3元/公里)
问题4:
县局选址的合理与否对构建经济、快速的邮政运输网络起到决定性的作用。假设图2中县局X1,……,X5均允许迁址到本县内任一支局处,同时原来的县局弱化为普通支局。设想你是该地区网运部门负责人,请你重新为各个县局选址,陈述你的迁址理由并以书面材料形式提交省局网运处。


从附表 1 给出的数据可以计算出县局需要运送到支局的邮件量为 176 袋,由
各个支局运送到县局的邮件量为 170 袋。每辆县级邮车最多容纳 65 袋邮件,由
于65* 2 < max(170,176) < 65*3,所以完成该任务所需邮车数的下界为 3。下面我
们试着给出一种邮车数为 3 的邮路规划及邮车调度方案,使每辆车在不超过最大
承运邮件量(65 袋)并且不违反邮政运输流程及时间限制的条件下,完成该县
每天的邮件运输任务,并且使由于空车率而减少的收入达到最少。
问题分析
将县 X1的 16 个支局分为三组,形成一种邮路规划方案可以表示为:

计算因空车率而减少的收入,还需要得到该县内任何两个支局之间以及县局 与支局之间的最短距离,用矩阵表示如下:

对该方案的说明:括号内的支局表示邮车仅路过该支局,而不在该支局装
卸邮件。由式 3.5 可以算出因空车率而减少的收入。表 3.1 列出了该方案各个邮
路的长度及因空车率而减少的收入,由表可知因空车率而减少的收入为 47.01 元。
表 3.1 县局 X1邮路规划及邮车调度方案

类似的,市局D 的邮路可以表示为

这样,问题就化为如何找到一组邮路使得在满足式 3.1 和式 3.2 的条件下,
式 3.5 达到最小值。
问题求解
我们自然地想到按照支局之间的最短距离将其分成若干个互不相交的集合,
称每一个这样的集合为一个邮区,从而使得同一个邮区中包含的支局尽可能邻
近,属于不同邮区的支局之间距离尽可能远,并且对于每个邮区可以通过一条邮
路连接起来。对于此“邮区分划”问题,可以应用机器学习领域中的“聚类”算
法解决。聚类算法是一类重要的无监督学习算法,它可以用来将数据样本按照彼
此之间的“相似度”分成若干“类”,使得同一类内部的样本相似度尽可能高, 不同类之间的样本相似度尽可能低(通常只能得到一个近似最优解)。对应于我 们的问题,可以将数据样本之间的相似度定义为支局之间的距离。关于“聚类” 算法的研究有很多,这里我们选取了基于合并策略的层级聚类算法(agglomerative clustering),它的基本思想是先使得每个样本各成一类,然后每次选取距离最小 的两个类合并以减少类的数目。此算法因其简明的概念成为聚类方法中最重要的 一种。对应于不同的类间距可以得到不同的聚类结果。令 Di 和 Dj 分别表示两个 聚类,当定义类间距为两个聚类之间点距离的最小值时,可以证明,此算法等价 于图论的算法中寻找最小生成树(Minimal Spanning Tree)的过程。(参考附录 A: 最小生成树简介)。具体的说,假定已经得到了一个最小生成树,将生成树最长 的一条边去掉,就把数据分成两类,去掉第二长的边,数据就分成三类,可以如 此继续下去。 下面给出了题中 X4 及所辖支局为顶点的最小生成树(实线表示最小生成树 中的边,虚线表示原图中剩余的边):
需要注意的是,在实际问题的解决中,我们没有采用依次去掉最小生成树最长边 的方法将县级邮区进行分划。这是因为如下两个原因: 1. 上述基于最小生成树的聚类算法对局部条件比较敏感。例如,若最小生成树 中边上的权值差别不大,则单纯根据权值分划容易丢掉更优的解。 2. 由于要求所有邮路从县局出发,最优邮区分划可能不等价于最优聚类。 因此,我们设计了一种如下的基于最小生成树的邮区分划策略: 算法 3.1: 初始:最短路径长度=无穷大 开始:for each 最小生成树 T 中的每条边 e: 将 e 从最小生成树 T 中去掉,从而分划成 U1 和 U2 两个邮区; 分别计算遍历 U1 和 U2 中所有点的最短路径长度 l1 和 l2; 若 l1+l2<最短路径长度,则记录分划方法; 将 e 从最小生成树中恢复; end for 由此产生一个新的问题:如何计算遍历一个邮区所有点的路径最短长度。在图论 中,这个问题被称为 TSP 问题(Traveling Salesman Problem)。 TSP 问题已经被证明为是一个 NP 完全问题,因此目前只能通过近似算法寻 找 TSP 的解。关于 TSP 问题的近似算法有大量的研究工作,并且国际上建立了 TSPLIB 开放数据库用于 TSP 近似算法的测试和比较。由于 TSP 问题是 NP 完全 问题的性质,不可能通过枚举所有可行解找到最小值,而必须要通过寻找 TSP 问题的上下界从而尽可能的缩小寻找最优解的空间。这里我们采用了开源的 Concorde TSP 求解器。Concorde TSP 求解器主要采用了 G. Dantzig, R. Fulkerson, and S. Johnson 提出的 Cutting-Plane 方法(一种线性规划模型)计算下界,是当 前比较好的 TSP 求解器,可以找到 TSPLIB 数据库中高达 15,112 个城市时,TSP 问题的最优解。 因此,一个对于一个确定的邮区,可以通过 TSP 求解器找到最佳的邮路规划。 将此求解器代入算法 3.1 的步骤 2,可以得到上面示意图中最优的分划方法为移 除边(38, 39)从而形成(34,35,36,37,38)和(39,40,41,42,43)两个 邮区,而非经典聚类算法中移除最长边(35,36)得到的结果。 下面我们分析市局邮车的分化方案,市局邮车在每天早晨在 6:00 之后从地市 局 D 出发,在 11 点前返回,因此市局邮车最多有 5 个小时的时间。由题目给出 的数据可以用弗洛伊德算法求出市局 D 到各个县局的最短路径(见图 3.1 中红线 所示)。各个最短路径的距离见表 3.2。 由表可知各县邮局到达市邮局的最短距离分别是{92、89、98、66、124},而在 5 个小时的时间内,市局邮车最多可行驶655 325 公里,远大于上面任意一个 县邮局和市邮局的距离,可以考虑用一辆邮车负责向两个县邮局运送信件。 观察该市地图可以发现 X1 和 X2 比较接近, X2 和 X3 比较接近,因此考虑用 一辆车负责向 X1和 X2 或 X2 和 X3 运送邮件。从地图还可看出,此时 X3 县局需要 负责 Z27 、 Z30、 Z32 、 Z33四个支局,并且从地图上看着四个支局及 X3 相互间的 距离并不远,所以 X3 县局仅需派出一辆邮车即可完成任务;而 X1 县局尚有 13 个支局需要解决,负担较重。所以,我们让一辆邮车负责向 X1和 X2 运送邮件。 为了减轻 X1的负担,我们让该邮车也负责向 Z12 运送邮件。于是该邮车的邮路就 成了:


由表 2.4 可以看出除了县局 X3 剩下两个支局比较少外,其余各县局都有 8 个 以上的支局。题目要求邮路尽可能少、尽可能短,并且每条邮路只需要一辆邮车, 所以为 X3 安排一条邮路,并根据式 3.1 和式 3.2 确定出其他各县的邮路数。 下面确定 X1、X2 、X4 、X5 的邮路规划及邮路调度方案。以 X1为例。X1还 需要负责剩下的 Z1等 11 个支局。此部分采用算法 3.1 即可得到。利用最小生成 树算法得到 5 个县的支局的分组情况如下:
利用 TSP 算法得到各个县的邮路见表 3.5

该算法的具体步骤如下: 算法 3.2 1、对每条邮路 U 计算所有不属于该邮路的支局到此有路的距离,并且由小 到大的顺序排序。 2、取出到邮路 U 距离最近的三个支局进行下面的支局竞争实验: 将该支局 P 加入到邮路 U 中,并对邮路 U 中所有支局和 P 进行 TSP 计算,
问题求解 1. 基于最短路径的新邮路规划方案 按照前面问题分析中得出的方法,得出了新的县区规划如下图所示:
图 3.5 应用县局-支局距离判别法得到的行政规划 2. 基于“邮路竞争支局”思想的邮路规划改进策略 首先求出市区邮车的邮路,如图 3.6 所示:
采用算法 3.2,得到的县区邮路如图 3.7:

按照问题 2 的做法,先求出市局邮车的邮路,见图 3.8。 然后运用最小生成树算法求出各个县内支局的分组,最后对每一个分组进行 TSP 计算,即可得出各县邮路的最优路线,见图 3.9。 该邮路规划方案可以用下表示


