jMetal4+
jMetal的基本架构依赖于:Algorithm 使用 SolutionSet 和 一系列的 Operator 解决 Problem
在遗传算法中,种群(populations)对应 SolutionSet,个体(individuals)对应Solution。
下面根据jmetal官网的使用手册介绍四大基本组件。
Encoding of Solutions
在使用元启发式算法的时候首先要决定怎么去编码或表示所要解决的问题的暂定solution,这将表示取决于问题本身。
jMetal框架的基本组件:Solution,如下图所示
Operators
元启发式算法基于通过应用不同的算子修改solution或生成new solution。在jMetal中任何改变或生成solution( or solution set )的操作都继承自Operator类。
框架内包括很多操作符,分为如图所示Selection,Mutation,Crossover,LocalSearch四个类别
算子的产生和使用如图所示:
下面是SBX算子的源码解读
Problems
在jMetal中,所有问题都继承自类问题。该类包含两个基本方法:evaluate()和 evaluateConstraints(),两种方法都接收问题的候选solution。
evaluate()对其进行评估,evaluateConstraints()确定其总体约束冲突。
所有问题都必须定义evaluate()方 法,而只有具有边约束的问题才需要定义evaluateConstraints()。默认情况下实现的约束处理机制是A fast and elitist multiobjective genetic algorithm: NSGA-II中提出的机制。
下面分析Kursawe’s problem的源码
Algorithms
这是一个抽象类,必须继承实现。特别是,必须实现抽象方法execute();该方法旨在运行该算法,结 果返回SolutionSet
算法的实例对象可能需要一些特定于应用程序的参数,可以分别使用addParameter()和 getParameter()方法添加和访问这些参数。类似地,算法也可以使用一些运算符,因此提供 了合并运算符(addOperator())和获取运算符(getOperator())的方法。
下一篇笔记会介绍NSGAii
最后是jemtal包结构(旧版)