'NSGA-II implementation

I have studied about Non dominating sorting algorithtm (NSGA-II).
I want to use this multi objective optimization algorithm.
could anybody help me by addressing any free implementation of NSGA-II in java or matlab.

Thanks in advance



Solution 1:[1]

MOEA Framework is a a free and open source Java framework for Multiobjective Optimization. It has the largest collection of MOEAs of any library, including NSGA-I, NSGA-II, and NSGA-III.

I personally used it to implement and solve a Multi Objective Problem (MOP) for my Master's thesis and found it far superior to PyGMO (for python) and jMetal (in Java).

The following code demonstrates how to use the MOEA Framework API to run NSGA-II to solve the ZDT1 multiobjective problem:

import java.util.List;
import org.moeaframework.Executor;
import org.moeaframework.core.NondominatedPopulation;
import org.moeaframework.core.Solution;

public class NSGAIIExample {

    public static void main(String[] args) {
        // configure and run this experiment
        NondominatedPopulation result = new Executor()
                .withProblem("ZDT1")
                .withAlgorithm("NSGAII")
                .withMaxEvaluations(1000)
                .distributeOnAllCores()
                .run();

        List<NondominatedPopulation> multiRuns = new Executor()
                .withProblem("ZDT1")
                .withAlgorithm("NSGAII")
                .withMaxEvaluations(1000)
                .distributeOnAllCores()
                .runSeeds(3);

        System.out.format("Obj1  Obj2%n");
        for (Solution solution : result) {
            System.out.format("%.5f\t%.5f%n", solution.getObjective(0),
                    solution.getObjective(1));
        }
    }
}

Solution 2:[2]

jMetal is the Java framework of MOEA, which NSGA-II is included in. The website is here.

Solution 3:[3]

Solution 4:[4]

Since it hasn't been mentioned so far: Jenetics

Jenetics is an advanced Genetic Algorithm, Evolutionary Algorithm and Genetic Programming library, respectively, written in modern day Java.

As of version 4.1.0 the jenetics.ext module offers classes for multi-objective problems. It also offers a NSGA2Selector, but (taken from the manual v4.3.0, p. 92):

Since the MOO classes are an extensions to the existing evolution Engine, the implementation doesn't exactly follow an established algorithm, like NSGA2 or SPEA2. The results and performance, described in the relevant papers, are therefore not directly comparable.

Nonetheless, this might reasonable alternative.

Solution 5:[5]

Have quickly read this thread and I haven't seen a mention of platEMO. Which is a matlab based optimisation platform that I have used a lot recently. The documentation and installation information can be found at:

https://github.com/BIMK/PlatEMO

It has a large amount of problems and algorithms (including NSGA-II) as standard.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2
Solution 3 Mike Vella
Solution 4 beatngu13
Solution 5 Dharman