On peut améliorer la fonction fight, pour qu’elle ne choisisse pas toujours le meilleur individu. Il serait bon que, dans une faible proportion, elle choisisse parfois le plus faible des deux combattants ; ceci pour assurer qu’on ne perde pas de matériel génétique.

Voici donc la nouvelle fonction fight:

function fight(scores, index1, index2)
  if rand() < 0.8
    scores[index1] > scores[index2] ? index1 : index2
  else
    scores[index1] > scores[index2] ? index2 : index1
  end
end

Dans 80% des cas, elle selectionne le meilleur individu, et dans 20% des cas, elle selectionne le plus faible.

Je pense qu’on a maintenant tous les éléments nécessaire à la finalisation de l’algorithme.

À demain.