题目:
某运输公司为 10 个客户配送货物, 假定提货点就在客户 1 所在的位置, 从第 i 个客户到第 j 个客户的路线距离(单位公里) 用下面矩阵中的 (i , j)(i , j= 1,… ,10) 位置上的数表示(其中∞表示两个客户之间无直接的路线到达)。
1、 运送员在给第二个客户卸货完成的时候, 临时接到新的调度通知, 让他先给客户 10 送货, 已知送给客户 10 的货已在运送员的车上, 请帮运送员设计一个到客户 10 的尽可能短的行使路线(假定上述矩阵中给出了所有可能的路线选择)。
2、 现运输公司派了一辆大的货车为这 10 个客户配送货物, 假定这辆货车一次能装满 10 个客户所需要的全部货物, 请问货车从提货点出发给 10 个客户配送完货物后再回到提货点所行使的尽可能短的行使路线? 对所设计的算法进行分析。
3、 现因资源紧张, 运输公司没有大货车可以使用, 改用两辆小的货车配送货物。 每辆小货车的容量为 50 个单位, 每个客户所需要的货物量分别为 8, 13, 6, 9, 7, 15, 10, 4,12, 9 个单位, 请问两辆小货车应该分别给那几个客户配送货物以及行使怎样的路线使它们从提货点出发最后回到提货点所行使的距离之和尽可能短? 对所设计的算法进行分析。
4、 如果改用更小容量的车, 每车容量为 25 个单位, 但用车数量不限, 每个客户所需要的货物量同第 3 问, 并假设每出一辆车的出车费为 100 元, 运货的价格为 1 元/公里(不考虑空车返回的费用), 请问如何安排车辆才能使得运输公司运货的总费用最省?
解答:
1、第一问求从第二个客户到第十个客户的最短距离行驶路线,求各对顶点之间的最短路径,很自然就会想到Dijkstra和Floyd算法,但没必要这么复杂,MATLAB本身就提供了图论工具箱,为何不用呢,建模讲究的就是快准好,既然可以做,那就用吧,这里用的graphshort