Jmetal 4+ 使用指南四 使用Jmetal进行试验-NSGAIIStudy(一)

Jmetal 4+ 使用指南四

使用Jmetal进行试验-NSGAIIStudy(一)

Experimentation with jMetal

觉得有用的话,欢迎一起讨论相互学习~

我的微博我的github我的B站

  • 本文以Jmetal官网文档为基础,结合自身理解

链接如下

Jmetal 4+ 使用指南一

Jmetal 4+ 使用指南二

Jmetal 4+ 使用指南三

  • 如果你还不了解NSGA-II可以参考

NSGA-II入门

​多目标优化拥挤距离计算

多目标优化按支配关系分层实现

Experimentation Example: NSGAIIStudy

  • jMetal包括jmetal.experiments.Experiment类,旨在帮助进行算法的实验研究。 在当前状态下,它可以指示:要运行的元启发法,要解决的问题,要应用的质量指标以及要执行的独立运行的次数。 结果,它将生成一个文件夹,其中包含所有获得的近似值集和指标值.
  • 一个包含指标平均值和方差的latex文档
  • 能够生成箱式图的R脚本
  • R脚本生成latex表格,并应用Wilcoxon统计检验结果
  • Friedman test的latex表格
  • 这里我们通过研究NSGA-II中不同交叉概率1.0, 0.9, 0.8, and 0.7.作为一个例子来介绍Jmetal的用法

Defining the experiment 定义实验

  • 首先创建一个子类NSGAIIStudy来继承Experiment这个虚类

1. 实现algorithmSettings方法

  • 在每次独立运行,每种问题和算法时都会自动调用此方法。 关键是必须创建具有所需参数化的Settings对象才能执行算法:

  • 第29行new一个HashMap数组,用于传递不同的算法参数,以在第46-47行new不同的NSGAII实例。

2.new一个NSGAIIStudy实例

  public static void main(String[] args) throws JMException, IOException {
    NSGAIIStudy exp = new NSGAIIStudy() ; // exp = experiment

3.设置实验名称

  • 这个实验名称会在后续用在生成Latex实验结果中
exp.experimentName_  = "NSGAIIStudy" ;

4.设置实验参数

  • 注意Problem个数和算法PF总个数需要对应
  • 并且注意 问题中的目标数量和PF中的目标数量需要相等

5. 设置结果输出地址和PF存储地址

  • 前者用于设定输出的地址,后者用于加载真实前沿
PS:输出结果地址为绝对地址更好!

6. 初始化Settings

7. 设定独立运行次数

8. 初始化实验

9. 设置线程个数

  • 线程个数默认为1,这里可以设为多个 (更多更快呀)
    // Run the experiments
    int numberOfThreads ;
    exp.runExperiment(numberOfThreads = 6) ;

10.评价指标和LaTex 表格

    exp.generateQualityIndicators() ;
    
    // Generate latex tables (comment this sentence is not desired)
    exp.generateLatexTables() ;

11. 生成箱型图

    // Configure the R scripts to be generated
    int rows  ;
    int columns  ;
    String prefix ;
    String [] problems ;

    rows = 2 ;
    columns = 3 ;
    prefix = new String("Problems");
    problems = new String[]{"ZDT1", "ZDT2","ZDT3", "ZDT4", "DTLZ1", "WFG2"} ;

    boolean notch ;
    exp.generateRBoxplotScripts(rows, columns, problems, prefix, notch = true, exp) ;
    exp.generateRWilcoxonScripts(problems, prefix, exp) ;
  • rows,columns分别指示图的行和列数,notch用于指示是否将其画为凹的箱型图。

12. Wilcoxon rank-sum test 和 Friedman test

    exp.generateRWilcoxonScripts(problems, prefix, exp) ;

    // Applying Friedman test
    Friedman test = new Friedman(exp);
    test.executeTest("EPSILON");
    test.executeTest("HV");
    test.executeTest("SPREAD");
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值