Skip to content

SigmaX/SigmaEC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

SigmaEC

SigmaEC is a flexible evolutionary computation experiment framework written in Java.

Its distinguishing feature is that it uses a simple experiment definition language based on Java property files to perform complete dependency injection.

The user writes declarative configuration files to wire together components into potentially complex algorithms and experiments. The configuration language defines not only the free parameters, but also the high-level structure of the entire algorithm.

Inversion of Control

The idea is to provide complete control inversion, keeping implementation details separate from the high-level design of the algorithm and experimental apparatus. If you don't need to change low-level functionality, you don't need to write any Java.

Low-level components can easily be added to provide custom functions such as stopping conditions, mutation operators, and high-level evolutionary controllers, or even entirely different kinds of algorithms such as data mining techniques or simulations.

Other evolutionary computation frameworks such as Sean Luke's ECJ achieve a great deal of extensibility and inversion of control, but SigmaEC takes it to an extreme. To encourage close adherence to the Law of Demeter, components have access only to the dependencies they are 'wired to' in the configuration files. There is no concept of globally accessible state in SigmaEC algorithms; therefore components cannot create unexpected side effects in other parts of the program. This makes unit testing easier and reduces the potential for confusion on the part of the user.

SigmaEC's notion of wiring together general components to create applications will be familiar to users of dependency injection frameworks such as Spring. We use Java property files rather than XML, however, because they are easier to read and extend with special features like arithmetic operators, etc.

Features

  • Bitstring and real-valued genetic algorithms.
  • Ant Colony Optimization
  • Classic selection mechanisms.
  • A large variety of classic test objectives.
  • Decorators for altering and combining real-valued objective functions with offsets, boundaries, etc.
  • A system for sampling objective functions from an objective function generator, such as TSP.
  • A high-level mechanism for evaluating an EA's performance on a suite of functions.
  • Functionality for printing visualizations of real-valued objective functions to a PDF for verification.

About

A simple Evolutionary Computation framework in Java.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages