2

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

提前致谢

4

4 回答 4

3

MOEA 框架是一个用于多目标优化的免费和开源 Java 框架。它拥有所有图书馆中最大的 MOEA 集合,包括 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));
        }
    }
}
于 2016-07-04T01:14:30.527 回答
2

jMetal 是 MOEA 的 Java 框架,其中包含 NSGA-II。网站在这里

于 2013-10-13T15:13:19.763 回答
0

由于到目前为止尚未提及:Jenetics

Jenetics 是一个先进的遗传算法、进化算法和遗传编程库,分别用现代 Java 编写。

从 4.1.0 版开始,该jenetics.ext模块提供了多目标问题的类。它还提供了一个NSGA2Selector, 但是(取自手册 v4.3.0,第 92 页):

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

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

于 2018-10-31T20:08:31.303 回答