1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
public Vector<Individu> mutation(Vector<Individu> tabMeilleurs){
// Tableau d'individus mutés
Vector<Individu> mutants = new Vector<Individu>();
// Taille des meilleurs individus
int tailleMI = tabMeilleurs.size();
// Taille d'un individu
int tailleI = tabMeilleurs.get(0).getTailleIndividu();
// Selon taux de mutation
// Ici pour l'exemple on va muter 7 fois des individus au hasard
for(int i=0; i<7; i++){
// Choix aléatoire de l'individu à muter dans N meilleurs
int positionMI = (int)(Math.random() * (tailleMI));
System.out.println("Position dans tableau meilleurs individus : " + positionMI);
// Choix au hasard du gène de l'individu à muter
int positionI = (int)(Math.random() * (tailleI));
// Tire au hasard d'un nombre entre -3 et 3
int val = (int)(Math.random() * ((3 - (-3)) + 1) + (-3) );
// Un nouveau individu qui est égal au meilleur individu à la positionMI
Individu individu = tabMI.get(positionMI);
// Mutation à la positionI par la valeur val de l'individu à la positionMI
individu.setVal(positionI, val); // setVal est une méthode de la classe Individu
mutants.add(individu);
}
return mutants;
} |