多目标优化–MOEAD算法笔记
初始化
外部种群(EP),用来存储目前算法搜索到的最优解。
计算任意两个权重之间的欧式距离,
这是论文对相邻的解释
jmetal源码
public void run() {
初始化种群
this.initializePopulation();
权重?
this.initializeUniformWeight();
邻居?
this.initializeNeighborhood();
理想点 z?
this.initializeIdealPoint();
this.evaluations = this.populationSize;
permutation 排列
do {
int[] permutation = new int[this.populationSize];
MOEADUtils.randomPermutation(permutation, this.populationSize);
for(int i = 0; i < this.populationSize; ++i) {
int subProblemId = permutation[i];
NeighborType neighborType = this.chooseNeighborType();
List<DoubleSolution> parents = this.parentSelection(subProblemId, neighborType);
this.differentialEvolutionCrossover.setCurrentSolution((DoubleSolution)this.population.get(subProblemId));
每个子问题在邻居个体内交叉变异
List<DoubleSolution> children = this.differentialEvolutionCrossover.execute(parents);
DoubleSolution child = (DoubleSolution)children.get(0);
this.mutationOperator.execute(child);
this.problem.evaluate(child);
++this.evaluations;
this.updateIdealPoint(child);
根据聚合函数值更新父代种群
this.updateNeighborhood(child, subProblemId, neighborType);
}
} while(this.evaluations < this.maxEvaluations);
}