Генетическое программирование на с ++, предложения библиотеки? - PullRequest
8 голосов
/ 18 мая 2010

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

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

У нас есть фитнес-функция, которая требует достаточно вычислительных вычислений, и у нас есть кластер для ее выполнения на столь параллельном коде.

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

спасибо!

Ответы [ 4 ]

3 голосов
/ 18 мая 2010

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

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

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

1 голос
/ 11 октября 2010

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

1 голос
/ 27 сентября 2010

Я использую GAUL

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

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

0 голосов
/ 22 мая 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...