void printTour( long int *t ) /* FUNCTION: print the tour *t INPUT: pointer to a tour OUTPUT: none */ { long int i; printf("\n"); for( i = 0 ; i <= n ; i++ ) { if (!i%25) printf("\n"); printf("%ld ", t[i]); } printf("\n"); printf("Tour length = %ld\n\n",compute_tour_length( t )); }
static void construct_solutions(void) {/*{{{*/ int k, i, step, r; /* Fase 1: esvaziar a memória das formigas marcando todas as cidades como * não visitadas. */ for (k = 0; k < M; k++) { ant[k].tour_length = 0; for (i = 0; i < N; i++) { ant[k].visited[i] = FALSE; } } /* Fase 2: atribuir a cada formiga uma cidade inicial randomicamente. */ srand48(time(NULL)); step = 0; for (k = 0; k < M; k++) { r = lrand48() % N; ant[k].tour[step] = r; ant[k].visited[r] = TRUE; } /* Fase 3: cada formiga constrói uma rota completa. */ while (step < N-1) { step++; for (k = 0; k < M; k++) { neighbor_list_AS_decision_rule(k, step); } } /* Fase 4: as formigas voltam para a cidade inicial e o comprimento da rota * de cada rota da formiga é computado. */ for (k = 0; k < M; k++) { //por simplificaçao, repetir o identificador da primeira cidade na //última posição do array tour[]: ant[k].tour[N] = ant[k].tour[0]; ant[k].tour_length = compute_tour_length(k); } }/*}}}*/