Генетическое программирование на c++, предложения библиотеки?

Я хочу добавить некоторые генетические алгоритмы в исследовательский проект операций, в котором я участвовал. В настоящее время у нас есть программа, которая помогает оптимизировать некоторые графики, и мы хотим добавить некоторые эвристики в виде генетических алгоритмов. Есть ли хорошие библиотеки для общего генетического программирования / алгоритмов в C++? Или вы бы порекомендовали мне просто закодировать свой собственный?

Я должен добавить, что хотя я не новичок в C++ я новичок в такого рода математические оптимизационная работа в C++, поскольку группа, с которой я работал ранее, имела тенденцию использовать собственный пакет оптимизации.

У нас есть фитнес-функция, которая довольно вычислительно интенсивна для оценки, и у нас есть кластер для запуска этого на так распараллеленном коде очень желательно.

Так c++ хороший язык для этого? Если нет, пожалуйста, порекомендуйте некоторые другие, поскольку я готов изучать другой язык, если это облегчает жизнь.

спасибо!

4 ответов


Я бы порекомендовал собственное решение. 90% работы в GP-это кодирование генотипа, как он работает, и расчет пригодности. Это части, которые меняются для каждой отдельной проблемы / проекта. Фактическая часть эволюционного алгоритма обычно довольно проста.

существует несколько библиотек GP (http://en.wikipedia.org/wiki/Symbolic_Regression#Implementations). Я бы использовал их в качестве примеров и ссылок.

C++ хороший выбор для GP, потому что они, как правило, очень вычислительно интенсивны. Обычно функция фитнеса является узким местом, поэтому стоит, по крайней мере, сделать эту часть скомпилированной/оптимизированной.


Я использую Галл

это библиотека C со всем, что вы хотите.
(pthread/fork/openmp/mpi )
(различные функции кроссовера / мутации)
(оптимизация non GA: восхождение на холм, Симплекс N-M, имитация аннеллинга, табу,... )

зачем создавать собственную библиотеку, когда есть такие мощные инструменты ???


Я еще не использовал это лично, но возрастная слоистая структура населения (Альпы) метод был использован для генерации человеческих конкурентных результатов и был показан, что превосходит несколько популярных методов в поиске оптимальных решений в грубых ландшафтах пригодности. Кроме того, Ссылка содержит исходный код в C++ FTW.


Я предлагаю вам взглянуть на инструментарий оптимизации Матлаб с газ из коробки, вы только кодируете функцию fitness (и функцию для генерации inital population в конечном итоге), и я считаю, что matlab имеет некоторую совместимость c++, поэтому вы можете кодировать свои функции на C++. Я использую его для своих экспериментов, и очень приятная особенность заключается в том, что вы получаете все виды диаграмм из коробки.

сказал так - если ваша цель-узнать о генетические алгоритмы вам лучше кодировать, но если вы просто хотите запустить эксперименты matlab и C++ (или даже просто matlab) - хороший вариант.