Skip to content
An open source library for evolutionary single, multi- and many-objectives optimization
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

EvoLib Version 2.1.0 - 10/26/2019

EvoLib is an open source implementation of NSGA-II, NSGA-III and Unified NSGA-III (U-NSGA-III). NSGA-II is a well known Evolutionary Multiobjective Optimization (EMO) algorithm than can handle up to two objectives efficiently. NSGA-III is a widely used algorithm for handling multi (2, 3) and many (3 to 20) objectives. However, NSGA-III was shown to be less efficient with single objective optimization problems. U-NSGA-III is an improved version of NSGA-III that enhances the performance of the original algorithm in single objective optimization problems while maintaining its high performance in multi and many objective optimization problems.


  1. Tx2Ex: An open source mathematical expressions parser (Apache L2 License)
  2. Apache Commons Lang3 (Apache L2 License)


  1. Single, multi and many objectives
  2. XML inputs
  3. Layered reference directions
  4. Generate detailed simply formatted outputs
  5. Generate detailed Matlab plotting script
  6. Easily extensible pure object oriented design
  7. Detailed comments provided with source code


To modify EvoLib directly, clone it to your local file system using Git, then have fun. A good start point is to run optimization.SampleScript (a sample script for optimization problems involving only real-valued variables). If you want to use EvoLib in your own project as a dependency, the recommended approach is to install your local clone of EvoLib into your local Maven repository and use it from wherever as a Maven dependency. The latter approach is usually the case if your problem involves custom variables and consequently needs custom operators. For a detailed example on how to setup and develop such projects, take a look at EvoLib-Demo (


Java SE Development Kit (JDK) 8 or later (


We use SemVer for versioning.


Haitham Seada (


This project is licensed under the Apache License Version 2.0 ( A simple explanation of the license in layman's terms can be found at (

You can’t perform that action at this time.