在进化计算的背景下,“健身共享”和“生态位计数”是什么?
最佳答案
进化算法(EAs)趋向于收敛到一个单一的解决方案,因为种群的多样性降低了[1]。这种行为被称为遗传漂移。根据种群成员之间的距离保持种群多样性的任何技术都称为Niching技术。
适应度共享是一种独特的选择,其中每个人的适应度都根据其与他人的亲近程度进行缩放。这意味着,与在人口稀疏地区的比较好的解决方案相比,在人口稠密地区的好的解决方案具有较低的适应度值。实际上,该算法的选择技术较少强调这些高质量,高密度的解决方案。可以基于决策空间(基因型),解决方案空间(表型)或两者(例如,Goldberg和Richardsen [2])中的值来计算距离。基因型的距离通常使用Hamming distance定义,而表型的距离通常使用Euclidean distance定义。
以下Java方法提供了一种简单的适应度共享方法:
/**
* Computes the shared fitness value for a solution
* @param index the index of the solution for which a shared fitness value will be computed
* @param minDist any solution closer than minDist will share fitness with the current solution
* @param shareParam a parameter that defines how much influence sharing has. Higher = more sharing.
* @param population the array of solutions. Each solution has a genotype and associated fitness value.
*/
public double computeSharedFitnessValue(int index, double minDist, double shareParam, Solution[] population){
double denominator = 1;
for(int j = 0; j < population.length; j++){
final double dist = hamming_dist(population[index],population[j]);
if (dist < minDist){
denominator += (1-(dist/shareParam))
}
}
return population[index].getFitnessValue()/denominator;
}
励志示例:下图完美地说明了适应度共享在多目标问题中如此重要的原因。在图A(左)中,在整个执行过程中保持了多样性。结果,解决方案跨越了真实帕累托前沿的相当一部分(此处显示为线框)。在图B(右)中,种群仅会聚到帕累托前沿的一小部分。在许多情况下,即使图B中的解决方案具有更高的质量,决策者还是希望图A中的(名义上)质量提高,而不喜欢图A中提供的选项的多样性。
其他资源:
关于artificial-intelligence - 进化计算中的适应度共享和小生境计数是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37836751/