? Добро пожаловать! Это кодовая база, которая сопровождает документ Reevo: крупные языковые модели как гипергеристика с рефлексивной эволюцией .
Дайте Reevo 5 минут и получите современный алгоритм взамен!
Мы вводим языковую гипер-херистику (LHHS) , появляющийся вариант гипергеристики (HHS), который использует LLM для эвристического поколения, показывающего минимальное ручное вмешательство и открытые эвристические пространства .
Чтобы расширить возможности LHHS, мы представляем рефлексивную эволюцию (Reevo) , общую структуру поиска, которая эмулирует подход отражающего дизайна человеческих экспертов, в то же время превосходящие человеческие возможности с его масштабируемым выводом LLM, знанием доменов в интернете и мощным эволюционным поиском.
Мы можем улучшить следующие типы алгоритмов:
по следующим проблемам:
с настройками черной коробки и белой коробки.
./outputs/main/
по умолчанию../problems/*/test.ipynb
. Вы можете установить зависимости выше через pip install -r requirements.txt
.
Зависимости для конкретной проблемы:
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
Проверьте ./cfg/
для получения дополнительных вариантов.
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/
.По умолчанию:
f"./problems/YOUR_PROBLEM/gpt.py"
и будет импортирована в ./problems/YOUR_PROBLEM/eval.py
(например, для TSP_ACO), который называется reevo._run_code
во время рев. Полем./problems/YOUR_PROBLEM/eval.py
(например, для TSP_ACO) должен распечатать мета-объективное значение как последнюю строку stdout, которая проанализируется reevo.evaluate_population
для эвристики. Используйте параметр CLI llm_client
для обозначения поставщика API LLM и llm_client.model
, чтобы определить модель для использования. Например,
$ export LLAMA_API_KEY=xxxxxxxxxxxxxxxxxxxx
$ python main.py llm_client=llama_api llm_client.model=gemma2-9b
Поддерживаемые поставщики и модели API LLM включают (обратите внимание, что поддерживаются только модели чата):
Если вы столкнетесь с какими -либо трудностями, используя наш код, не стесняйтесь отправлять проблему или напрямую свяжитесь с нами!
Мы также находимся в Slack, если у вас есть какие -либо вопросы или вы хотите обсудить с нами Reevo. Мы открыты для сотрудничества и хотели бы услышать от вас
Если вы обнаружите, что наша работа полезна (или если вы так любезны, чтобы предложить нам некоторую поддержку), подумайте о том, чтобы дать нам звезду и ссылаться на нашу газету.
@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} }
}
Мы очень благодарны Юаню Цзян, Иин М.А., Ифана Ян и сообществу AI4CO за ценные дискуссии и отзывы.
Кроме того, наша работа основана на следующих проектах, среди прочего: