配送问题模型 下载本文

内容发布更新时间 : 2024/11/8 0:11:48星期一 下面是文章的全部内容请认真阅读。

配送问题模型 一、摘要

本文通过给出运输公司为十个客户配送货物,从第i个客户到第j个客户的路线距离(单位公里),求出最短的路径,即最短路径法。

针对问题一、二,要求出第i个客户到第j个客户的最短路径。这个问题可以使用图论的方法解决。我们分别用1,2 ,…,10十个点表示从第i个客户到第j个客户的位置,再把所有的点对都用边连接起来,边(i,j)上赋以数值wij,它表示从第i个客户到第j个客户的距离。因此使用Dijkstra(迪杰斯特拉)算法求出这个问题的最优策略,得到最短距离。Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。

针对问题三,我们首先直接利用问题二得一辆车的最优回路,以货车容量为限定条件,建立相应的规划模型并设计一个简单的寻路算法,最终可为公司确定合理的一号运输方案:两辆车全程总和为295公里;然后建立线性规划模型得出二号运输方案:两辆车全程总和为290公里;最后再进一步优化所建的线性规划模型,为运输公司献上一个最优的决策即三号运输方案: 车号 行车路线 线路的长度 该车负责的客户 一号车 2,3,4,5,8 135公里 V1?V5?V2?V3?V4?V8?V9?V1 二号车 V1?V7?V6?V9?V10?V1 145公里 6,7,9,10 两辆车全程总和为280公里。 针对问题四,我们首先用Dijkstra算法确定提货点到每个客户点间的最短路线,然后结合一些限定条件建立一个目标模型,设计一个较好的解决方案进行求解可得到一种很理想的运输方案: 车号 行车路线 车号 行车路线 一号车 三号车 V1?V5?V2 V1?V7?V6 二号车 V1?V4?V3?V8 四号车 V1?V9?V10 该方案得到运输总费用是645元。 关键词:Dijkstra(迪杰斯特拉)算法 最短路径

二、问题重述

某运输公司为10个客户配送货物,假定提货点就在客户1所在的位置,从第i个客户到第j个客户的路线距离(单位公里)用下面矩阵中的(i,j)(i,j?1,?,10)位置上的数表示(其中?表示两个客户之间无直接的路线到达)。

1?0?50?????40?25?6??7?30?8??9?20?10??351234523456730?505510891050?4025?030?355030015?30?150453015?4506050303060025?50?10250602520305530??40?152520104520?60图(一)

?50??60????25?60??204065?30?55?

?5535??304560??010??45020???300??

分别解决以下问题:

1、运送员在给第二个客户卸货完成的时候,临时接到新的调度通知,让他先给客户10送货,已知送给客户10的货已在运送员的车上,请帮运送员设计一个到客户10的尽可能短的行使路线(假定上述矩阵中给出了所有可能的路线选择)。

2、现运输公司派了一辆大的货车为这10个客户配送货物,假定这辆货车一次能装满10个客户所需要的全部货物,请问货车从提货点出发给10个客户配送完货物后再回到提货点所行使的尽可能短的行使路线?对所设计的算法进行分析。

3、现因资源紧张,运输公司没有大货车可以使用,改用两辆小的货车配送货物。每辆小货车的容量为50个单位,每个客户所需要的货物量分别为8,13,6,9,7,15,10,5,12,9个单位,请问两辆小货车应该分别给那几个客户配送货物以及行使怎样的路线使它们从提货点出发最后回到提货点所行使的距离之和尽可能短?对所设计的算法进行分析。

4、如果改用更小容量的车,每车容量为25个单位,但用车数量不限,每个客户所需要的货物量同第3问,并假设每出一辆车的出车费为100元,运货的价格为1元/公里(不考虑空车返回的费用),请问如何安排车辆才能使得运输公司运货的总费用最省?

四、 问题分析

对于问题一,它是在运送员给第二个客户卸货完成的时候,才临时接到新的调度通知,让他先给客户10送货,并且送给客户10的货已在运送员的车上,为了帮运送员设计一个到客户10的尽可能短的行驶路线。所以,可以考虑用图论的方法来解决。在这里,我们分别用1,2,…,10十个点表示这十个客户所在的位置,并根据矩阵中的信息将其有路线的点连接起来,边(i,j)(i,j=1,2,…,10)上赋予数值wij它表示从第i个客户到第j个客户的总路程。因此我们可以画出运送员的路线选择图,再运用Dijkstra算法求出这个问题的最短的行驶路线。

对于问题二,它所要求的是货车从提货点出发给10个客户配送完货物后再回到提货点所行驶的尽可能短的行驶路线。因此可以类似地运用问题一的解决方法来进行求解。 方案一: 方案二:

???s?{1},s?{2,3,?,10}?l1)?0 ?(?l?w?2515?(5)????s?{7},s?{2,3,4,6,8,9,10}?l7)?0 ?(???s?{1},s?{2,3,?,10}?l1)?0 ?(?l?w?2515?(5)????s?{5},s?{2,3,4,6,7,8,9,10}?l5)?0 ?(??l(6)?w76?25????s?{6},?s?{2,3,4,8,9,10}?l6)?0 ?(?l(3)?w63?30????s?{3},?s?{2,4,8,9,10}?l3)?0 ?(?l(4)?w34?15????s?{4},?s?{2,8,9,10}?l ?(4)?0?l(8)?w48?20?????s?{8},s?{2,9,10}?l8)?0 ?(?l(9)?w89?10????s?{9},?s?{2,10}?l9)?0 ?(?l(10)?w9.10?20???l(7)?w57?10????s?{6},?s?{2,3,4,8,9,10}?l6)?0 ?(?l(4)?w64?30????s?{4},?s?{2,3,8,9,10}?l?(4)?0 ?l(3)?w43?15????s?{3},?s?{2,8,9,10}?l?(3)?0 ?l(8)?w38?25????s?{8},?s?{2,9,10}?l8)?0 ?(?l(9)?w89?10????s?{9},?s?{2,10}?l?(9)?0 ?l(10)?w9.10?20? ??

?s?{10},s?{2}?

l10)?0 ?(

?l?w?20

10.2

?(2)?

???s?{2},s?{1}?l2)?0 ?(?l?w?5021?(1)???

?s?{10},s?{2}?

l10)?0 ?(

?l?w?20

10.2

?(2)?

???s?{2},s?{1}?l2)?0 ?(?l?w?5021?(1)?根据方案一,尽可能短的路线为:

1?5?7?6?3?4?8?9?10?2?1;

L总=25+10+25+30+15+20+10+20+20++50=225

根据方案二,尽可能短的路线为:

1?5?7?6?4?3?8?9?10?2?1;

L总=25+10+25+30+15+25+10+20+20++50=230 因此,方案一的路径小于方案二,故采用方案二。 对于问题三: 对于问题四:

四、模型假设

(1)假定图(一)矩阵中给出了所有可能的路线选择; (2)wij它表示从第i个客户到第j个客户的总路程 (3) ?表示两个客户之间无直接的路线到达; (4) 针对问题四,不考虑空车返回的费用;

五、模型的建立与求解

问题一求解:

60 30 50 40 55 65 35 60 40 20 1 2 35 3 4 5 6 7 8 9 10 50 30 15 45 60 25 30 10 2 55 25 10 30 45 3010 30 20 35 50 55 60 50

图(二)

根据Dijkstra算法求出这个问题的最优策略,过程如下:

???s?{2},s?{3,4,?,10}?l2)?0?(?l?w?30?(3)23?

???s?{2,3},s?{4,5,?,10} ??l4)?l(3)?w34?45?(???s?{2,3,4},s?{5,6,?,10} ??l5)?w25?35?(???s?{2,3,4,5},s?{6,7,8,9,10} ??l6)?w26?50?(???s?{2,3,4,5,6},s?{7,8,9,10} ??l7)?l(5)?w57?35?10?45?(???s?{2,3,4,5,6,7},s?{8,9,10} ??l8)?l(3)?w38?30?25?55?(???s?{2,3,4,5,6,7,8},s?{9,10} ??l9)?l(8)?w89?65?(