节约里程法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算例:节约里程法
以上一个二维码扫描算法算例为例,用节约里程法计算配送线路的安排。
解:① 首先根据上一个二维码扫描算法算例中的距离矩阵表计算出各点间的节约值矩阵表,如表1所示。
表1 节约值矩阵表
② 从表1中选出节约值最大值为23,其对应的两个顶点为5、6。5、6两处的需求量之和为8,未超过一辆车的运输能力14,因此,连接5、6成回路,即0—5—6—0。再将顶点5与6的节约值赋为0,结果如表2所示。
表2 节约矩阵表计算过程1
③ 从表2中再选出节约值最大值为20,其对应的两个顶点为7、8。7、8两处的需求量之和为7,未超过一辆车的运输能力14,因此,连接7、8成回路,即0—7—8—0。再将顶点7与8的节约值赋为0,结果如表3所示。
表3 节约矩阵表计算过程2
④ 从表3中再选出节约值最大值为16,其对应的两个顶点为5、8或6、8。如果连接5与8,则上述两条回路合并,其总需求量为15,超过一辆车的运输能力14,因此,5与8不能连接,同样6和8也不能连接,则将顶点5、8和6、8的节约值赋为0,结果如表4所示。
表4 节约矩阵表计算过程3
⑤ 从表4中再选出节约值最大值为15,其对应的两个顶点为4、6。如连接4与6,则形成:0—5—6—4—0回路,其总需求量为11,未超过一辆车的运输能力14,因此,连接4、6成新回路,即0—5—6—4—0。再将顶点4与6的节约值赋为0,同时,由于顶点6成为回路的中间点,则与顶点6相关的节约值都赋为0。表示顶点6不可能再与其他点相连,其结果如表5所示。
表5-33 节约矩阵表计算过程4
⑥ 按算法步骤迭代运算,直到节约值矩阵表中的值均为0时,迭代结束。最终的结果为:0—2—3—0,0—5—6—4—0,0—7—8—1—0这三条线路,其运输量分别为9、11、13,总里程数为93。
一般来说,节约里程法可以得到比较好的结果,但此算法也是一种贪婪启发式算法,对于一些特殊的算例,得不到最优解。上一个二维码中算例的全局最优解是:选择0—1—3—
0,0—2—7—8—0,0—5—6—4—0这三条线路,其运输量分别为11、11、11,总里程数为90。这个结果可用Lingo或其他优化软件求得。
对于VRP问题的求解,还有不少其他启发式算法,如蚁群算法,遗传算法等,在解决实际问题时,可同时使用几种算法,从中选取最好的结果。