// ---------------------------------------------------------------------- 2opt // Precondizione: sol ha n+1 elementi, l'ultimo e' uguale al primo public int Loc2optASIM(int[] sol, int[,] d) { int znew=-1,zold; int[] solnew = new int[sol.Length]; int[] zorario = new int[sol.Length]; // costi incrementali tour in senso orario int[] zantior = new int[sol.Length]; // costi incrementali tour in senso antiorario int end1a,end2a,end1b,end2b,cost1,cost2; int nk; int i; int nsol = sol.Length; // con l'ultimo uguale al primo if(nsol <= 3) goto end; lab100: zold = 0; // qui si inizia una uova ricerca zorario[0] = 0; zantior[nsol-1] = 0; for(int js=0;js=ind1;lk--) // ind1 ... ind2-1 (reversed) { nk++; solnew[nk]=sol[lk]; } for(nk=ind2;nk