实例描述
配送中心数为 1 1 1,客户数 k k k为 8 8 8,车辆总数 m m m为 2 2 2;车辆载重皆为 8 8 8 吨;各客户点需求为 g ( i = 1 , 2 , . . . , 8 ) g(i = 1, 2, ... , 8) g(i=1,2,...,8)(单位为吨),已知客户点与配送中心的距离如表 1 1 1(其中 0 0 0 表示中心仓库),要求合理安排车辆的运输路线,使总运输里程最小。
客户点与配送中心的距离表
cij | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|---|
0 | 0 | 4 | 6 | 7.5 | 9 | 20 | 10 | 16 | 8 |
1 | 4 | 0 | 6.5 | 4 | 10 | 5 | 7.5 | 11 | 10 |
2 | 6 | 6.5 | 0 | 7.5 | 10 | 10 | 7.5 | 7.5 | 7.5 |
3 | 7.5 | 4 | 7.5 | 0 | 10 | 5 | 9 | 9 | 15 |
4 | 9 | 10 | 10 | 10 | 0 | 10 | 7.5 | 7.5 | 10 |
5 | 20 | 5 | 10 | 5 | 10 | 0 | 7 | 9 | 7.5 |
6 | 10 | 7.5 | 7.5 | 9 | 7.5 | 7 | 0 | 7 | 10 |
7 | 16 | 11 | 7.5 | 6 | 7.5 | 9 | 7 | 0 | 10 |
8 | 8 | 10 | 7.5 | 15 | 10 | 7.5 | 10 | 10 | 0 |
各客户点需求
g1 | g2 | g3 | g4 | g5 | g6 | g7 | g8 |
---|---|---|---|---|---|---|---|
1 | 2 | 1 | 2 | 1 | 4 | 2 | 2 |
运行结果
【Attention】下图并非最优结果,只是为了测试程序的正确性。可以尝试加大次数改良结果。
遗传算法分析
顾名思义,遗传算法是根据遗传规律写的一个算法,但是相比于医学中的遗传来讲,这里讲的遗传算法原理相对简单很多。
遗传算法的核心有三个部分:交叉、变异、轮盘赌。
解决问题的关键和难点就是理解遗传算法的作用:通过改变交叉和变异改变基因特性,导致个体发生改变,从而影响到适应度,最后利用轮盘赌的方式淘汰掉一些个体。
看一下整个程序的运行流程:
45273618 2815