トーナメント選択:
- トーナメントの選択は、個人の集団から個体を選択する方法です。
- トーナメントの選択には、人口から無作為に選ばれた少数の個人の中でいくつかの「トーナメント」を実行する必要があります。
- 各トーナメントの勝者(最高の適合度を持つ選手)がクロスオーバーのために選択されます。
- トーナメントのサイズが小さい場合、トーナメントの選択もすべての個人に選択される可能性があり、多様性を維持するとコンバージェンス速度が低下する可能性がありますが、多様性は維持されます。
- しかし、トーナメントのサイズが大きければ、弱い人が選択される可能性が低くなり、多様性が失われます。
擬似コード:
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)を選択します。 1-wayトーナメント(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
ああ、申し訳ありません! 他の誰かがすでに持っているように見えますが、次回はこれを覚えています。 – Reu