Выбор турнира:
- Выбор турнира - это метод выбора персонажа из совокупности лиц.
- Выбор турнира предполагает проведение нескольких «турниров»среди нескольких лиц, выбранных случайным образом из населения.
- Для кроссовера выбирается победитель каждого турнира (с наилучшей подготовкой).
- Когда размер турнира меньше, выбор турнира также дает возможность выбрать всех участников итаким образом, он сохраняет разнообразие, хотя сохранение разнообразия может ухудшить скорость конвергенции.
- Но если размер турнира больше, у слабых людей меньше шансов быть выбранным, что приводит к потере разнообразия.
Псевдокод:
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