錦標賽選擇:
- 錦標賽選擇是從個體的羣體中選擇的個體的方法。
- 錦標賽選擇包括在從羣體中隨機選擇的幾個人中進行幾次「錦標賽」。
- 每個錦標賽的勝者(具有最佳身體素質的)被選爲交叉。
- 當錦標賽規模較小時,錦標賽選擇也給所有人選擇機會,因此它保留了多樣性,但保持多樣性可能會降低收斂速度。
- 但是,如果錦標賽規模較大,弱個體選擇機會較小會導致多樣性的喪失。
僞代碼:
choose k (the tournament size) individuals from the population at random
choose the best individual from pool/tournament with probability p
choose the second best individual with probability p*(1-p)
choose the third best individual with probability p*((1-p)^2)
and so on...
確定性錦標賽選擇選擇最佳個體(當p = 1)在任何比賽。單向錦標賽(k = 1)選擇相當於隨機選擇。如果需要,所選擇的個體可以從選擇的羣體中移除,否則個體可以爲下一代選擇不止一次。與(隨機)健身比例選擇方法相比,比賽選擇通常由於缺乏隨機噪聲而在實踐中實施。
錦標賽選擇MatLab中:
Matepool=randi(PopLength,PopLength,2);%%select two individuals randomly for tournament and chooose the one with best fitness value
%% number of tournament is equal to the number of population size
for i=1:PopLength
if Fitness(Matepool(i,1))>= Fitness(Matepool(i,2))
SelectedPop(i,1:IndLength)=CurrentPop(Matepool(i,1),1:IndLength);
else
SelectedPop(i,1:IndLength)=CurrentPop(Matepool(i,2),1:IndLength);
end
end
請相應地格式化你的代碼。 http://stackoverflow.com/editing-help – bdhar 2011-02-02 10:22:07
哦,對不起! 看起來像別人已經有了,我會記住下次。 – Reu 2011-02-02 10:25:13