Библиотека генетического программирования для Java [закрыта]

Я ищу хорошую библиотеку генетического программирования для JVM. (не генетический алгоритм, а генетическое программирование). Я попробовал JGAP (jgap.sourceforge.net) и Watchmaker (watchmaker.uncommons.org). К сожалению, эти инструменты имеют только экспериментальную и незрелую поддержку генетического программирования (в основном они ориентированы на генетические алгоритмы).

Возможно, вы знаете какой-нибудь лучший инструмент для генетического программирования для JVM (может быть написан на Java или любом другом скомпилированном языке для JVM).

Я не ищу полный список инструментов GP, я скорее ищу хороший, популярный инструмент (точно так же, как популярные операционные системы — Windows, Linux и Mac, а популярные Java IDE — Eclipse, IDEA и NetBeans).

Это не обязательно должна быть библиотека генетического программирования (GP), она также может быть (и, вероятно, лучше) библиотекой программирования экспрессии генов (GEP).

РЕДАКТИРОВАТЬ (через два месяца после вопроса): я проанализировал большинство ссылок, которые вы разместили и которые доступны в Wiki, и я должен сказать, что каждая из этих библиотек имеет по крайней мере одну из следующих проблем:

  • не с открытым исходным кодом или с открытым исходным кодом, но с очень строгими ограничениями (GPL);

  • отсутствие документации (или очень плохой);

  • нет встроенной поддержки генетического программирования или программирования экспрессии генов (или экспериментальной);

  • некоторые просто слишком сложны в использовании.

В этой ситуации я закончил тем, что написал свою собственную простую библиотеку для проекта (используя подход программирования экспрессии генов, что делает его очень простым).


person iirekm    schedule 07.10.2010    source источник
comment
@Carlos: я немного разочарован тем, что мой ответ принес награду за это. Если вы хотите добавить к вопросу больше контента, я пожертвую свой выигрыш на вторую награду. Просто @ напишите мне здесь.   -  person Bill the Lizard    schedule 21.11.2010
comment
@ Ящерица Билл, эй, не беспокойся, приятель, все в порядке, я уже взломал свой проект, так что пока я в порядке. Очень мило с твоей стороны быть таким искренним и честным. слава и репутация для тебя, приятель;). Всего наилучшего   -  person Carlos    schedule 21.11.2010
comment
Глядя на ваш следующий вопрос, используете ли вы Drools Planner (ASL, с документами и примерами) уже сейчас? Как вам это нравится? :)   -  person Geoffrey De Smet    schedule 22.03.2011
comment
Я попробовал его только после того, как увидел реальный код, использующий его ( ). Я не говорю, что мне это не нравится, но я могу назвать 2 вещи, которые могут заставить людей не любить Drools Planner:   -  person iirekm    schedule 22.03.2011
comment
Аааа, я снова слишком долго редактировал: - Имитация отжига и поиска табу (вещи, присутствующие в Drools Planner) - это просто еще один метод вычислительного интеллекта - он идеально работает для некоторых классов задач (например, планирование расписания), тогда как для других может быть отстойным. - не существует идеального метода выполнения вычислительного интеллекта. - Немного, мне не нравятся отношения между Drools Planner и Drools - я бы предпочел видеть Drools Planner как отдельную библиотеку, и IMO должен решать программист, как реализовать фитнес-функцию (Drools или Java-код).   -  person iirekm    schedule 22.03.2011
comment
@iirekm Спасибо за отзыв. 1) Имитация отжига и поиск табу действительно сосредоточены на проблемах планирования, упаковки и маршрутизации. 2) Можно сделать фитнес-функцию настраиваемой (и я бы согласился с таким патчем), что сделало бы некоторые интересные тесты. Однако весь смысл использования механизма правил заключается в том, чтобы получить расчет дельта-оценки бесплатно, что ужасно для самостоятельной реализации этого стандартного кода.   -  person Geoffrey De Smet    schedule 25.07.2011


Ответы (6)


ECJ содержит множество материалов для GP, включая несколько примеров проектов.

person Jivlain    schedule 07.10.2010

Существуют такие библиотеки, как GenPro и n-genes для Java и JGProg для Groovy.

В разделе Implementations раздела Генетическое программирование статья в Википедии, но, как вы упомянули, многие из них выглядят так, как будто они больше для GA, так что у вас будет чтобы оценить каждый из них, чтобы увидеть, соответствует ли он вашим потребностям.

person Bill the Lizard    schedule 07.10.2010
comment
Вы пробовали GP с некоторыми из этих библиотек? В интернете много библиотек GP, но большинство из них очень и очень плохого качества, совершенно непригодные для производства. Я пробовал JGAP и Watchmaker, и я не могу попробовать все доступные библиотеки, поэтому я прошу вас - пользователей stackoverflow высказать мнение, возможно, у кого-то из вас есть большой опыт работы с Java GP. - person iirekm; 07.10.2010

Я несколько предвзят, потому что являюсь одним из авторов, но EpochX — это Java-библиотека исключительно для генетического программирования. Он поддерживает строго типизированное древовидное представление и 2 представления, управляемые грамматикой. Он в первую очередь предназначен для исследователей, но может подойти в зависимости от того, для чего он вам нужен. Дополнительную информацию можно получить на странице epochx.org.

person Tom Castle    schedule 07.10.2010
comment
Ааа, я был уже почти готов попробовать epochx, когда заметил, что он под лицензией GPL! Проект, который я делаю, будет коммерческим (поэтому я не могу использовать GPL). Почему бы вам не выпустить его под LGPL — это своего рода компромисс между GPL и лицензиями типа Apache, MIT или BSD. Вероятно, есть еще такие пользователи, которые не будут использовать вашу библиотеку только потому, что она находится под лицензией GPL. - person iirekm; 20.11.2010
comment
Спасибо за совет. Я посмотрю, сможем ли мы пересмотреть лицензию, потому что не вижу причин запрещать коммерческое использование. - person Tom Castle; 22.11.2010
comment
Теперь под лицензией LGPL. - person Robert Harvey; 24.07.2011

Я только что закончил создавать свой собственный инструмент генетического программирования в Clojure (построен на JVM). Как только я смог выполнить символическую регрессию, я понял, что этот инструмент гораздо более строгий, чем я хотел, и более сложный для решения проблемы строгой типизации. Я решил перейти к инструменту грамматической эволюции (генетическое программирование можно рассматривать как подмножество грамматической эволюции). Инструмент GEVA — моя первая остановка в инструменте Grammatical Evolution. Насколько я понимаю, он также все еще находится в разработке (в этом году (2010) была недавняя версия).

person Nick    schedule 11.10.2010
comment
Спасибо за информацию, я не знал о GEVA раньше. Я предполагаю, что GEVA более мощная для некоторых задач, тогда как для других более мощные генетические алгоритмы, тогда как для некоторых других нейронных сетей или байесовских сетей. Думаю, пока попробую генетические алгоритмы и GEP, потому что хорошо их знаю, а если не понравится, попробую GEVA. - person iirekm; 11.10.2010
comment
Просто чтобы уточнить ответ здесь: GEVA — это реализация Grammatical Evolution (GE), эволюционного алгоритма, использующего грамматики. Существуют и другие реализации GE, такие как jGE, libGE и EpochX, которые уже упоминались в другом ответе. - person Tom Castle; 22.11.2010

Возможно, вы могли бы использовать части TinyGP? На самом деле это не библиотека, а скорее система GP, но, поскольку она довольно мала, вы можете легко адаптировать ее для своих целей.

person tr9sh    schedule 18.02.2012

JGAP (пакет генетических алгоритмов Java) — это сложная библиотека GA, доступная бесплатно на сайте jgap.sf.net. В нее включено множество примеров.

person Klaus    schedule 07.10.2010
comment
JGAP уже упоминался в вопросе. Я попробовал JGAP (jgap.sourceforge.net).... - person Tansir1; 07.10.2010
comment
Я упомянул JGAP в своем вопросе - очень незрелая поддержка генетического программирования, добавленная только в последней версии. - person iirekm; 07.10.2010
comment
Более того, JGAP имеет очень уродливый дизайн (например, по сравнению с Watchmaker). - person iirekm; 07.10.2010