Java Evolutionary Computation Toolkit (сокращённо ECJ) – свободная исследовательская система для эволюционных вычислений, написанная на языке программирования Java.
ECJ представляет собой программный каркас, поддерживающий ряд технологий эволюционных вычислений, таких как: генетические алгоритмы, генетическое программирование, эволюционные стратегии, параллельная эволюция, оптимизация большого числа частиц и дифференциальная эволюция. Данный программный каркас моделирует эволюционный процесс по итерациям, используя последовательность конвейеров, приспособленных для того, чтобы соединить одну или более подпопуляций индивидуумов с помощью селекции, скрещивания (такого, как кроссовер), и операторов мутации, которые порождают новых особей.
ECJ имеет открытые исходные тексты и распространяется в рамках лицензии Academic Free License и Berkeley Software Distribution License. Она была создана Шоном Люком, профессором компьютерных наук в университете Джорджа Мейсона, и поддерживается Шоном Люком и множеством спонсоров.
Возможности Java Evolutionary Computation Toolkit
- графический интерфейс пользователя с диаграммами;
- платформонезависимые контрольные точки и журналирование;
- иерархические файлы параметров;
- многопоточность;
- генератор случайных чисел Мерсенна;
- абстракции для выполнения множества форм эволюционных вычислений.
- асинхронная островная модель для TCP/IP;
- вычисления типа главный/подчинённый для сложных процессоров;
- генетические алгоритмы/генетическое программирование устойчивого состояния и эволюция поколений, с использованием либо без элитизма;
- эволюционные стратегии типа (mu, lambda) и эволюция (mu+lambda);
- очень гибкая архитектура скрещивания;
- много операторов селекции;
- множественные подпопуляции и виды;
- межпопуляционные перестановки;
- чтение популяций из файлов;
- одно- и многопопуляционная параллельная эволюция;
- SPEA2 многокритериальная оптимизация (Strength Pareto Evolutionary Algorithm);
- оптимизация большого числа частиц;
- дифференциальная эволюция;
- пространственно вложенные генетические алгоритмы;
- приёмы для других многоцелевых методов оптимизации;
- пакеты для экономного воздействия.
- сильно типизированное основанное на множествах генетическое программирование;
- эфемерные случайные константы;
- автоматически определяемые функции и автоматически определяемые макросы;
- леса из многочисленных деревьев;
- 6 алгоритмов для создания деревьев;
- огромное множество операторов скрещивания в генетическом программировании;
- 7 готовых приложений генетического программирования для решения проблем из различных областей (муравей, регрессия, мультиплексор, закон Мура, чётность, два блока, ребро).
- геном фиксированной и переменной длины;
- произвольные представления;
- 5 векторных приложений для решения проблем из различных областей (сумма, Розенброк, сфера, шаг, шум четвёртой степени).
- геномы, основанные на мультимножественном представлении в линейном пакете, для получения в приближении Питта наборов правил или других представлениях, основанных на множествах.
Ссылки