ECJ — свободная исследовательская система для эволюционных вычислений, написанная на языке программирования Java.
Она представляет собой программный каркас, поддерживающий ряд технологий эволюционных вычислений, таких как: генетические алгоритмы, генетическое программирование, эволюционные стратегии, параллельная эволюция, оптимизация большого числа частиц и дифференциальная эволюция. Данный программный каркас моделирует эволюционный процесс по итерациям, используя последовательность конвейеров, приспособленных для того, чтобы соединить одну или более подпопуляций индивидуумов с помощью селекции, скрещивания (такого, как кроссовер), и операторов мутации, которые порождают новых особей. ECJ имеет открытые исходные тексты и распространяется в рамках лицензии AFL. Она была создана Шоном Люком, профессором компьютерных наук в университете Джорджа Мейсона, и поддерживается Шоном Люком и множеством спонсоров.
Основные возможности (перечислены со страницы проекта ECJ):
графический интерфейс пользователя с диаграммами; платформонезависимые контрольные точки и журналирование; иерархические файлы параметров; многопоточность; генератор случайных чисел Мерсенна; абстракции для выполнения множества форм эволюционных вычислений.
Возможности эволюционных вычислений:
асинхронная островная модель для TCP/IP; вычисления типа главный/подчинённый для сложных процессоров; генетические алгоритмы/генетическое программирование устойчивого состояния и эволюция поколений, с использованием либо без элитизма; эволюционные стратегии типа (mu, lambda) и эволюция (mu+lambda); очень гибкая архитектура скрещивания; много операторов селекции; множественные подпопуляции и виды; межпопуляционные перестановки; чтение популяций из файлов; одно- и многопопуляционная параллельная эволюция; SPEA2 многокритериальная оптимизация (Strength Pareto Evolutionary Algorithm); оптимизация большого числа частиц; дифференциальная эволюция; пространственно вложенные генетические алгоритмы; приёмы для других многоцелевых методов оптимизации; пакеты для экономного воздействия.
Представления деревьев в генетическом программировании:
сильно типизированное основанное на множествах генетическое программирование; эфемерные случайные константы; автоматически определяемые функции и автоматически определяемые макросы; леса из многочисленных деревьев; 6 алгоритмов для создания деревьев; огромное множество операторов скрещивания в генетическом программировании; 7 готовых приложений генетического программирования для решения проблем из различных областей (муравей, регрессия, мультиплексор, закон Мура, чётность, два блока, ребро).
Представления векторов (генетические алгоритмы):
геном фиксированной и переменной длины; произвольные представления; 5 векторных приложений для решения проблем из различных областей (сумма, Розенброк, сфера, шаг, шум четвёртой степени).
Другие представления:
геномы, основанные на мультимножественном представлении в линейном пакете, для получения в приближении Питта наборов правил или других представлениях, основанных на множествах.
Ссылки Страница проекта ECJ Wilson, G. C. McIntyre, A. Heywood, M. I. (2004), «Resource Review: Three Open Source Systems for Evolving Programs-Lilgp, ECJ and Grammatical Evolution», Genetic Programming And Evolvable Machines, 5 (19): 103—105, Kluwer Academic Publishers.
Категория:Научное программное обеспечение Категория:Искусственный интеллект Категория:Свободное программное обеспечение, написанное на Java