tournament selection是指聯賽選擇算法,聯賽選擇算法是遺傳算法中選著個體進化下一代的選擇算法。與Roulette Wheel Selection算法的功能相同,但算法不同。
基本介紹
- 中文名:聯賽選擇算法
- 外文名:tournament selection
算法描述,算法比較,算法實現,
算法描述
tournament selection 聯賽選擇算法
算法思想:k個個體競爭產生下一代,優勝劣出!隨機挑選k個競爭者,在交配池中競爭每一位基因遺傳,適應性最好的將獲得該基因的遺傳權。如下:
算法比較
tournament selection算法避免了Roulette Wheel Selection算法的缺點,關於Roulette Wheel Selection算法的缺點,如下:
Roulette Wheel Selection缺點,健壯性比較差,有以下兩點:
1. 選擇個體的機率與目標函式的形狀有很大關係,這是需要避免的。
2. 選擇個體的機率與目標函式的偏移有很大關係,這是需要避免的。
算法實現
(java)
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;
}
}
}