Rechercher : dans
Par :

Algo génétique, voyageur de commerce

michaelknight00, le 20 nov 2007 à 18:42:45 
 Signaler ce message aux modérateurs

Bonjour, j'ai un pb, je travaille sur la résolution du PVC avec algo génétiques et je ne comprends pas les fonction suivantes parcourschemin et sexe. Avec mens[][], un tableau de int rempli avec les coordonnées des villes, et dm la taille du cadre ds lequel je situe ems villes.
Pourriez-vous m'aider, je ne m'en sors vraiment pas, si besoin, je peux vs donner le programme entier. Merci bcp !!

private void parcourchemin(int i, int j){
int x=(mens[i][0]+mens[i][j*2+2])%dm;
int y=(mens[i][1]+mens[i][j*2+3])%dm;
double dmin=-1, d;
int l=0, k;
for (k=j+1;k<nbrvilles;k++){
d=Math.sqrt(Math.pow(x-posx[k],2)+Math.pow(y-posy[k],2));
if (d<dmin || dmin<0){
dmin=d;
l=k;
}
}
mens[i][0]=posx[l];
mens[i][1]=posy[l];
inv(j+1,l);
}

private void sexe(int i, int j, int k){
int l, m;
for (l=0;l<2+nbrvilles+nbrvilles;l++){
m=aleatoire.nextInt(30);
if (m==0)
mens[k][l]=(mens[k][j]+mens[k][i])%dm;
else if (m==1)
mens[k][l]=aleatoire.nextInt(dm);
else if (m%2==0)
mens[k][l]=mens[k][j];
else
mens[k][l]=mens[k][i];
}
}

Avec inv qui inverse des couples de coordonnées :
private void inv(int i, int j){
int a;
a=posx[i];
posx[i]=posx[j];
posx[j]=a;
a=posy[i];
posy[i]=posy[j];
posy[j]=a;
}

Configuration: Windows XP
Firefox 2.0.0.9