《送货路线设计问题》word版.doc
送货路线设计问题 现今社会网络越来越普及,网购已成为一种常见的消费方式,随之物流行业也渐渐兴盛,每个送货员需要以最快的速度及时将货物送达,而且他们往往一人送多个地方,请设计方案使其耗时最少。现有一快递公司,库房在图1中的O点,一送货员需将货物送至城市内多处,请设计送货方案,使所用时间最少。该地形图的示意图见图1,各点连通信息见表3,假定送货员只能沿这些连通线路行走,而不能走其它任何路线。各件货物的相关信息见表1,50个位置点的坐标见表2。 假定送货员最大载重50公斤,所带货物最大体积1立方米。送货员的平均速度为24公里/小时。假定每件货物交接花费3分钟,为简化起见,同一地点有多件货物也简单按照每件3分钟交接计算。 现在送货员要将100件货物送到50个地点。请完成以下问题。1. 若将130号货物送到指定地点并返回。设计最快完成路线与方式。给出结果。要求标出送货线路。2. 假定该送货员从早上8点上班开始送货,要将130号货物的送达时间不能超过指定时间,请设计最快完成路线与方式。要求标出送货线路。3. 若不需要考虑所有货物送达时间限制(包括前30件货物),现在要将100件货物全部送到指定地点并返回。设计最快完成路线与方式。要求标出送货线路,给出送完所有快件的时间。由于受重量和体积限制,送货员可中途返回取货。可不考虑中午休息时间。 以上各问尽可能给出模型与算法 送货路线设计模型 一.摘要 本文是关于快递公司送货路线设计问题,即在给定送货地点和给定设计规范的条件下,确定送货员的最短运行线路,即耗时最少的送货线路。本文为了能够全面的利用所有的数据,决定建立模型一:采用“D-J模型”。在此模型中,运用Dijkstra算法和Kruskal算法相结合求解,然后套用此模型可以得到最优的结果是:送货员所走过的总路程:56.27114573千米;送完全部货物所需时间:3.8446小时。 本文为了能够解决更通俗的套用模型,由此建立模型二: “分析&递推模型”。在此模型中利用分析法和递归的思路建立动态的方法求得最优化结果来相结合求解,然后套用此模型可以得到最优的结果是:送货员所走过的总路程:60.04552405千米送完全部货物所需时间:4.001896835小时。 在问题一的基础上,加多的时间的限制,利用模型二,求出送货员从早上8点上班开始送货,要将130号货物的送达时间不能超过指定时间的最快完成的结果是:送货员所走过的总路程59.2435千米送完全部货物所需时间:3.96848小时。 由于受重量和体积限制,为了有规律的进行计算,建立模型三:“分区送货策略模型”。通过对送货点的分成不同的区域,在对其继续单独的利用模型二计算,得到最优的结果为: 线路路程(千米)行走所需要的时间(小时)货物交接总时间(小时)送完全部货物所需时间(小时)线路155.77 2.9965421.754.746542线路234.3192 1.429967来源:() - 数学建模:这样写合理吗_忘尘_新浪博客 1.63.029967线路360.17142.5071421.654.157142关键词:分析&递推模型 Dijkstra算法 Kruskal算法 最短路径 二、问题的重述现今社会网络越来越普及,网购已成为一种常见的消费方式,随之物流行业也渐渐兴盛,每个送货员需要以最快的速度及时将货物送达,而且他们往往一人送多个地方。所以在快递公司送货策略中,确定合理的行走路线是关键的问题。表1.1为题中所给的数据: 表1.1最大载重量50kg送货点50个货物件数100件途中的平均速度24km/h业务员工作时间上限无限制每个送货点停留时间3min/件所带货物最大体积1m3处于实际情况的考虑, 本研究中对人的最大行程不加限制.本论文试图从最优化的角度,建立起满足设计要求的送货的数学模型,借助于计算机的高速运算与逻辑判断能力,求出满足题意要求的结果。三、附录数据的整理3.1附录数据的整理1)经检验发现 “ 图1 快递公司送货地点示意图”中的坐标轴的长度有误,需要修正,具体操作为:把坐标轴的坐标乘以5;2)由表3 “ 相互到达信息”利用excel处理可以得到送货点之间的可以互相到达的送货点的关系。见附录表3-1;3)通过附录表1和表2“50个送货位置点的坐标”可以算出50个送货点之间可以互相达到的距离。见附录表3-2;4)对于“130号货物”所送到的“送到地点”和所有的货物的体积和重量的和.见表3-3;5)对表一“各货物号信息表”按其送货点进行排序,然后对其整理后分成表3-4(v1v20个送货点),3-5(v21 v50货物的送货点)。 四 问题分析(1)目前,快递行业正蓬勃发展,为我们的生活带来更多方便。为了保证快件能够在指定的时间内和规范的条件下送达目的地,设计最快完成路线与方式成为了快递公司的首要之需。快递公司不但要求每一件货物需要在指定的时间内送达,而且还要使每个送货员送货的路线最短,因此,如何用最少的时间准时完成所有的任务是最重要的。在约束条件下,应确定圆满完成每天的送货,保证货物不因延误时间而耽误到客户的需要,这些都是我们需要考虑的问题。(2)为此我们必须制定合理的送货策略一个合理的送货策略是指送货员每天在有限的时间内,尽量多送货,使日送货量达到最大,让送货员在几个指定的送货点能最有效率的完成送货任务。每天要将所有的货物全部送到指定点,不能出现每天有未接到服务,而货品在邮局积压的情况。送货公司要尽量节约人力成本,从而使自己的利益最大化。送货安排要合理,不要出现送货点混乱和兜弯路的情况。根据这些合理性原则,我们需要给送货公司制定出在固定的送货点上安排好每个送货员的送货和运行线路,以及总的运行公里数,而且是需要的送货员尽可能少,总路线尽可能短。(3)题目中只从快递公司派出一个送货员,到任意未配送的送货点,然后将这个送货派到最近的未服务的送货点范围之内,且最大载重不超过50kg,货物体积不超过1立方米。在问题二中还必须使每一件货物在指定时间内送达。继续上述指派,直到各点总重量超过50kg或者体积超过1立方米。最后业务员返回快递公司,记录得到的可行行程(即路线)。对得到的可行的行程安排解中的每一条路径,计算路线是否最短,时间是否最少。即得到所需的最短路线。(4)通过以上分析,我们建立了“D-J模型”,“分析&递推模型”,“分区送货策略模型”。五 模型假设(1)假设送货车辆不会在半路抛锚,半路无塞车现象,即送货员送快递途中不受任何外界因素影响,且无需考虑送货员的工作时间与休息时间。(2)送货员到某送货点后必须把该送货点的快件送完。(3)假定送货员最大载重50公斤,所带货物最大体积1立方米。(5)假设每个送货点的货物一次被送到,不会出现分批送到的情况。(6)假定每个业务员都的按照,送货员的平均速度为24公里/小时和每件货物交接花费3分钟,为简化起见,同一地点有多件货物也简单按照每件3分钟交接计算。(7)假设数据整理后无其他错误。 六 主要符号说明Ti:序号为i的货物号的快件重量Ni:表示为i个货物号vi:表示第i个送货地点(xi ,yi)序号为i的送货点的坐标ei:表示两个送货点的关系(见附录表3-1.)G=<V,E>:是一个简单图,V=ív0,v1,v2,vný集合V是图顶点集(代表系统的个体),E=íe1,e2,ený集合E是图的边集(代表系统个体之间的关系)A(G)=( ) n×n:称A(G)为G的邻接矩阵。简记为A。 其中:i,j=1,nWi:表示第i件货物的重量。Bi:表示第i件货物的体积MaxW:表示能够承受的最大的总重量,即MaxW=50公斤MaxB:表示能够承受的最大的总体积,即MaxB=1立方米K:表示人送货员在送货的过程中返回快递公司的次数 七 模型建立与求解7.1.问题一:分析:由于表3-3可以知道,前30件货物的重量和体积都不会超过送货员所承受的最大载重,所以假设送货一次性把30件货物都带上。11.例如:(为了计算的方面先用一些较小和较少的数据代替)有如下的v0v16的送货点,其中ei表示两个送货点之间的关系。 1-1:Dijkstra算法是求最短路径最常用也是最有效的方法,但是它只能求从某一顶点到其余各顶点的最短路径。而实际生活中的送货往往出现由某一快递公司送往多个送货地点后再返回快递公司的情况,对于这种情况,就得重复多次用Dijkstra算法,计算起来比较复杂。1962年Floyd提出了求任意两点间最短距离的算法,但是当地址比较多时,也是比较复杂的,而且也很难计算出回路的最短距离。通过研究对这类由快递公司到多个送货点然后返回原地的最短路径选取作简单的探讨。由于图1可以知道:1)求出v0到v7的最短距离为76千米, v0到v9的最短距离为6.6千米,v0到v12的最短距离为9.1千米,v0到v15的最短距离为11.5千米。2)仍用Dijkstra算法计算到v7到v9、v12、v15的最短距离;然后再求到v7最短距离的点(v9、v12、v15中的点)到其他两点的距离,然后求剩下两点的最短距离。3)根据排列组合原理计算从v0到路经各站点回到原点的最短距离。同样的道理,把50个送货点看做是题目中的V(v1,v2-v50),由附录表3-1.可以得到E(e1,e2.-e76)。用同样的方法计算,可以明显看到计算量超级大,无法计算得到。这是因为此算法用于求给定两点间的最短距离比较方便,例如送快递过程中只要将货物从快递公司送到指定送货点然后返回,但对于多个送货点最短路径的求解就比较繁琐了,本研究过程涉及了30个送货站。所以不单独采用Dijkstra算法。来源:() - 数学建模的题目:送货路线设计问题_忘尘_新浪博客 2-2用Kruskal算法计算:Kruskal算法的要点是在与已选取的边中不构成回路的边选取最小者,图2黑线部分即为最小生成树。 计算过程见表l: 此时恰巧必经站点在一条通路上,根据抄近路法连接,根据抄近路法连接v14、v15,如图2即走v0,v2v6v7v13v14v15v12v8v9v5v3v0全程共长271千米。Kruskal算法计算起来比Dijkstra算法要简单的多,但是误差比较大如图2即走全程共长271千米。所以也不适合直接采用Kruskal算法来计算。3-3采用“D-J模型”指的是:Dijkstra算法和Kruskal算法相结合求解3-1算法步骤:1)求出到v0,v9,v12,v15的最短距离和次最短距离点,此时v0到v9 的最短距离为66千米,到v7 的最短距离为72千米,分别为最短距离点和次最短距离点,从而确定起始第一站和最后一站。并且根据表2可得应走v0,v1,v7和v9, v5,v3, v0. 2)将图1划分成两部分,如图3,在下版图中只有只有v7,v8,v9,v11,v12,v13,v14,v15,v16等9个点,因为v15是必经点,故以v15为起始点,根据Kruskal算法制造一棵最小生成树如图4,此时根据实际情况有两种选择方案。 (1)根据抄近路法连接V14,v15,则所走的路径为v0,v1,v7,v13,v14,v15,v12,v8,v9,v5,v3,v0,总长为6.6+7.2+13.7=26.7千米。(2)选择走回头路,因为v12,v15都为必经点,又是临近点,故可以考虑走回头路,即v0,v1,v7,v13,v14,v15,v12,v8,v9,v5,v3,v0,总长为6.6+7.2+12.9=26.7千米。按照路径较短应选(1)就是应该走v0,v1,v7,v13,v14,v15,v12,v8,v9,v5,v3,v0,总长为26.7千米。事实上,从v0经过v7,v9,v12,v15返回的过程中最短的路线就是v0,v1,v7,v13,v14,v15,v12,v8,v9,v5,v3,v0,故此误差最小,几乎为0.且把图划分为两部分后,计算起来就简单多了。用同样的方法计算出最短的路线为: 因此,送货员所走过的总路程:56271.14573米行走所需要的时间:2.3446小时货物交接总时间:1.5小时送完全部货物所需时间:3.8446小时 1.2利用“分析&递推模型” 1-1:要送前30件物品时,由表3-3可以知,最起码只要经过固定的送货点。Step1:分析:这样如果只是从这些固定点出发,这样可以避免了浪费无关的送货点的时间。这样把从表面上看,送货员所走的路程花的时间会相对短些。但是如果只是这些固定点有没有可能构成一个通路呢?Step2:如果满足Step1,才进行Step3的;否则就没有必要进行下去。Step3:利用递推的方法,如果要走完所有的送货点,只要每个都是最短的,那么就能满足。若F(n-1)表示前n个ei的和是最小的,同时en(表示n条边的长度)也是最小的,那么F(n)就必然是最小的。由于表3-3可以知道,推算一下就可以很快的得出路线: 送货员所走过的总路程:60045.52405米行走所需要的时间:2.501896835小时货物交接总时间:1.5小时送完全部货物所需时间:4.001896835小时 综合以上模型可以得出,需要的最短时间为:3.8446小时来源:() - 数学建模:这样写合理吗_忘尘_新浪博客