jMetal官方文档汉化六:架构

架构

整个jMetal5架构依赖于四个接口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EApi5ney-1640159581255)(E:\Jmetal\文档汉化\中文文档\figures\jMetal5CoreClassDiagram.png)]

上面的框图展示了jMetal所提供的主要功能:算法( Algorithm 类)通过使用诸多操作符(Operators类)来处理一组潜在的解决方案( Solution 类)来解决特定的问题(Problem类)。解决方案( Solution 类)表示进化算法中的个体,以及粒子群优化算法中的粒子。问题(Problem类)可以创建新的个体或粒子并对其进行评估。

与之前版本的jMetal相比,取消了定义人口或群体的类。在jMetal 5中改用一个解决方案列表(Java中的List<Solution> )来代替

泛型

Java泛型也在jMetal5中进行了广泛的使用

使用泛型可以使Java编译器检查所有的组件是否匹配. 下面的代码以著名的NSGA-II算法为例,展示了算法的所有配置:

    Problem<DoubleSolution> problem;
    Algorithm<List<DoubleSolution>> algorithm;
    CrossoverOperator<DoubleSolution> crossover;
    MutationOperator<DoubleSolution> mutation;
    SelectionOperator<List<DoubleSolution>, DoubleSolution> selection;

    ...

    algorithm = new NSGAIIBuilder<DoubleSolution>(problem, crossover, mutation)
        .setSelectionOperator(selection)
        .setMaxEvaluations(25000)
        .setPopulationSize(100)
        .build() ;

算法 Algorithm 相关类的层次结构Hierarchy ofrelated classes

Algorithm 算法类接口十分简单,只包含了两个方法 run()getResult(), 如下所示

package org.uma.jmetal.algorithm;

/**
 * Interface representing an algorithm
 * @author Antonio J. Nebro
 * @version 0.1
 * @param <Result> Result
 */
public interface Algorithm<Result> extends Runnable, Serializable, DescribedEntity {
  void run() ;
  Result getResult() ;
}

jMetal 5包含了从Algorithm继承的类的层次结构,如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-umR01v1a-1640159581256)(E:\Jmetal\文档汉化\中文文档\figures\algorithmHierarchy.png)]

一方面,从图中可以看出一系列抽象类(如AbstractEvolutionaryAlgorithm,AbstractParticleSwarmOptimization),它们构成了模板,可以通过重用扩展已经提供的代码来促进不同算法的实现。另一方面,我们可以看到两个算法示例,MOEA/D和NSGAII45不遵循任何提供的模板。通过类似的几口实现方式,您可以自行实现新算法,也可以通过扩展某些现有类来实现。

我们可以观察到,NSGA-II类继承了AbstractGeneticAlgorithm,这是AbstractEvolutionaryAlgorithm的一个子类,NSGA-II的稳态形式也可以通过扩展NSGAII类来实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值