NSGA-II实施

时间:2013-08-24 12:21:19

标签: evolutionary-algorithm

我研究过非支配排序算法(NSGA-II) 我想使用这种多目标优化算法 任何人都可以通过解决java或matlab中任何NSGA-II的免费实现来帮助我。

提前致谢

4 个答案:

答案 0 :(得分:3)

MOEA Framework是一个用于多目标优化的免费开源Java框架。它拥有所有图书馆中最大的MOEAs集合,包括NSGA-I,NSGA-II和NSGA-III。

我个人用它来为我的硕士论文实现和解决多目标问题(MOP),发现它远远优于PyGMO(对于python)和jMetal(在Java中) )。

以下代码演示了如何使用MOEA Framework API运行NSGA-II来解决ZDT1多目标问题:

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));
        }
    }
}

答案 1 :(得分:2)

jMetal是MOEA的Java框架,其中包含NSGA-II。网站为here

答案 2 :(得分:1)

答案 3 :(得分:0)

由于至今尚未提及:Jenetics

  

Jenetics是分别用现代Java编写的高级遗传算法,进化算法和遗传编程库。

从版本4.1.0开始,jenetics.ext模块提供了用于多目标问题的类。它还提供了NSGA2Selector,但是(摘自manual v4.3.0,第92页):

  

由于MOO类是对现有Evolution Engine的扩展,因此该实现并不完全遵循已建立的算法,例如NSGA2或SPEA2。因此,相关论文中描述的结果和性能不能直接比较。

尽管如此,这可能是合理的选择。