alns
est une implémentation générale, bien documentée et testée de la métaheuristique de recherche adaptative à grand voisinage (ALNS) en Python. ALNS est un algorithme qui peut être utilisé pour résoudre des problèmes d’optimisation combinatoire difficiles. L'algorithme commence par une solution initiale. Ensuite, l'algorithme itère jusqu'à ce qu'un critère d'arrêt soit satisfait. A chaque itération, un opérateur de destruction et de réparation est sélectionné, qui transforme la solution actuelle en solution candidate. Cette solution candidate est ensuite évaluée par un critère d'acceptation, et le schéma de sélection d'opérateur est mis à jour sur la base du résultat de l'évaluation.
alns
Le package alns
dépend de numpy
et matplotlib
. Il peut être installé de la manière habituelle comme
pip install alns
De plus, pour permettre des schémas de sélection d'opérateurs plus avancés utilisant des algorithmes de bandit multi-armés, alns
peut être installé avec la dépendance facultative MABWiser :
pip install alns[mabwiser]
La documentation est disponible ici. Si vous êtes nouveau dans les métaheuristiques ou l'ALNS, vous pourriez bénéficier de la lecture de la page d'introduction à l'ALNS.
La bibliothèque alns
fournit l'algorithme ALNS et divers critères d'acceptation, schémas de sélection des opérateurs et critères d'arrêt. Pour résoudre votre propre problème, vous devez fournir les éléments suivants :
objective()
.Un modèle de code « quickstart » est disponible ici.
Nous fournissons plusieurs exemples de cahiers montrant comment la bibliothèque ALNS peut être utilisée. Ceux-ci incluent :
Enfin, le carnet de fonctionnalités donne un aperçu des différentes options disponibles dans le package alns
. Dans le cahier, nous utilisons ces différentes options pour résoudre un problème de sac à dos jouet 0/1. Le cahier est un bon point de départ lorsque vous souhaitez utiliser vous-même différents schémas, critères d'acceptation ou d'arrêt. Il est disponible ici.
Nous sommes très reconnaissants pour toute contribution que vous êtes prêt à apporter. Veuillez jeter un oeil ici pour commencer. Si vous envisagez d'apporter un changement important, il est utile d'en discuter d'abord dans un nouveau numéro GitHub. N'hésitez pas à en ouvrir un !
N'hésitez pas à ouvrir un problème ou un nouveau fil de discussion ici sur GitHub. Veuillez ne pas nous envoyer de questions, de problèmes de modélisation ou d'exemples de code par e-mail. Il est beaucoup plus facile d’en discuter via GitHub que par e-mail. Lorsque vous rédigez votre problème ou votre discussion, veuillez suivre les instructions ici.
alns
Si vous utilisez alns
dans vos recherches, pensez à citer l'article suivant :
Wouda, NA et L. Lan (2023). ALNS : une implémentation Python de la métaheuristique de recherche adaptative dans un grand quartier. Journal des logiciels open source , 8(81) : 5028. https://doi.org/10.21105/joss.05028
Ou, en utilisant l'entrée BibTeX suivante :
@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 }
}