Ejemplo n.º 1
0
int test_point_crossover(void)
{
    int i;
    struct test *t;
    struct tree *t1;
    struct tree *t2;
    char *t1_before;
    char *t2_before;
    char *t1_after;
    char *t2_after;

    /* setup */
    t = malloc(sizeof(struct test));
    test_setup_function_set(t);
    test_setup_terminal_set(t);

    for (i = 0; i < 1; i++) {
        /* generate tree 1 and 2 */
        t1 = tree_generate(FULL, t->fs, t->ts, 1);
        t2 = tree_generate(FULL, t->fs, t->ts, 1);

        /* before crossover */
        mu_print("BEFORE:\n");
        t1_before = tree_string(t1);
        t2_before = tree_string(t2);
        mu_print("t1 tree: %s\n", t1_before);
        mu_print("t2 tree: %s\n", t2_before);
        mu_print("t1 size: %d depth %d\n", t1->size, t1->depth);
        mu_print("t2 size: %d depth %d\n", t2->size, t2->depth);

        /* crossover */
        point_crossover(t1, t2);

        /* after crossover */
        mu_print("AFTER:\n");
        t1_after = tree_string(t1);
        t2_after = tree_string(t2);
        mu_print("t1 tree: %s\n", t1_after);
        mu_print("t2 tree: %s\n", t2_after);
        mu_print("t1 size: %d depth %d\n", t1->size, t1->depth);
        mu_print("t2 size: %d depth %d\n", t2->size, t2->depth);
        mu_print("\n");

        /* clean up */
        tree_destroy(t1);
        tree_destroy(t2);
        free(t1_before);
        free(t2_before);
        free(t1_after);
        free(t2_after);
    }

    /* clean up */
    test_teardown_function_set(t);
    test_teardown_terminal_set(t);
    free(t);

    return 0;
}
Ejemplo n.º 2
0
void setup(void)
{
    /* function set */
    struct function *functions[9] = {
        function_new_func(ADD, 2),
        function_new_func(SUB, 2),
        function_new_func(MUL, 2),
        function_new_func(DIV, 2),
        function_new_func(POW, 2),

        function_new_func(LOG, 1),
        function_new_func(EXP, 1),
        function_new_func(SIN, 1),
        function_new_func(COS, 1)
    };
    fs = function_set_new(functions, 9);

    /* terminal set */
    int one = 1;
    float two = 2.0;
    const char *three = "three";

    float min = 0.0;
    float max = 100.0;

    struct terminal *terminals[4] = {
        terminal_new_constant(INTEGER, &one),
        terminal_new_constant(FLOAT, &two),
        terminal_new_constant(STRING, (void *) three),
        terminal_new_random_constant(FLOAT, &min, &max, 2)
    };
    ts = terminal_set_new(terminals, 4);

    /* generate trees */
    t1 = tree_generate(FULL, fs, ts, 1);
    t2 = tree_generate(FULL, fs, ts, 1);
}