? Accueillir! Il s'agit d'une base de code qui accompagne l'article Reevo: Modèles de grande langue comme une hyper-héuristique avec une évolution réfléchissante .
Donnez à Reevo 5 minutes et obtenez un algorithme de pointe en retour!
Nous introduisons l'hyper-heuristique du langage (LHHS) , une variante émergente de l'hyper-heuristique (HHS) qui exploite les LLM pour la génération heuristique, comportant une intervention manuelle minimale et des espaces heuristiques ouverts .
Pour responsabiliser les LHH, nous présentons l'évolution réfléchissante (Reevo) , un cadre de recherche générique qui émule l'approche de conception réfléchissante des experts humains tout en dépassant beaucoup les capacités humaines avec son inférence LLM évolutive, ses connaissances du domaine à l'échelle d'Internet et sa puissante recherche évolutive.
Nous pouvons améliorer les types d'algorithmes suivants:
Sur les problèmes suivants:
avec les paramètres à la boîte noire et à la boîte blanche.
./outputs/main/
par défaut../problems/*/test.ipynb
. Vous pouvez installer les dépendances ci-dessus via pip install -r requirements.txt
.
Dépendances spécifiques au problème:
tsp_aco(_black_box)
: pytorch, scikit-learncvrp_aco(_black_box)
/ mkp_aco(_black_box)
/ op_aco(_black_box)
/ NCO
: pytorchtsp_gls
: Numba == 0,58 # e.g., for tsp_aco
python main.py
problem=tsp_aco # problem name
init_pop_size=4 # initial population size
pop_size=4 # population size
max_fe=20 # maximum number of heuristic evaluations
timeout=20 # allowed evaluation time for one generation
Découvrez ./cfg/
pour plus d'options.
tsp_aco
, tsp_aco_black_box
, tsp_constructive
, tsp_gls
, tsp_pomo
, tsp_lehd
cvrp_aco
, cvrp_aco_black_box
, cvrp_pomo
, cvrp_lehd
bpp_offline_aco
, bpp_offline_aco_black_box
, bpp_online
mkp_aco
, mkp_aco_black_box
op_aco
, op_aco_black_box
dpp_ga
./cfg/problem/
../problems/
../prompts/
.Par défaut:
f"./problems/YOUR_PROBLEM/gpt.py"
, et sera importée dans ./problems/YOUR_PROBLEM/eval.py
(par exemple pour TSP_ACO), qui est appelée par reevo._run_code
pendant Reevo ../problems/YOUR_PROBLEM/eval.py
(par exemple pour TSP_ACO) devrait imprimer la valeur de méta-objectif comme la dernière ligne de stdout, qui est analysée par reevo.evaluate_population
pour l'évaluation heuristique. Utilisez le paramètre CLI llm_client
pour désigner un fournisseur API LLM, et llm_client.model
pour déterminer le modèle à utiliser. Par exemple,
$ export LLAMA_API_KEY=xxxxxxxxxxxxxxxxxxxx
$ python main.py llm_client=llama_api llm_client.model=gemma2-9b
Les fournisseurs et les modèles d'api LLM pris en charge incluent (noter que seuls les modèles de chat sont pris en charge):
Si vous rencontrez une difficulté à utiliser notre code, n'hésitez pas à soumettre un problème ou à nous contacter directement!
Nous sommes également sur Slack si vous avez des questions ou si vous souhaitez discuter de Reevo avec nous. Nous sommes ouverts aux collaborations et nous aimerions avoir de vos nouvelles
Si vous trouvez notre travail utile (ou si vous avez la gentillesse de nous offrir des encouragements), envisagez de nous donner une étoile et de citer notre article.
@inproceedings { ye2024reevo ,
title = { ReEvo: Large Language Models as Hyper-Heuristics with Reflective Evolution } ,
author = { Haoran Ye and Jiarui Wang and Zhiguang Cao and Federico Berto and Chuanbo Hua and Haeyeon Kim and Jinkyoo Park and Guojie Song } ,
booktitle = { Advances in Neural Information Processing Systems } ,
year = { 2024 } ,
note = { url{https://github.com/ai4co/reevo} }
}
Nous sommes très reconnaissants à Yuan Jiang, Yining MA, Yifan Yang et à la communauté AI4CO pour des discussions et des commentaires précieux.
De plus, notre travail est construit sur les projets suivants, entre autres: