Jmetal 4+ 使用指南一

Jmetal 4+ 使用指南一

以NSGA-II为例

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

我的微博我的github我的B站

  • 本文以Jmetal官网文档为基础,结合自身理解
    链接如下
  • 如果你还不了解NSGA-II可以参考
    NSGA-II入门
    ​多目标优化拥挤距离计算
    多目标优化按支配关系分层实现
  • 在本节中,我们描述了jMetal中NSGA-II的实现。 在jMetal下,元启发式方法由定义算法本身的类和执行该算法的另一个类组成。 第二类用于指定要解决的问题,要应用的运算符,算法的参数以及需要设置的其他任何参数(自jMetal 2.0起,我们通过使用包jmetal.experiments引入了另一种方法。 如第4章中所述)。 让我们分别将这两个类称为NSGAII和NGAII main。
  • 意思是说,在2.0以前的版本中,想要执行一个算法使用XXX.java和XXX main.java, 这种方式,其中XXX.java是类的定义而main方法中创建一个实例。但是2以上的版本也推出了实验模块,可以同时比较多个算法,并且在5中推荐使用的就是实验模块也就是experiments包中的内容。

NSGAII.java 类

  • 下图中展示了NSGA-II类的UML图
  • 和其他算法一样NSGA-II继承自Algorithm虚类,execute()方法用于执行整个算法并返回一个解集SolutionSet。
  • 可以通过addOperation()方法向其中加入操作符(算子),例如交叉算子和变异算子,选择算子等,也可以通过getOperation()方法提取算法中使用的算子。而算法中使用的超参数,可以通setInputParameter()和 getInputParameter()进行设置和获取。也可以通过setOutputParemeters() and getOutputParameters() 获取输出结果。在execute()函数中NSGAII有一个构造器constructor可以获取问题Problem并将其设置为一个参数parameter NSGA-II 在Jmetal中的实现可以在jmetal/metaheuristics/nsgaII/NSGAII.java中找到,代码结构如下

execute()函数

变量声明

如下所示的是算法的执行函数

  • 第2-4行 首先设置population size and the maximum numbe of evaluations 种群大小和最大评价次数, evaluations变量是一个计数器,用于更新目前的评价次数。
  • 第6-7行 指定使用的指标例如IGD或者HV
  • 第10-12行 指定算法需要使用的种群, 当前种群,子代种群,合并种群
  • 第14-18行 分别为变异算子,交叉算子,选择算子和用于控制多样性的距离

变量初始化

  • 第23-25行 分别初始化种群大小和最大评价次数,以及评价指标,但是评价指标是可选的而其余两行是必选的。
  • 第28-29行 初始化种群和迭代次数
  • 第34-36行 获取变异,交叉和选择算子

初始化种群

  • 个体初始化,评价,并将这个个体加入种群中

算法主循环

进化生成新个体

  • 第55行,使用populationsize/2是因为crossover是由两个父代生成两个子代。
非支配排序

  • 第74行,将种群合并
  • 第77行,生成一个ranking对象已准备将种群进行配置排序
  • 第79行,remain指的是新的population中剩余的个体数量
  • 第80行,初始化rank索引
  • 第81-82行, 清空front和population,因为其中保留有上一代中的种群信息
  • 第85行,保存rank
  • 第87-103行,如果新的种群剩下有个体的空间即remain>0并且可以容纳下这整个front;则计算front层中的拥挤距离;将front中所有个体容纳进population中;将种群中剩余个体数量remain减去已经用了的空间;front的索引自增1;然后将rank[index]中的个体存进population中直到population中剩余的个体数量不能支持整个rank.
  • 第106行,进入的条件是remain<font.size, 则将front中的个体按照拥挤距离进行排序,并且将remain剩余的部分填满;然后将remain设置为0.
使用指标
  • 这段代码展示了如何在NSGA-II代码中使用指标。特别地,它发现了算法需要计算的次数,以获得一个HV大于True PF的HV的时间。

返回函数

  • 返回达到0.98的真实HV所需要的进化次数
  • 返回最前沿的PF
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值