1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| //calcul de gain
double gain;
Matrix<int>nbr(n+1);
Matrix<double,2>dis(n+1,n+1);
Matrix<int,3>arc(n+1,n+3,n+3);
Matrix<int>id(n+3);
Matrix<int,3>mat(n+1,n+3,n+3);
void calcgain(Matrix<int,1>&id, Matrix<int,1>&nbr, Matrix<double,2>&dis, Matrix<int,3>&arc, Matrix<int,3>&mat);
{
for(int s=1; s<=n; s++){
id(s)=0;
for(int i=1; i<=nbr(s)+1; i++){
for(int j=i+1; j<=nbr(s)+1; j++){
gain=(dis(arc(s,i,1),arc(s,j,1))+dis(arc(s,i,2),(arc(s,j,2))))-(dis(arc(s,i,1),arc(s,i,2))+dis(arc(s,j,1),arc(s,j,2)));
if(gain<0){
id(s)=id(s)+1;
mat(s,id(s),1)=arc(s,i,2);
mat(s,id(s),2)=arc(s,j,1);
}
}
}
}
} |
Partager