EvoJ project is a lightweight extensible Java framework which simplifies coding and refactoring of genetic algorithm applications.

The framework is planned to be very easy to use with only little need for coding. The typical problem in genetic programming is vectorizing of solution, i.e. mapping of variables composing a solution to a chromosome. What becomes real hell when a solution being searched has complex internal structure.

When you use EvoJ all you need to do is declare Java-interface containing your variables. For example if solution to the problem you solve is a set of points which meet some predefined criteria, then you can simply declare following interfaces:

public interface Solution {
    List<Point> getPoints();

public interface Point {

    float getX();

    float getY();


If later you will need some more variables - just add their getters!

Genetic algorithm requires a fitness-function. Using of EvoJ simplifies writing of fitness-function - you operate usual java getters with human-readable names. To write a fitness-function in EvoJ you need to implement quite a simple interface with one method taking your Solution-interface as argument and returning fitness value as a Comparable.

Following are key features of EvoJ

Please refer to Tutorial and technical guide for more details.


05 May 2015
Java 8 compatibility fix 3.0.1 released
16 February 2013
Major EvoJ 3.0 released!!! Please review the Release notes .
29 October 2012
EvoJ 2.4 released! The release contains massive change set. Please read the Release notes .
16 June 2012
EvoJ 2.3 released! Please read the Release notes .