an NSGA-II implementation using Java
Original Authors of the Paper: Kalyanmoy Deb, Amrit Pratap, Sameer Agarwal, T. Meyarivan
links to original contents:
note: this implementation of NSGA-II algorithm is in pure reference to the original published paper. This is not an effort to convert the originally implemented C code in Java. The original C code by the authors has not be referred to while writing this implementation.
Dependency: Java( >= 1.8), JFreeChart(1.5.3), JCommon(1.0.24)
version 3.1.0 brings a lot of added functionality, fixes a few bugs and brings a few breaking changes. While it is recommended to use the latest version (3.1.0) and update your dependencies for your exisiting projects, do keep in mind about the breaking changes and open an issue if you are unable to do so.
This is v3 of the algorithm implementation. This reference implementation has been updated to be:
The reference v2 implementation can be found here. The README of that implementation can be found here.
The reference v1 implementation can be found here. The README of that implementation can be found here.
note: Code commenting of v3 is under progress and not all code is commented properly. This shall be done shortly. In the mean time, if you are unable to understand any part of the code, feel free to open an issue about it and I shall try to resolve it.
This is a fully customizable implementation of the NSGA-II algorithm, made as generic as possible. This documentation assumes you have basic understanding of the NSGA-II algorithm. Apart from the core concepts of the algorithm, everything else in this package can be implemented as per the user's choice and plugged into the algorithm dynamically.
By default, the package provides a default implementation of every plugin and hence the package can be run with just one line of code as a PoC.
(new NSGA2()).run();
For more information, visit the Wiki
For full documentation, visit the Documentation Wiki.
To use it as a maven dependency add the following to your pom.xml
file:
<dependencies>
...
<dependency>
<groupId>com.debacharya</groupId>
<artifactId>nsgaii</artifactId>
<version>3.2.0</version>
</dependency>
</dependencies>
Please note that while you can use version 3.0.1, it requires Java 13 and above. 3.0.2 has been released to be able to work with Java 1.8 and above.
This project is open to pull requests and encourages new features through contribution. The contribution guidelines shall be updated shortly.
You can now cite this NSGA-II implementation if you want.
Cite this library
Debabrata Acharya. (2020, September 21). onclave/NSGA-II: an NSGA-II implementation using Java. Zenodo. http://doi.org/10.5281/zenodo.4042108