我正在研究一个 2 级车辆路径问题 (2E-VRP),我想使用邻域搜索基础启发式:
- 我想知道变量邻域搜索(VNS)、大邻域搜索(LNS)和自适应大邻域搜索(ALNS)之间有什么区别。
- 我可以在 LNS 中定义多个破坏运算符吗?如果是,我应该在每次迭代时按顺序使用它们,还是随机选择其中一个?
- 同样在 ALNS 中,每次迭代中使用的所有销毁运算符还是根据其分数选择其中一个?
我正在研究一个 2 级车辆路径问题 (2E-VRP),我想使用邻域搜索基础启发式:
粗略地说,搜索邻域是指通过移动或搜索迭代可获得的不同解决方案。我相信当解决方案似乎陷入局部最优时,可变邻域搜索系统地增加了搜索邻域(即当一个小邻域不做任何事情时使邻域变大),而大邻域搜索有一个固定但大的搜索邻域(即邻域大小不变)。自适应大邻域搜索将有多个可能的邻域对应于不同的搜索操作——例如不同的破坏或构造启发式——并且会尝试了解哪个邻域是最好的。
我可以在 LNS 中定义多个破坏运算符吗?如果是,我应该在每次迭代时按顺序使用它们,还是随机选择其中一个?
我怀疑只是随机选择一个会更有效。
同样在 ALNS 中,每次迭代中使用的所有销毁运算符还是根据其分数选择其中一个?
ALNS 会根据其分数选择一个,但您可能仍然需要有非零概率选择任何运算符以使适应性起作用(因为您需要不时测试所有运算符)。