1、二号车145公里6,7,9,10针对问题四,我们首先用Dijkstra算法确定提货点到每个客户点间的最短路线,然后结合一些限定条件建立一个目标模型,设计一个较好的解决方案进行求解可得到一种很理想的运输方案:三号车四号车该方案得到运输总费用是645元。关键词; Dijkstra算法 枚举法 逐次逼近法1.问题重述运输问题关心的是以最低的总配送成本把供应中心(出发地)的任何产品运送到每一个接收中心(目的地)。每一个出发地都有一定供应量配送到目的地,每一个目的地都需要一定的需求量。每一个出发地都有一个固定的供应量, 所有的供应量都必须配送到目的地。与之类似,每一个目的地都有一个固定的需求量, 整个需
2、求量都必须由出发地满足。某运输公司为10个客户配送货物,假定提货点就在客户1所在的位置,从第i个客户到第j个客户的路线距离(单位公里)用下面矩阵中的位置上的数表示(其中表示两个客户之间无直接的路线到达)。1、 运送员在给第二个客户卸货完成的时候,临时接到新的调度通知,让他先给客户10送货,已知送给客户10的货已在运送员的车上,请帮运送员设计一个到客户10的尽可能短的行使路线(假定上述矩阵中给出了所有可能的路线选择)。2、 现运输公司派了一辆大的货车为这10个客户配送货物,假定这辆货车一次能装满10个客户所需要的全部货物,请问货车从提货点出发给10个客户配送完货物后再回到提货点所行使的尽可能短的
3、行使路线?对所设计的算法进行分析。3、 现因资源紧张,运输公司没有大货车可以使用,改用两辆小的货车配送货物。每辆小货车的容量为50个单位,每个客户所需要的货物量分别为8,13,6,9,7,15,10,5,12,9个单位,请问两辆小货车应该分别给那几个客户配送货物以及行使怎样的路线使它们从提货点出发最后回到提货点所行使的距离之和尽可能短?4、 如果改用更小容量的车,每车容量为25个单位,但用车数量不限,每个客户所需要的货物量同第3问,并假设每出一辆车的出车费为100元,运货的价格为1元/公里(不考虑空车返回的费用),请问如何安排车辆才能使得运输公司运货的总费用最省?2.问题分析2.1对问题一的分
4、析运送员到客户10的最短路程,首先运用数据分析,得到各个客户之间的连通图,并且将第二个用户分别假设为2、3、4、5、6、7、8、9,再运用穷举法对所给路线进行最优选择,通过Lingo软件计算出各个不同客户到客户10的最短路。2.2对问题二的分析本文结合第一问,将双目标规划简化为单目标规划,首先运用逐次逼近法对所给数据进行分析,通过逐次筛选,获得最短的出发路线,然后将最后一个目的地看做起始点,以始发地看做目的地,求得其最短路程。2.3对问题三的分析对于问题三我们先通过常归思维去分析问题,得到的一号运输方案并与后面建模得到二、三号运输方案比较,两者相差不大,随后本文运用逐步筛选的算法,得到最优路线
5、。同时,这正说明了我们设计的算法是比较符合实际的,准确性是比较高的。2.4对问题四的分析对于问题四本文设计一个算法来解决问题,得到相应的结果验证了我们算法是可行的也是可靠的,但是局限性好大,也许这一算法仅适用于这类问题,不过我们将会尽最大努力地改进。3.问题假设(1) 每个出发地都有一定的供应量配送到目的地;(2) 每个目的地都有一个固定的需求量;(3) 从出发地到任何一个目的地的运送成本固定;(4) 不考虑货物的装卸成本;(5) 不考虑货物在运输途中的损坏情况;4符号说明-从i点到j点5.模型分析与求解5.1针对问题一的模型建立与求解5.1.1最短路问题最短路问题是网络理论中最广泛的用法之一
6、,许多优化问题可以使用这个模型,如设备更新、管道铺设、线路安排、厂区布局等。最短路问题的动态规划问题,是解决某些比较困难最短路问题(如道路不能整齐分段者)构造动态规划方程,使用二图论方法比较有效。最短路问题的一般提法如下:设G=(V,E)为连通图,图中各边()有权(=表示间无边)为图中任意两点,求一条道路,使它是从到的所有路中总权最小的路。即:最小。有些最短路问题也可以是求网格中某指定点道奇余所有节点的最短路,或求网络中任意两点间的最短路。下面我们介绍三种算法,可分别用于求解这几种最短路问题。.5.1.2模型建立与求解根据原数据求得各个客户之间的路线图;图1、各个客户之间的路线图根据题目可知运
7、送员是在给第二个客户卸货完成的时候,而客户1被假设为提货点,因此本文将客户1作为第二个客户的可能性排除。由上图各个客户的路线图分析可得;以下三类情况。建立模型如下;(1)由客户2到客户10,共有5种路线,如下图:由客户4到客户10,有一种,如下图;由客户7到客户10,有两种,如下图;由图分析可知:假设由客户2出发则到达客户10时,最短路为2-3-8-9-10,总路程为85;同理可知,假设由客户3出发则到达客户10时,最短路为3-8-9-10,总路程为55;假设由客户4出发到达客户10,最短路为4-8-9-10;总路程为50;假设由客户5出发到达客户10,最短路为5-10,总路程为55;假设由客
8、户6出发到达客户10,最短路为6-9-10,总路程为55;假设由客户7出发到达客户10,最短路为7-10,总路程为60;假设由客户8出发到达客户10,最短路8-9-10;总路程为30;假设由客户9出发到达客户10,最短路为9-10,总路程20;5.1.3模型检验Dijkstra(迪杰斯特拉)算法是图论中确定最短路的基本方法,也是其它算法的基础。为了求出赋权图中任意两结点之间的最短路径,通常采用两种方法。一种方法是每次以一个结点为源点,重复执行Dijkstra算法n次。另一种方法是由Floyd于1962年提出的Floyd算法,其时间复杂度为,虽然与重复执行Dijkstra算法n次的时间复杂度相同
9、,但其形式上略为简单,且实际运算效果要好于前者。Dijkstra算法基本步骤:令:并令:1、 对,求。2、 求得,使=令3、若则已找到到的最短路距离,否则令从中删去转1这样经过有限次迭代则可以求出到的最短路线,可以用一个流程图来表示:第一步 先取意即到的距离为0,而是对所赋的初值。第二步 利用已知,根据对进行修正。第三步 对所有修正后的求出其最小者。其对应的点是所能一步到达的点中最近的一个,由于所有。因此任何从其它点中转而到达的通路上的距离都大于直接到的距离,因此就是到的最短距离,所以在算法中令并从s中删去,若k=n则就是到的最短路线,计算结束。否则令回到第二步,继续运算,直到k=n为止。这样
10、每一次迭代,得到到一点的最短距离,重复上述过程直到。Floyd算法的基本原理和实现方法为:如果一个矩阵其中表示与间的距离,若与间无路可通,则为无穷大。与间的最短距离存在经过与间的和不经过两种情况,所以可以令,n(n为节点数)。检查与的值,在此,与分别为目前所知的到与到的最短距离,因此,就是到经过的最短距离。所以,若有,就表示从出发经再到的距离要比原来的到距离短,自然把到的重写成。每当一个搜索完,就是目前到的最短距离。重复这一过程,最后当查完所有时,就为到的最短距离。运用迪杰斯特拉方法,通过Lingo软件求解得到如下数据:(程序见附录)通过检验求得结果相同,因此可以证明以上答案;5.2针对问题二
11、的模型建立与求解5.2.1模型分析很明显运输公司分别要对10个客户供货,必须访问每个客户,但问题要求我们建立相应模型寻找一条尽可能短的行车路线,首先不考虑送货员把10个客户所需的货送完货后不返回提货点的情形,利用求最小生成树的prim算法结合题中所给的邻接矩阵,很快可以得到以下一棵最小生成树:15769843102 以上路线的总行程为175公里,充分利用问题一所建的模型(1),很快就可以求得(客户2)返回(提货点)的最线路是行程50公里(注:代用模型(1)时,需先将题中的邻接矩阵的第一行与第二行交换,第一列与第二列交换后参照附录1的代码可求解),我们有理由相信这样构成的回路实际上也是最短回路:
12、1000000000000该回路可描述为:总行程为225公里。这种寻路方法并不比其他方法差而且它的速度也很快,只是它局限于顶点数较少的情形,一旦顶点数扩大实现起来难度就会大大提高,而且它的不易推广,因此我们有必要对此问题深入研究,进而建立起一个数学模型以适应顶点数变化,使它能够具有较好的推广性,应用到现实生活中去来实现以不变应万变的现象。5.2.2模型建立与求解可建立问题的模型(2)为:同样借助数学软件求解可得结果:从中可以找出一条较为理想的回路是:可见按此模型求解的结果与采用prim算法求解的结果是一样的。5.2.3模型检验在程序设计中,有时会用到由若干个有限数据元素组成的集合,程序中某个变
13、量取值仅限于集合中的元素。此时,可将这些数据集合定义为枚举类型。因此,枚举类型是某类数据可能取值的集合:下面为运用枚举法求解所得到的数据;一种方式;第二种方式:通过总路程对比可知,两种方法所得数据相同,因此可以证明此结论正确;5.3针对问题三的模型建立与求解5.3.1模型的猜想用两辆容量为50单位的小货车运货,在每个客户所需固定货物量的情况下,要使得行程之和最短,我们假设每个客户的货物都由同一辆货车提供,这样只要找出两条尽可能短的回路,并保证每条线路客户总需求量在50个单位以内。实际上这样的两条回路是存在的:由题二得到了一条哈密顿回路可根据货物需求量的大小将其分为前后两部分,并将之分别构成回路。(注:由于提货点在客户1所在的位置,故不必考虑为客户1送货的情况。)(1)由此思想建立以下模型Step1:根据以下模型获得一个值k;Step2:依k的取值分两条路径:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1