/** * Fonction main. */ int main (int argc, char *argv[]) { double **distances; double *abscisses; double *ordonnees; unsigned int nb_villes; //Initialisation du timer pour mesurer des temps (compiler avec -lrt) struct timespec myTimerStart; clock_gettime(CLOCK_REALTIME, &myTimerStart); //Exemple de mesure du temps lire_donnees("defi250.csv", &nb_villes, &distances, &abscisses, &ordonnees); //Récupération du timer et affichage struct timespec current; clock_gettime(CLOCK_REALTIME, ¤t); //Linux gettime double elapsed_in_ms = (( current.tv_sec - myTimerStart.tv_sec) *1000 + ( current.tv_nsec - myTimerStart.tv_nsec)/1000000.0); printf("Temps passe (ms) : %lf\n", elapsed_in_ms); t_cycle chemin; chemin.taille = 1; chemin.poids =0; chemin.c[0] = 1; t_cycle meilleur; meilleur.taille = 1; meilleur.poids =64000; meilleur.c[0] = 1; int i = 0; // ------------------------------------ Exact naif printf("\033[0;35m%s\033[0m\n","Exact naif:"); for(i= 1; i<= EXACT_NAIF_NB_VILLES;i++) { chemin.taille = 1; chemin.poids =0; chemin.c[0] = 1; meilleur.taille = 1; meilleur.poids =64000; meilleur.c[0] = 1; clock_gettime(CLOCK_REALTIME, &myTimerStart); PVC_exact_naif(i,distances, &chemin,&meilleur); clock_gettime(CLOCK_REALTIME, ¤t); //Linux gettime elapsed_in_ms = (( current.tv_sec - myTimerStart.tv_sec) *1000 + ( current.tv_nsec - myTimerStart.tv_nsec)/1000000.0); printf("[Exact naif, %d villes] Temps passe (ms) : %lf\n",i, elapsed_in_ms); } // ---------------------------------- Exact B & B printf("\033[0;35m%s\033[0m\n","Exact branch and bound:"); for(i= 1; i<= EXACT_BRANCH_BOUND_NB_VILLES ;i++) { chemin.taille = 1; chemin.poids =0; chemin.c[0] = 1; meilleur.taille = 1; meilleur.poids =64000; meilleur.c[0] = 1; clock_gettime(CLOCK_REALTIME, &myTimerStart); PVC_exact_branch_and_bound(i,distances, &chemin,&meilleur); clock_gettime(CLOCK_REALTIME, ¤t); //Linux gettime elapsed_in_ms = (( current.tv_sec - myTimerStart.tv_sec) *1000 + ( current.tv_nsec - myTimerStart.tv_nsec)/1000000.0); printf("[Exact branch and bound, %d villes] Temps passe (ms) : %lf\n",i, elapsed_in_ms); } // --------------------------------- Approche PPV printf("\033[0;35m%s\033[0m\n","Approche ppv:"); for(i= 1; i<= APPROCHE_PPV_NB_VILLES ;i++) { chemin.taille = 0; chemin.poids =0; chemin.c[0] = 1; clock_gettime(CLOCK_REALTIME, &myTimerStart); PVC_approche_ppv(i,distances, &chemin); clock_gettime(CLOCK_REALTIME, ¤t); //Linux gettime elapsed_in_ms = (( current.tv_sec - myTimerStart.tv_sec) *1000 + ( current.tv_nsec - myTimerStart.tv_nsec)/1000000.0); printf("[Approche PPV, %d villes] Temps passe (ms) : %lf\n",i, elapsed_in_ms); } // ----------------------------------------- ACM printf("\033[0;35m%s\033[0m\n","Calcul ACM:"); double ** K; int nbVilles = CALCUL_ACM; FILE * arbreCouvrantMin = fopen ("arbreCouvrantMin.dot","w+"); fprintf(arbreCouvrantMin,"graph Tree\n{\n"); K = calcul_ACM(nbVilles, distances); printf("Arbre couvrant minimal avec %d villes (%d a %d)\n",nbVilles,0,nbVilles-1); //for(i=0; i< nbVilles-1; i++) //{ // fprintf(arbreCouvrantMin,"\t%d [pos = \"%f,%f!\"];\n",i, abscisses[i],1000*ordonnees[i]); //} for(i=0; i< nbVilles-1; i++) { printf("k: %f-%f\n", K[i][0],K[i][1]); fprintf(arbreCouvrantMin,"\t%d--%d;\n", (int)K[i][0],(int)K[i][1]); } fprintf(arbreCouvrantMin,"}"); fclose(arbreCouvrantMin); // ---------------------------------- Affichage afficher_cycle_html(chemin, abscisses, ordonnees); system(SHELLSCRIPT); cycle_hamiltonien_ACM(nbVilles,K); // ------------- Libérations mem et terminaison supprimer_distances_et_coordonnees(nb_villes, distances, abscisses, ordonnees); return 0; // ----------------------------- Stuff commenté //int i = 0; //for(i = 0;i<5; i++) //{ // printf("%d\n",meilleur.c[i]); //} //printf("%d\n",meilleur.taille); //printf("%f\n",meilleur.poids); // //Affichage des distances //afficher_distances(nb_villes,distances); ////naif //t_cycle cycle; //cycle.taille=3; //cycle.c[0]=0; //cycle.c[1]=1; //cycle.c[2]=2; //afficher_cycle_html(cycle, abscisses, ordonnees); //double ** Aretes = trier_aretes(nb_villes, distances); /// <-- Kruskal Here //supprimer_aretes(nb_villes, Aretes); XXX effectué directement dans calcul_ACM ... }
int main(int ac,char **av) { t_ptr_capteur c; /*objet de la struct capteur */ //GR_WINDOW_ID wind; /* identifiant de la fenêtre */ //GR_GC_ID gc; /* identifiant du contexte graphique */ /*Configuration de l'ecran*/ //wind = GrNewWindow(1, 5, 5, 150, 600, 5, BLACK, WHITE); /*(parent, x, y, largeur, hauteur, taille de bordure, couleur du fond, couleur du bord) */ //GrMapWindow(wind); /*affichage de la fenêtre */ //gc = GrNewGC(); /*Création d'un nouveau contexte graphique */ //GrSetGCForeground(gc, WHITE); //GrSetGCUseBackground(gc, GR_FALSE); int code, fd1, fd2; system("insmod adc_s3c44.o");// Chargement du driver pour CAN system("insmod i2c_s3c44.o");// Chargement du driver du Bus I2C do{ menu(); code = 0; while(code == 0) { if(Push_Button() == 1) { printf("Temperature en Celsius\n") ; lire_donnees(c); affichage(/*wind, gc,*/ c, 1); sleep(2); while(Push_Button() != 4){} code = 1; break; } if(Push_Button() == 2) { printf("Temperature en Fahrenheit\n") ; lire_donnees(c); affichage(/*wind, gc,*/ c, 2); sleep(2); while(Push_Button() != 4){} code = 1; break; } if(Push_Button() == 3) { printf(" GOODBYE SEE YOU SOON\n") ; sleep(4); code = 0; break; } } }while(code == 1); //GrDrawImageFromFile(wind, gc, 30, 50, 50, 50, SOLEIL , 0 ); /*Fermeture du dispositif graphique*/ //GrClose(); return 0; }