【论文阅读】(2004)A simple and effective evolutionary algorithm for the vehicle routing problem


论文来源:(2004)A simple and effective evolutionary algorithm for the vehicle routing problem
作者:Christian Prins


摘要

车辆路径问题(VRP)在配送网络优化中发挥着核心作用。由于一些具有 75 个节点的经典实例抵制最佳精确解法,因此大多数研究人员专注于元启发式算法来解决现实生活中的问题。

与具有时间窗口的 VRP 相反,没有任何遗传算法 (GA) 可以与为 VRP 设计的强大禁忌搜索 (TS) 方法竞争。本文通过提出一种相对简单但有效的混合遗传算法来弥补这一差距。就平均求解成本而言,该算法在 14 个经典 ChristoJdes 实例上优于大多数已发布的 TS 启发式算法,成为 Golden 等人生成的 20 个大规模实例的最佳求解方法


一、介绍

Gendreau 等人 [5] 和 Golden 等人 [6] 为这个非常活跃的研究领域提供了两项出色的调查。他们表明,VRP 的最佳元启发式算法是强大的禁忌搜索 (TS) 算法,它很容易胜过其他元启发式算法,如模拟退火 (SA)、遗传算法 (GA) 和蚁群算法(ACO)。

Schmitt 在 ChristoJdes 等人 [4] 提出的 14 个经典实例上评估了他的 GA,结果令人失望:GA 很容易超越 Clarke 和 Wright 启发式,但无法与一些与最速下降改进相结合的建设性启发式竞争程序。

事实上,像 Gendreau [5] 这样的几位作者强调了 VRP 缺乏竞争性 GA。

这种情况似乎不正常,因为高效的 GA 既可用于更简单的问题,如旅行商问题或 TSP [12],也可用于扩展,如带时间窗口的 VRP 或 VRPTW [13,14]。

本文的目标是通过针对第 2 节中指定的 VRP 版本提出一个相对简单但有效的混合 GA 来纠正这种异常情况。第 3 节强调了对于 GA 效率至关重要的一些关键点。染色体及其评估在第 4 节中描述,而第 5、6、7 和 8 节分别致力于交叉、用作突变算子的局部搜索、群体结构和 GA 迭代。第 9 节介绍了计算评估。


二、处理的问题和假设

在这里插入图片描述


三、GA设计要点概述

我们的 DVRP GA 基于以下关键思想,在以下部分中开发:

  • 类似 TSP 的排列染色体,没有行程定界符。
  • 使用拆分过程的精确适应度计算。
  • 种群规模小,其中所有个体都是独特的。
  • 在初始群体中包含良好的启发式解决方案
  • 作为变异算子的改进过程(混合遗传算法)。
  • 种群尺寸增量管理
  • 主要探索阶段,然后是几次短暂的重启

四、染色体和评估

4.1 原则

与 TSP 的大多数 GA 一样,染色体只是 n n n 个客户端节点的序列(排列) S S S,没有行程分隔符。如果同一辆车一一执行所有行程,则可以将其解释为车辆必须拜访所有客户的顺序。与施密特(Schmitt)将 S S S 按顺序切割成行程相反,我们使用最佳分裂程序 Split(详见 4.2),以获得序列的最佳 DVRP 解决方案。

F ( S ) F(S) F(S) 是解决方案 S S S 的总成本。

这种方法首先由 Beasley [17] 提出,作为 VRP 的路线第一、集群第二启发式的第二阶段。第一阶段通过放宽车辆容量和最大旅游长度,为所有客户计算一个巨大的 TSP 旅游。除了证明一些最坏情况性能比的理论兴趣外,该方法从未取代更传统的 VRP 启发法。

GA 的情况不同。首先,存在至少一个最优染色体(考虑任何最优 DVRP 解决方案并连接其行程的节点列表)。其次,如果交叉产生这样一条染色体,那么总是可以用Split检索到相应的最优DVRP解。第三,寻找最佳染色体的任务留给了遗传算法的内在并行性。

4.2 算法

在这里插入图片描述

在这里插入图片描述

标签向量 P P P 与染色体一起保存,以便在 GA 结束时使用图 3 的算法提取 DVRP 解决方案。它最多可构建 n n n 个行程(最坏的情况是每个需求一辆车)。每次旅行都是一个客户列表,可能是空的。程序 enqueue 在行程结束时添加一个节点。实际使用的非空车次(或车辆)数由 t t t 给出。

在这里插入图片描述

4.3 其他目标函数的扩展

Split 非常灵活。下面的三个例子展示了如何处理更复杂的目标函数。在第两个示例中保持了 O ( n 2 ) O(n^2) O(n2) 时间复杂度。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


五、交叉

在这里插入图片描述

在这里插入图片描述


六、局部搜索作为变异算子

为了与 TS 或 SA 启发式竞争,经典的 GA 框架必须与某种改进程序混合,给出混合 GA 算法 [19]。对于 DVRP,我们通过用局部搜索过程 LS 替换简单的变异算子(例如移动或交换某些节点),很快获得了更好的结果。由于第 7 节中解释的分散技术,这不会导致过早收敛。

由 OX 产生的子 C 由 LS 以给定的概率 p m p_m pm 改进。 C 的节点序列首先使用算法 3 转换为 DVRP 解决方案。然后,LS 扫描下面列出的 O ( n 2 ) O(n^2) O(n2) 个邻域。更宽的邻域会增加 GA 运行时间而不会改善 Jnal 结果。小邻域就足够了,因为它们得到了遗传算法内在并行性的补偿:事实上,通过给定群体的交叉可以达到的解决方案定义了一种带来足够多样化的宽邻域。

LS 的每次迭代都在 O ( n 2 ) O(n^2) O(n2) 中扫描所有可能的不同节点对 ( u , v ) (u,v) (u,v)。这些节点可能属于同一个行程或不同的行程,其中之一可能是站点。对于每一对,测试以下简单动作。 x x x y y y u u u v v v 在各自行程中的后继者。

T ( u ) T(u) T(u) 是访问 u u u 的行程。

在这里插入图片描述
移动 7 对应于众所周知的 2-opt 移动,而移动 8-9 将 2-opt 扩展到不同的旅行。 LS 的每次迭代都停在第一个改进步上。然后修改解决方案并重复该过程,直到找不到进一步的保存。像 M1 这样的移动可以清空一个行程(这变成了一个简单的车站循环),但也可以在以后分配新的客户。这就是为什么仅在 LS 结束时才删除空行程的原因。成本为 λ ≤ F ( C ) \lambda \le F(C) λF(C) 的解决方案通过连接其行程转换为变异的染色体 M M M

拆分在所有情况下都应用于 M M M,因为它有时会更好地划分为相同序列的行程(注意 F ( m ) ≤ λ ≤ F ( C ) F(m) \le \lambda \le F(C) F(m)λF(C))。


七、种群结构和初始化

群体被实现为染色体的数组,总是按成本递增顺序排序,以简化第 8 节中描述的基本 GA 迭代

在这里插入图片描述
在这里插入图片描述


八、GA 迭代和由此产生的一般结构

8.1 基本迭代说明

父母是用二元锦标赛方法选出的,从种群中随机选择两条成本最低的染色体作为父母。

在这里插入图片描述

8.2 主阶段和重新开始

在这里插入图片描述


九、计算评估

9.1 实施和基准

在这里插入图片描述

9.2 常用遗传算法参数

第 3 节中列出的关键思想对于 GA 的良好性能至关重要。我们进行了一项长期研究,表明如果仅尝试以下更改之一,平均解决方案值会出现中度 (+) 或强烈 (++) 退化:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.3 Christoldes 实例的结果

在这里插入图片描述
在这里插入图片描述

9.4 大规模实例的结果

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


十、结论

  • 本文介绍了 VRP 的第一个混合 GA,能够在平均解决方案成本方面与强大的 TS 算法竞争。在 ChristoJdes 实例上,这个 GA 优于所有已发布的元启发式算法,除了一个。它成为 Golden 等人 [6] 生成的大规模实例可用的最佳算法。

  • 这些非常好的结果可以用一些关键特征来解释。通过使用少量不同的解决方案来防止由于局部搜索而可能出现的过早收敛。三种经典启发式方法提供了良好的起点。重启中使用的增量人口管理和部分替换技术加速了目标函数的下降。

  • 计算适应度的分裂算法允许像 TSP 一样的简单染色体和交叉。除了这些想法,GA 仍然相对简单。

  • 然而,有一点需要改进:GA 仍然比许多 TS 算法慢,尽管它比其中一些算法快。这个缺点部分来自于当前的实现(可以优化)和基于基本邻域的本地搜索,通常会占用 95% 的 CPU 时间。因此,我们现在的主要目标是在不牺牲平均求解成本的情况下加快局部搜索。我们还希望开发一种分散搜索并将其与 GA 进行比较,以量化随机化对解决方案成本和 CPU 时间的影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WSKH0929

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值