Example #1
0
/* Iterates the bat */
void iterate_bat(Game *game) {
	switch(game->bat->type) {
		case BAT_WIDE :
		case BAT_DEFAULT :
			move_bat(game);
			break;
		case BAT_LASER :
			move_bat(game);
			iterate_bat_laser(game);
			break;
		default :
			g_assert_not_reached();
	}
}
Example #2
0
int main()
{
    srand(time(NULL));
    data dat;
    readfile(dat, "../../data/ks_19_0");
    int items = dat[0].value;
    population *pop, popalpha;
    initialize_population(popalpha, items);
    pop = &popalpha;
    //print(*pop);

    bat best = get_best(*pop);

    int iterations = 200;
    while(iterations > 0){
        new_solutions(*pop,dat);
        calc_fitness(*pop, dat);
        if(getrand()> 0.5){
            best = get_best(*pop);
            move_bat(best, rand()%5, dat); // amplitude is 2
        }

        if(fitness(best, dat) > fitness((*pop).best, dat))
            (*pop).best = best;

        iterations--;
    }
    print(*pop);
}
Example #3
0
void new_solutions(population &pop, data dat)
{
    int items = pop.items;

    for(int i = 0; i < items; i++)
    {
        pop.freq[i] = freq_min + (freq_max - freq_min)*getrand();
        pop.velocity[i] = (int)distance(pop.bats[i], pop.bats[0], items)*pop.freq[i];
        move_bat(pop.bats[i], pop.velocity[i], dat);
        pop.rate[i] = 0.5;
    }
}
Example #4
0
/* When the mouse moves, move the bat. */
void handle_mouse_event(nbstate *state, GR_EVENT_MOUSE *ev)
{
	move_bat(state, ev->x - state->winx);
}