示例#1
0
Population::Population()
{
    //load_from_file();
    iterator = 0;
    generate_random_population();
    this->load_from_file();

    //    Game * game = new Game();
    //    generate_one_gene_population(game, 1);

    this->timer = new QTimer();
    connect(timer, SIGNAL(timeout()),this,SLOT(loop()));
    timer->start(10);
}
示例#2
0
Population::Population(Game *game)
{
    iterator = 0;
    this->game = game;
    generate_random_population(game);
//    generate_one_gene_population(game, 0);
//    this->load_from_file();

    for(int i=1; i<POPULATION_SIZE; i++)
        this->hybridization(i-1,i);
    for(int i=0; i<POPULATION_SIZE; i++)
        this->mutation(i);

    //    this->print_population();
    //    this->save_to_file();

    this->timer = new QTimer();
    connect(timer, SIGNAL(timeout()),this,SLOT(loop()));
    timer->start(10);
}
示例#3
0
int main(void) {
	int n;
	FILE* fptr = fopen("input.in", "r");
	assert(fptr != NULL);
	
	n =	count_lines(fptr);
	printf("\nNumber of cities: %i\n",n);
	
	/*Init cities*/
	City* cities[n];
	read_cities(fptr, cities);
	printf("Init cities succesful... \n");
	
	/*Init distances*/
	double** distances;
	distances=calculate_distances(distances,cities, n);
	printf("Init distances succesful... \n");
	
	/*Init GA config*/
	Config config;
	config.populationSize=1000;
	config.mutationRate=0.2;
	config.numGenerations=6000;
	config.numElitism=1;
	config.mutationSize=1;
	config.maxBreeding=10;
	config.numGenes=n;
	printf("Init GA config succesful... \n");
	
	/*Init random seed*/
	srand ( time(NULL) );
	printf("Init random seed succesful... \n");
	
	/*Init population*/
    Population population;
	generate_random_population(&population, distances, &config);
	printf("Init population succesful... \n");

    int numGenerations = 0;
	
	/*Start evolution*/
	while(numGenerations < config.numGenerations){
		numGenerations++;
		
		if (numGenerations%1000==0) 
		printf("Shortest path of %ith generation: %i\n", numGenerations, population.path[0].fitness);
		
		/*Sort population*/
		qsort(population.path, population.numPaths, sizeof(Path), compare_population);
			
		/*Breed population*/
		simple_breed_population(&population, config.numGenes, distances);
		
		/*Mutate population*/
		mutate_population(&population, distances, &config);
		
		
	}
	/*Sort population*/
	qsort(population.path, population.numPaths, sizeof(Path), compare_population);
	
	printf("Shortest path is %i\n", population.path[0].fitness);
	
	int i;
	for(i=0;i<config.numGenes;i++){
		
		print_city(cities[population.path[0].combination[i]]);
		
	}
	
	
return 0;
}