Java Evolutionary Computation Toolkit

ECJ[1] (также известная как Java Evolutionary Computation Toolkit) — свободная исследовательская система для эволюционных вычислений и метаэвристик, написанная на языке программирования Java.

Общие сведения

Описание

Java Evolutionary Computation Toolkit представляет собой программный каркас, поддерживающий широкий спектр метаэвристик[2] и технологий эволюционных вычислений, таких как генетические алгоритмы, генетическое программирование, эволюционные стратегии, параллельная эволюция, оптимизация роя частиц и дифференциальная эволюция. Этот программный каркас моделирует эволюционный процесс по итерациям, используя последовательность конвейеров, которые соединяют одну или несколько подпопуляций индивидуумов с помощью селекции, скрещивания (например, кроссовера) и операторов мутации, порождающих новые экземпляры. Программное обеспечение распространяется с открытым исходным кодом по лицензии AFL. Разработка ведётся в Лаборатории эволюционных вычислений (ECLab) Университета Джорджа Мейсона под руководством Шона Люка (Sean Luke) и Эрика О. Скотта (Eric O. Scott)[1]. В 2016 году проект получил грант от Национального научного фонда США (NSF) для расширения системы в универсальный инструментарий для метаэвристик[2].

Возможности

Основные возможности (по данным официальной страницы проекта):

  • графический интерфейс пользователя с диаграммами;
  • платформонезависимые контрольные точки и журналирование;
  • иерархические файлы параметров;
  • поддержка многопоточности;
  • генератор случайных чисел Мерсенна;
  • абстракции для выполнения различных форм эволюционных вычислений;
  • поддержка сборки проекта с использованием Apache Maven[3].

Возможности эволюционных вычислений:

  • асинхронная островная модель на базе TCP/IP;
  • вычисления по типу ведущий/ведомый для кластерных процессоров;
  • генетические алгоритмы и генетическое программирование: режим устойчивого состояния, эволюция поколений, поддержка элитизма и без него;
  • эволюционные стратегии по схемам (mu, lambda) и (mu+lambda);
  • гибкая архитектура скрещивания;
  • множество операторов селекции;
  • поддержка нескольких подпопуляций и видов;
  • межпопуляционные перестановки;
  • загрузка популяций из файлов;
  • одно- и многопопуляционная параллельная эволюция;
  • SPEA2 для многокритериальной оптимизации (Strength Pareto Evolutionary Algorithm);
  • оптимизация роя частиц;
  • дифференциальная эволюция;
  • пространственно вложенные генетические алгоритмы;
  • методы для других многоцелевых методов оптимизации;
  • пакеты для низкоуровневого воздействия;
  • алгоритмы комбинаторной оптимизации (ACO, GRASP)[3];
  • алгоритм NSGA-III и метрика гипер-объёма для многокритериальной оптимизации[3];
  • алгоритмы оценки распределений (EDA, AMaLGaM, PBIL)[3];[2]
  • оптимизация с одним состоянием (градиентный подъём, имитация отжига)[2];
  • нейроэволюция усложняющихся топологий (NEAT)[2].

Представления

Представления деревьев в генетическом программировании:

  • строго типизированное, основанное на множествах генетическое программирование;
  • эфемерные случайные константы;
  • автоматически определяемые функции и макросы;
  • леса из нескольких деревьев;
  • шесть алгоритмов генерации деревьев;
  • широкий набор операторов скрещивания для генетического программирования;
  • семь предустановленных приложений генетического программирования для решения различных задач (муравей, регрессия, мультиплексор, закон Мура, определение чётности, два блока, ребро).

Векторные представления (генетические алгоритмы):

  • геном фиксированной и переменной длины;
  • произвольные представления;
  • пять векторных приложений для решения различных задач (сумма, функция Розенброка, сфера, ступенька, четвёртая степень с шумом).

Другие представления:

  • геномы на основе мультимножественного представления в линейном пакете: для аппроксимации наборов правил Питта либо других форм, основанных на множествах.

Примечания

  1. 1 2 ECJ Evolutionary Computation Toolkit. GitHub. Дата обращения: 28 мая 2026.
  2. 1 2 3 4 5 ECJ: A General Metaheuristics Toolkit. Дата обращения: 28 мая 2026.
  3. 1 2 3 4 ECJ Releases. GitHub. Дата обращения: 28 мая 2026.