改进差分进化算法求解容量受限的车辆路径问题

01 CVRP数学模型


CVRP数学模型可以表示为:

图片


图片

02 算法设计思路


差分进化算法是一种具有记忆个体最优解种群内部信息共享的特点的新型进化算法,本质上可看做是一种基于实数编码的、具有保优思想的贪婪遗传算法。


编码与解

编码方式采用简单直观的序号编码。顾客点序号集为{1,2,…,n},车场序号为0,车辆数目为k 。编码结构为:  ,是由顾客点序号集{1,2,…,n}和(k - 1) 个0 任意组合而成的。其中(k - 1) 个0 的加入是为了区分不同车辆的行驶路线。


解码方式为:

(1)在每条编码的两头各加一个0

(2)依次遍历每条编码,将编码中被0 隔开的每段非0序列保存,即为一辆车的访问路径。每条编码可解码出1 至k 辆车的路径来。以9 个顾客点,5 辆车为例,编码X=(0,1,2,3,0,0,4,5,6,0,7,8,9),解码出:(1,2,3),(4,5,6),(7,8,9)三段非0 序列,即此编码表示:动用了3 辆车,分别按照(1→2→3),(4→5→6),(7→8→9)的路线行驶。编码中不能出现负数、小数编码和非0 位位值重复等问题,即存在合法化问题。这也正是变异操作后需要进行的合法化处理的原因。


适应度函数

适应度函数按式(1)定义:使用车辆数Z1和所有车辆的总运行路线长度Z2加权和。权值系数k1 、k2的取值根据具体情况进行设置,即若优先考虑使用车辆数目少,则可设置k1>>k2;若优先保证车辆总行驶距离短,则可设置k1<<k2


种群初始化

为提高初始种群的质量,采用贪婪的初始化方法。对于初始种群的每个个体,产生方法如下:

步骤1 初始化待服务的顾客点列表List为包含所有顾客点序号的列表,已经服务顾客点列表SList为空。

步骤2 随机选择一个顾客点A作为起点,并将此点作为当前顾客点TSList,并从List移除

步骤3 从List中选择距离顾客点T最近的顾客点作为新的当前顾客点T,将T 插入SList,并从List 中移除

步骤4 判断List是否为空,若是,则转步骤5;若否,则转步骤3。

步骤5 将(K-1)个0 随机插入SList 序列中。

步骤6 判断SList是否满足所有的约束条件,若不满足,则跳至步骤1;若满足,则结束。


变异及其合法化处理

将随机选择的个体进行直接按位相加减,而后进行合法化处理。对于5个顾客点,2辆车的例子,随机选择3个个体:(1,0,2,3,0,4,5),(2,5,0,3,1,0,4),(5,3,1,0,0,4,2)。


当F=1时,按照  对每一位进行操作,得:vi= (-2,2,1,6,1,0,7) 。此时vi存在负数位和非0位值重复问题,为非法编码,需要合法化处理。


合法化处理过程

(1)提取编码vi中的0 并记录其位置。如果0值位超过车辆数,则只提取车辆数个0。此时,vi=(-2,2,1,6,1,7)。

(2)将提取过0的编码vi 从小到大排序,然后使用其序号代替原编码值。如:vi=(-2,2,1,6,1,7),排序后为:(-2,1,1,2,6,7)。从前到后依次:位值-2的序号为1,位值2的序号为4,依次类推进行合法化处理后的编码为(1,4,2,5,3,6)。

(3)将步骤(1)中提取出的0 重新插入编码。此时vi =(1,4,2,5,3,0,6)。


改进的贪婪顺序交叉

顺序交叉可以看做是带有不同修复程序的部分映射交叉PMX变形,能够较好地保留相邻关系、先后关系。改进主要是针对编码中0值位可能出现重复的问题,即在去掉已有基因时,从前往后进行删除,并且,已有基因中有几个0则删除几个0。其步骤如下:

步骤1 选切点c1 、c2 。

步骤2 交换中间部分。

步骤3 从第二个切点c2 后,第一个基因起列出原顺序,去掉已有基因(注意0 的个数)。

步骤4 从第二个切点c2 后,第一个位置起,将获得的无重复顺序填入。


算法总步骤

步骤1 初始化参数。令迭代次数t = 0 ,设置最大迭代

次数,种群规模NP,放缩因子F ,以及交叉常数CR 。

步骤2 贪婪初始化

步骤3 循环次数t=t+1。

步骤4 令目标个体索引号i=1 。

步骤5 在目标个体  之外随机选择另外3个不同的个体。

步骤6 执行变异操作,产生变异个体  。

步骤7 计算  的适应度,执行选择操作,若变异个体  优于目标个体   ,则跳转到步骤10;否则执行步骤8。

步骤8 对  和  执行交叉操作,产生交叉个体   。

步骤9 计算  的适应度,执行选择操作。

步骤10 目标个体索引号i=i+1,返回步骤5 直至i=NP;否则,执行步骤11。

步骤11 若迭代次数大于最大迭代次数,则循环结束

并输出计算结果;否则跳转到步骤3,继续下一次迭代。


图片

03 参考文献

[1]邬开俊,王铁君.基于改进差分进化的车辆路径优化算法[J].计算机工程与应用,2013,49(13):17-20.


猜你喜欢

转载自blog.51cto.com/15057852/2671031