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

提前致谢

最佳答案

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

我亲自使用它来实现和解决硕士论文的多目标问题(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));
        }
    }
}

10-06 01:46