Jmetal 4+ 使用指南三使用Jmetal进行试验

2021-05-10 15:34:07 浏览数 (1)

Experimentation with jMetal

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

链接如下

Jmetal 4 使用指南一

Jmetal 4 使用指南二

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

NSGA-II入门

多目标优化拥挤距离计算

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

  • 在我们的研究工作中,当我们要评估多目标元启发式算法的性能时,通常会将其与其他算法进行一系列基准问题benchmark problems 的比较。选择要应用的测试套件test suit和质量指标quality indicator后,我们对每个实验进行了多次独立运行,然后我们分析了结果
  1. 使用相关的Setting对象对算法的参数进行设置。
  2. 对问题进行设置,例如:DTLZ问题默认是3个目标,WGF问题默认是两个目标,如果想要更改这些设定,就要改变设定。
  3. 执行一系列的独立实验
  4. 分析数据,JMetal可以设置Latex 表格和R语句来表示结果和统计信息。
  • 要执行这些步骤,我们使用从jMetal 2.0中第一次引入的jmetal.experiments包,本章主要致力于解释这个包的用法。
    • 首先,我们描述jmetal.experiments.Settings类的结构以及如何将其用于配置NSGA-II。
    • 然后,我们分析jmetal.experiments.Main类。
    • 最后,我们用两个示例说明jmetal.experiments.Experiment类的用法。

The jmetal.experiments.Settings Class

  • 引入experiments包的初衷是因为在传统方法中一般使用main方法对算法进行调用,例如使用NSGA-II_main class 中的main函数。如果想使用不同的参数,则需要每次在运行的时候进行修改。这很麻烦,我们想要使用更简单的方法重用这些设置。
  • 为解决此问题,我们采用了另一种方法来定义类中的元启发式方法的配置,该类将包含默认设置并允许对其进行修改。清单4.1包含jmetal.experiment.Settings类的代码。该类的主要特点是:
  • 通过Problem 对象,problem name对象,true Pareto Front 对象对Settings类进行设置。
  • 可以使用构造函数的方法(第22-24行),也可以使用setProblem()的方法单独进行设置。(第51-52行)
  • 第31行留了一个configure()虚类,可以在Settings的子类中进行实现
  • 第36行使Setting类可以使用HashMap的方式传递算法的超参。

An example of Setting class: NSGA-II

  • 以jmetal.experiments.settings包中NSGAII Settings类作为例子来说明Setting类的使用,
NSGAII Settings类的初衷
  • 初衷特别简单,就是想要去掉NSGA-II_main类中的参数设置,其他的算法也一样,通过Setting的方式,去掉main类中的参数设置。

结构

  • 第20-37行是构造函数,将参数用于构造这个类。
  • 我们强制要求参数必须为public,并且其名称必须以下划线_结尾。

实现Settings虚类中 configure()虚类

  • 以下实现了在NSGAII中的参数配置,可以发现,基本上和NSGA-II_main 中参数设置的代码相同。
  • 为了修改特定的参数,我们使用Java HashMap对象。该映射由对(键,值)组成,其中键和值是字符串。这个想法是,在 Setting 的子类中定义的状态变量将用作属性对象中的键。如前所述,这些变量必须是Public变量,并且其标识符必须以下划线 _ 字符结尾。

通过HashMap修改算法参数

  • 下图中简要介绍了使用HashMap修改NSGA-II算法的参数的示例

The jmetal.experiments.Main class

  • 关于Main class 的使用和Jmetal 4 使用指南二基本相同,唯一区别在于需要事先指定算法 如NSGA-II
  • 可以传入一个参数, NSGA-II(算法名)
  • 两个参数 NSGA-II (算法名) problem name (benchmark name)
  • 三个参数 NSGA-II (s算法名) problem name (benchmark name) True PF 只有这种情况可以计算各种指标 IGD GD HV

使用IDEA传入参数

  • 算法 benchmark name True PF
  • NSGAII ZDT3 "C:UsersHPDesktopZDT3.pf"

0 人点赞