tournament selection

tournament selection是指聯賽選擇算法,聯賽選擇算法是遺傳算法中選著個體進化下一代的選擇算法。與Roulette Wheel Selection算法的功能相同,但算法不同。

基本介紹

  • 中文名:聯賽選擇算法
  • 外文名:tournament selection
算法描述,算法比較,算法實現,

算法描述

tournament selection 聯賽選擇算法
算法思想:k個個體競爭產生下一代,優勝劣出!隨機挑選k個競爭者,在交配池中競爭每一位基因遺傳,適應性最好的將獲得該基因的遺傳權。如下:
tournament selection

算法比較

tournament selection算法避免了Roulette Wheel Selection算法的缺點,關於Roulette Wheel Selection算法的缺點,如下:
Roulette Wheel Selection缺點,健壯性比較差,有以下兩點:
1. 選擇個體的機率與目標函式的形狀有很大關係,這是需要避免的。
2. 選擇個體的機率與目標函式的偏移有很大關係,這是需要避免的。

算法實現

(java)
tournament selection
public class TournamentSelection implements ISelectionAlgorithm {
@Override public void select(final Individual<?, ?>[] pop,
final Individual<?, ?>[] mate, final Random r) {
int i, j;
Individual<?, ?> x, y;
for (i = 0; i < mate.length; i++) {
x = pop[r.nextInt(pop.length)];
for (j = 1; j < this.k; j++) {
y = pop[r.nextInt(pop.length)];
if (y.v < x.v) { x = y; }
}
mate[i] = x;
}
}
}

相關詞條

熱門詞條

聯絡我們