コード例 #1
0
ファイル: solve_test.c プロジェクト: compbrain/Athena-SCG-Bot
static char *test_clause_is_satisfied() {
    clause *c;
    solution *s;

    int vars[3] = { 0, 1, 2 };
    c = clause_create(22, 3, vars);
    s = malloc(sizeof(solution));
    s->values = malloc(sizeof(int) * 3);
    *(s->values+0) = TRUE;
    *(s->values+1) = FALSE;
    *(s->values+2) = FALSE;
    /* Relation Number is 22 (1in3) */
    mu_assert("(22 v0 v1 v2) with ((v0 true) (v1 false) (v2 false) ...)",
              clause_is_satisfied(c, s));
    *(s->values+0) = TRUE;
    *(s->values+1) = TRUE;
    *(s->values+2) = FALSE;
    mu_assert("(22 v0 v1 v2) with ((v0 true) (v1 true) (v2 false) ...)",
              !clause_is_satisfied(c, s));

    /* Relation Number is 2 (first variable is true in 3) */
    c->rn = 2;
    *(s->values+0) = TRUE;
    *(s->values+1) = FALSE;
    *(s->values+2) = FALSE;
    mu_assert("(2 v0 v1 v2) with ((v0 true) (v1 false) (v2 false) ...)",
              clause_is_satisfied(c, s));
    *(s->values+0) = FALSE;
    *(s->values+1) = TRUE;
    *(s->values+2) = FALSE;
    mu_assert("(2 v0 v1 v2) with ((v0 false) (v1 true) (v2 false) ...)",
              !clause_is_satisfied(c, s));
    
    /* Relation Number is 16 (last variable is true in 3) */
    c->rn = 16;
    *(s->values+0) = TRUE;
    *(s->values+1) = TRUE;
    *(s->values+2) = FALSE;
    mu_assert("(8 v0 v1 v2) with ((v0 true) (v1 true) (v2 false) ...)",
              !clause_is_satisfied(c, s));
    *(s->values+0) = FALSE;
    *(s->values+1) = FALSE;
    *(s->values+2) = TRUE;
    mu_assert("(8 v0 v1 v2) with ((v0 false) (v1 false) (v2 true) ...)",
              clause_is_satisfied(c, s));

    clause_delete(c);
    solution_delete(s);
    
    return NULL;
}
コード例 #2
0
ファイル: main.c プロジェクト: ppa-go/scheduling-routing
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;
}