进化计算中的适应度共享和生态位计数是啥?
Posted
技术标签:
【中文标题】进化计算中的适应度共享和生态位计数是啥?【英文标题】:What are fitness sharing and niche count in evolutionary computation?进化计算中的适应度共享和生态位计数是什么? 【发布时间】:2016-10-16 15:30:38 【问题描述】:什么是进化计算上下文中的“适应度共享”和“利基计数”?
【问题讨论】:
【参考方案1】:随着种群的多样性减少[1],进化算法 (EA) 倾向于收敛到单一解决方案。这种行为被称为遗传漂变。任何基于种群成员之间的距离保持种群多样性的技术都称为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(左)中,在整个执行过程中保持了多样性。因此,解决方案跨越了真正的 Pareto 前沿的相当大一部分(此处显示为线框)。在图 B(右)中,人口只集中在帕累托前沿的一小块区域。在许多情况下,即使图 B 中的解决方案质量更高,决策者也会更喜欢图 A 中提供的选项的多样性,而不是图 B 中(名义上的)质量改进。
其他资源:
[1] Genetic algorithms with sharing for multimodal function optimization [2] Genetic Algorithms for Multi-Objective Optimization: Formulation Discussion and Generalization【讨论】:
很好的答案。您能否详细说明显式和隐式健身共享之间的区别? @user3144201 隐式健身共享与显式形式的不同之处在于不需要明确的距离度量。以上是关于进化计算中的适应度共享和生态位计数是啥?的主要内容,如果未能解决你的问题,请参考以下文章
指派问题基于matlab遗传算法求解指派优化问题含Matlab源码 2292期