? Bem-vindo! Esta é uma base de código que acompanha o artigo Reevo: grandes modelos de linguagem como hiper-heurísticos com evolução reflexiva .
Dê a Reevo 5 minutos e obtenha um algoritmo de última geração em troca!
Introduzimos hiper-heurísticas de linguagem (LHHs) , uma variante emergente de hiper-heurísticas (HHS) que aproveita o LLMS para a geração heurística, com intervenção manual mínima e espaços heurísticos abertos .
Para capacitar o LHHS, apresentamos a evolução reflexiva (Reevo) , uma estrutura de pesquisa genérica que emula a abordagem de design reflexivo de especialistas em humanos, além de superar as capacidades humanas com sua inferência escalável de LLM, conhecimento do domínio em escala na Internet e uma poderosa pesquisa evolutiva.
Podemos melhorar os seguintes tipos de algoritmos:
Sobre os seguintes problemas:
com as configurações de caixa preta e de caixa branca.
./outputs/main/
por padrão../problems/*/test.ipynb
. Você pode instalar as dependências acima via pip install -r requirements.txt
.
Dependências específicas do problema:
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
Confira ./cfg/
para mais opções.
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/
.Por padrão:
f"./problems/YOUR_PROBLEM/gpt.py"
e será importada para ./problems/YOUR_PROBLEM/eval.py
(por exemplo, para tsp_aco), que é chamado por reevo._run_code
durante o reevo ../problems/YOUR_PROBLEM/eval.py
(por exemplo, para tsp_aco) deve imprimir o valor meta-objetivo como a última linha de stdout, que é analisada por reevo.evaluate_population
para avaliação heurística. Use o parâmetro CLI llm_client
para designar um provedor de API LLM e llm_client.model
para determinar o modelo a ser usado. Por exemplo,
$ export LLAMA_API_KEY=xxxxxxxxxxxxxxxxxxxx
$ python main.py llm_client=llama_api llm_client.model=gemma2-9b
Os provedores e modelos de API LLM suportados incluem (observe que apenas os modelos de bate -papo são suportados):
Se você encontrar alguma dificuldade em usar nosso código, não hesite em enviar um problema ou entre em contato diretamente!
Também estamos no Slack se você tiver alguma dúvida ou quiser discutir Reevo conosco. Estamos abertos a colaborações e gostaríamos de ouvir de você
Se você achar útil nosso trabalho (ou se for tão gentil que nos ofereça algum incentivo), considere nos dar uma estrela e citar nosso artigo.
@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} }
}
Somos muito gratos a Yuan Jiang, Yining MA, Yifan Yang e AI4Co Community por discussões e feedback valiosos.
Além disso, nosso trabalho é construído sobre os seguintes projetos, entre outros: