void chrono_list_stop(struct chrono_list_t *chrono_list, int idx) { struct chrono_t *chrono; if (idx < 0 || idx >= list_count(chrono_list->list)) return; chrono = list_get(chrono_list->list, idx); chrono_stop(chrono); }
int main(const int argc, const char * argv[]) { const char * program_short_name, * input_name, * output_name; unsigned int nb_mutations; instance data; solution sol; chrono timer; int read_status, write_status; program_short_name = get_program_short_name(argv[0]); if((argc != 3) && (argc != 4)) { printf("Syntaxe pour utiliser ce programme :\t"); printf("%s input_name output_name nb_mutations\n", program_short_name); puts("\tinput_name \tnom du ficher contenant l'instance (obligatoire)"); puts("\toutput_name \tnom du ficher dans lequel ecrire la solution (obligatoire)"); puts("\tnb_mutations\tnombre de mutations a chaque iteration de l'algorithme (optionnel ; valeur par defaut = nombre de jobs dans l'instance)"); return EXIT_FAILURE; } input_name = argv[1]; output_name = argv[2]; switch(argc) { case(3): nb_mutations = 0; break; case(4): nb_mutations = read_nb_mutations(argv[3]); if(nb_mutations == 0) { printf("Erreur : nombre de mutations incorrect (\"%s\")\n", argv[3]); return EXIT_FAILURE; } break; } read_status = read_instance(&data, input_name); switch(read_status) { case(INPUT_ERROR_OPEN): printf("Erreur : impossible d'ouvrir le fichier \"%s\"\n", input_name); return EXIT_FAILURE; case(INPUT_ERROR_SYNTAX): printf("Erreur : la syntaxe du fichier \"%s\" est incorrecte.\n", input_name); return EXIT_FAILURE; case(INPUT_SUCCESS): puts("Lecture de l'instance : OK"); timer = chrono_new(); srand(time(NULL)); puts("Algorithme : START"); chrono_start(timer); sol = find_solution(data, nb_mutations); chrono_stop(timer); puts("Algorithme : STOP"); solution_set_cpu_time(sol, chrono_get_time(timer)); write_status = write_solution(&sol, output_name); solution_delete(sol); instance_delete(data); chrono_delete(timer); switch(write_status) { case(OUTPUT_ERROR): printf("Erreur : impossible d'ouvrir ou de creer le fichier \"%s\"\n", output_name); return EXIT_FAILURE; case(OUTPUT_SUCCESS): puts("Ecriture de la solution : OK"); break; // return EXIT_SUCCESS; } } return EXIT_SUCCESS; }