? ¡Bienvenido! Esta es una base de código que acompaña al documento REEVO: modelos de idiomas grandes como hiperheurísticas con evolución reflectante .
¡Dale a Reevo 5 minutos y obtenga un algoritmo de última generación a cambio!
Introducimos la hiperheurística del lenguaje (LHHS) , una variante emergente de hiperheurística (HHS) que aprovecha los LLM para la generación heurística, con una intervención manual mínima y espacios heurísticos abiertos .
Para empoderar a los LHHS, presentamos la evolución reflectante (Reevo) , un marco de búsqueda genérico que emula el enfoque de diseño reflexivo de los expertos humanos al tiempo que supere mucho las capacidades humanas con su inferencia escalable LLM, conocimiento de dominio a escala de Internet y una poderosa búsqueda evolutiva.
Podemos mejorar los siguientes tipos de algoritmos:
Sobre los siguientes problemas:
Con configuraciones de caja negra y de caja blanca.
./outputs/main/
de forma predeterminada../problems/*/test.ipynb
. Puede instalar las dependencias anteriores a través de pip install -r requirements.txt
.
Dependencias específicas del 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
Echa un vistazo ./cfg/
para obtener más opciones.
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 defecto:
f"./problems/YOUR_PROBLEM/gpt.py"
, y se importará a ./problems/YOUR_PROBLEM/eval.py
(por ejemplo, para Tsp_aco), que se llama reevo._run_code
durante ReEVO ../problems/YOUR_PROBLEM/eval.py
(por ejemplo para TSP_ACO) debe imprimir el valor meta-objeto como la última línea de stdout, que se analiza por reevo.evaluate_population
para la evaluación heurística. Use el parámetro CLI llm_client
para designar un proveedor de API LLM, y llm_client.model
para determinar el modelo a usar. Por ejemplo,
$ export LLAMA_API_KEY=xxxxxxxxxxxxxxxxxxxx
$ python main.py llm_client=llama_api llm_client.model=gemma2-9b
Los proveedores y modelos de API LLM compatibles incluyen (tenga en cuenta que solo se admiten modelos de chat):
Si encuentra alguna dificultad para usar nuestro código, ¡no dude en enviar un problema o contáctenos directamente!
También estamos en Slack si tiene alguna pregunta o desea discutir Reevo con nosotros. Estamos abiertos a colaboraciones y me encantaría saber de ti
Si encuentra útil nuestro trabajo (o si es tan amable de ofrecernos algo de aliento), considere darnos una estrella y citar nuestro trabajo.
@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} }
}
Estamos muy agradecidos con Yuan Jiang, Yining MA, Yifan Yang y Ai4co Community por valiosas discusiones y comentarios.
Además, nuestro trabajo se basa en los siguientes proyectos, entre otros: