我正在编写一个在锦标赛选择中使用健身共享的遗传算法。在我发现的所有相关文献中(例如 Sareni),都提到解决方案自身的适应度 (Fi) 应除以其利基距离 (Mi) 的总和。
我不明白的是,因为我们正在优化多个目标,所以每个解决方案都有不止一个适合度。那么它的“健身”Fi 是什么?我应该将其视为所有适应度的乘积吗?
例如,在我正在编写(处理)的代码中:
float sharedFitnessA = (a.f2*a.f3) / nicheCountA;
谢谢
n
我正在编写一个在锦标赛选择中使用健身共享的遗传算法。在我发现的所有相关文献中(例如 Sareni),都提到解决方案自身的适应度 (Fi) 应除以其利基距离 (Mi) 的总和。
我不明白的是,因为我们正在优化多个目标,所以每个解决方案都有不止一个适合度。那么它的“健身”Fi 是什么?我应该将其视为所有适应度的乘积吗?
例如,在我正在编写(处理)的代码中:
float sharedFitnessA = (a.f2*a.f3) / nicheCountA;
谢谢
n
对于多目标优化,适应度共享的目标(将人口分布在搜索空间中的多个不同峰上,每个峰接收与该峰高度成比例的人口的一部分)通常以不同的方式追求。
当两个候选人都被支配或都非支配(因此他们很可能在同一个等价类中)时,利基计数Mi
用于选择“最合适”的候选人。
例如
(此处沿 x 轴最大化并在 y 轴上最小化)
候选人不受比较集的支配。从帕累托的角度来看,两者都不是首选。使用Mi
我们选择 Candidate2(最小的利基数量,因此其利基中的个体数量最少)。
这称为等价类共享,它不是基于适应度退化(即Fi / Mi
),但无论如何都保持前端的多样性。
有关更多详细信息,请查看Jeffrey Horn 和 Nicholas Nafpliotis的使用 Niched Pareto 遗传算法的多目标优化(它还包含一些实现细节)。