alns
是 Python 中自适应大邻域搜索 (ALNS) 元启发式的通用、有据可查且经过测试的实现。 ALNS 是一种可用于解决困难的组合优化问题的算法。该算法从初始解决方案开始。然后算法迭代直到满足停止标准。在每次迭代中,都会选择一个破坏和修复算子,将当前解决方案转换为候选解决方案。然后通过验收标准评估该候选解决方案,并根据评估结果更新运营商选择方案。
alns
alns
包依赖于numpy
和matplotlib
。它可以按照通常的方式安装
pip install alns
此外,为了使用多臂老虎机算法启用更高级的算子选择方案,可以使用可选的 MABWiser 依赖项安装alns
:
pip install alns[mabwiser]
该文档可在此处获取。如果您不熟悉元启发式或 ALNS,您可能会从阅读 ALNS 页面的介绍中受益。
alns
库提供了 ALNS 算法和各种接受标准、算子选择方案和停止标准。为了解决您自己的问题,您应该提供以下信息:
objective()
函数的问题的解决方案状态。此处提供了“快速入门”代码模板。
我们提供了几个示例笔记本,展示了如何使用 ALNS 库。这些包括:
最后,功能笔记本概述了alns
包中可用的各种选项。在笔记本中,我们使用这些不同的选项来解决玩具 0/1 背包问题。当您想要自己使用不同的方案、接受或停止标准时,该笔记本是一个很好的起点。可以在这里找到。
我们非常感谢您愿意做出的任何贡献。请查看此处以开始使用。如果您打算进行重大更改,那么首先在新的 GitHub 问题中讨论该更改会很有帮助。随意打开一个!
请随意在 GitHub 上提出问题或新的讨论线程。请不要通过电子邮件向我们提出疑问、建模问题或代码示例。通过 GitHub 比通过电子邮件讨论这些内容要容易得多。撰写您的问题或讨论时,请按照此处的说明进行操作。
alns
如果您在研究中使用alns
,请考虑引用以下论文:
Wouda, NA 和 L. Lan (2023)。 ALNS:自适应大邻域搜索元启发式的 Python 实现。开源软件杂志,8(81):5028。https://doi.org/10.21105/joss.05028
或者,使用以下 BibTeX 条目:
@article { Wouda_Lan_ALNS_2023 ,
doi = { 10.21105/joss.05028 } ,
url = { https://doi.org/10.21105/joss.05028 } ,
year = { 2023 } ,
publisher = { The Open Journal } ,
volume = { 8 } ,
number = { 81 } ,
pages = { 5028 } ,
author = { Niels A. Wouda and Leon Lan } ,
title = { {ALNS}: a {P}ython implementation of the adaptive large neighbourhood search metaheuristic } ,
journal = { Journal of Open Source Software }
}