slm,svp j'ai un problème je vue initialiser une population par des chromosome voici la méthode qui j'ai fait et voila comment j'ai initialiser les chromosomes::
et chaque chromosome elle à une valeur d'évaluation(fitness)
je vue trie la population en ordre décroisent selon la valeur fitness de chaque chromosome j'ai utiliser la méthode trie par selection et une méthod de sortByFitness
voila les deux méthode qui j'ai utiliser mais la population elle n'est pas trie je sais pas où le problème
//méthode qui intialiser la population
public Population initialisPopulation() {
for(int i=0;i<chromosomes.length;i++) {
chromosomes[i]= new Chromosom(AlgoGenetique.lchro).initialiseChromosome();
}
//méthode qui intialiser la population
public Chromosom initialiseChromosome(){
char a[]= {'H','B','D','G'};
int x= a.length;
Random rd=new Random();
for(int i=0;i<genes.length;i++) {
int k= rd.nextInt(x);
genes[i]=a[k]; }
return this;
}
//méthode tri_selection
public void tri_selection(Population p,int l) {
Chromosom ch=new Chromosom(p.getChromosomes()[0].getGenes().length);
for (int i = 0; i < p.getChromosomes().length - 1; i++) {
int index = i;
for (int j = i + 1; j < p.getChromosomes().length; j++){
if ( p.getChromosomes()[j].getFitness( p.getChromosomes()[j],l) > p.getChromosomes()[index].getFitness(p.getChromosomes()[index],l)){
index = j;}
}
ch=p.getChromosomes()[index];
p.getChromosomes()[index]=p.getChromosomes()[i];
p.getChromosomes()[i]=ch;
}}
//méthode sortByFitness
public void sortByFitness(int l){
Arrays.sort(chromosomes,(chromosome1,chromosome2)->{
int flag=0;
if(chromosome1.getFitness( chromosome1, l)>chromosome2.getFitness(chromosome2,l)) flag=-1;
else if(chromosome1.getFitness(chromosome1,l)<chromosome2.getFitness(chromosome2,l)) flag=1;
return flag;
});
}
Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.
Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).
De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.
Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.
Pour modifier votre titre, éditez le premier message de votre sujet.
//méthode qui intialiser la population
public Population initialisPopulation() {
for(int i=0;i<chromosomes.length;i++) {
chromosomes[i]= new Chromosom(AlgoGenetique.lchro).initialiseChromosome();
}
//méthode qui intialiser le chromosome
public Chromosom initialiseChromosome(){
char a[]= {'H','B','D','G'};
int x= a.length;
Random rd=new Random();
for(int i=0;i<genes.length;i++) {
int k= rd.nextInt(x);
genes[i]=a[k]; }
return this;
}
//méthode tri_selection
public void tri_selection(Population p,int l) {
Chromosom ch=new Chromosom(p.getChromosomes()[0].getGenes().length);
for (int i = 0; i < p.getChromosomes().length - 1; i++) {
int index = i;
for (int j = i + 1; j < p.getChromosomes().length; j++){
if ( p.getChromosomes()[j].getFitness( p.getChromosomes()[j],l) > p.getChromosomes()[index].getFitness(p.getChromosomes()[index],l)){
index = j;}
}
ch=p.getChromosomes()[index];
p.getChromosomes()[index]=p.getChromosomes()[i];
p.getChromosomes()[i]=ch;
}}
//méthode sortByFitness
public void sortByFitness(int l){
Arrays.sort(chromosomes,(chromosome1,chromosome2)->{
int flag=0;
if(chromosome1.getFitness( chromosome1, l)>chromosome2.getFitness(chromosome2,l)) flag=-1;
else if(chromosome1.getFitness(chromosome1,l)<chromosome2.getFitness(chromosome2,l)) flag=1;
return flag;
});
}
@zozozi Bonjour, merci de bien vouloir changer le titre de votre sujet comme demandé, en fonction de votre problématique.
problème en java
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Pas d'aide concernant le code par MP, le forum est là pour ça :)
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl