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