Вы можете изменить tournament_selection
так, чтобы он возвращал двух родителей:
def tournament_selection(population):
parents = random.choices(population, k=5)
parents = sorted(parents, key=lambda agent: agent.fitness, reverse=True)
return parents[0], parents[1]
Тогда единственное другое необходимое изменение будет состоять в том, чтобы заменить ваши строки p1 =
и p2 =
одной строкой:
p1, p2 = tournament_selection(agents)