jMetal使用教程(一)

本文介绍了jMetal,一个基于Java的多目标优化框架,详细讲解了其算法框架,包括Algorithm、Solution、Problem和Operator的主要类及作用。jMetal提供多种算法实现,通过继承AbstractGeneticAlgorithm可快速定制算法。文章还阐述了如何定义Solution、Problem以及交叉、变异和选择算子,并提到了结果集的获取方式。
摘要由CSDN通过智能技术生成

最近发现jMetal框架更新到了5.2,我也把以前写代码顺着框架重新改动一遍,正好整理出来供大家参考。

jMetal是Java实现的一套多目标优化框架,只需要很少量的改动就能定制自己的算法。关键是开源包里包括了几乎所有常用的算法,大大方便了懒人群体。

关于项目的其他信息,请移步:https://jmetal.github.io/jMetal/,github:https://github.com/jMetal/jMetal

下载使用

jMetal的5.0版本以后终于maven化了

maven依赖:

<!-- https://mvnrepository.com/artifact/org.uma.jmetal/jmetal-core -->
<dependency>
    <groupId>org.uma.jmetal</groupId>
    <artifactId>jmetal-core</artifactId>
    <version>5.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.uma.jmetal/jmetal-algorithm -->
<dependency>
    <groupId>org.uma.jmetal</groupId>
    <artifactId>jmetal-algorithm</artifactId>
    <version>5.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.uma.jmetal/jmetal-problem -->
<dependency>
    <groupId>org.uma.jmetal</groupId>
    <artifactId>jmetal-problem</artifactId>
    <version>5.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.uma.jmetal/jmetal-exec -->
<dependency>
    <groupId>org.uma.jmetal</groupId>
    <artifactId>jmetal-exec</artifactId>
    <version>5.2</version>
</dependency>

如果不使用maven,可以去官网下载对应的jar包添加到工程里面。

jmetal-core是核心包,jmetal-exec是算法配置包。jmetal-algorithm是各类算法的具体实现,而jmetal-problem是各类优化问题包。其中,jmetal-core是必须的,其余三个包视情况而定,建议都添加。

下面先对jMetal的基本框架和主要的类做一个介绍,下一节再贴出一个完整的Demo。

算法框架

UML class diagram of jMetal 5.0 core classes

jmetal-core框架

The Algorithm :

Algorithm是所有优化算法的模板,只定义了两个接口方法run()和getResult()。run()是算法的运行入口,getResult()用于返回结果集,一般就是算法得到的Pareto集。代码如下:

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 {
  void run() ;
  Result getResult() ;
}

你的自己的算法需要继承的是 AbstractGeneticAlgorithm这个类。作者的意图是写一个多目标优化的通用框架,遗传算法只是其中之一,而AbstractGeneticAlgorithm就是遗传算法的算法模板。

这个AbstractEvolutionaryAlgorithm的代码如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值