From: Karryanna Date: Tue, 12 May 2015 18:52:35 +0000 (+0200) Subject: Labelling: Placement shall containt pointer to individual X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=28e1d146759cc1ba99a7cd3447914de2f8c86554;p=leo.git Labelling: Placement shall containt pointer to individual --- diff --git a/labeller.c b/labeller.c index ff4e4a0..1a88bbc 100644 --- a/labeller.c +++ b/labeller.c @@ -139,7 +139,7 @@ struct individual **perform_crossover(struct individual *parent1, struct individ void perform_mutation(struct individual *individual); void hide_segment_labels(struct individual *individual); -void init_placement(struct placement *p, struct request *r); +void init_placement(struct placement *p, struct individual *individual, struct request *r); void init_individual(struct individual *i); struct map_part **get_parts(struct placement *symbol, struct individual *individual); @@ -1062,27 +1062,27 @@ void make_population(void) int p = 0; for (uns j=0; jplacements[p++]), (struct request *) &requests_point[j]); + init_placement(&(individual->placements[p++]), individual, (struct request *) &requests_point[j]); } for (uns j=0; jplacements[p++]), (struct request *) &requests_line[j]); + init_placement(&(individual->placements[p++]), individual, (struct request *) &requests_line[j]); for (uns k=0; kplacements[p++]), (struct request *) &requests_line[j].sections[k]); + init_placement(&(individual->placements[p++]), individual, (struct request *) &requests_line[j].sections[k]); for (uns l=0; lplacements[p++]), (struct request *) &requests_line[j].sections[k].segments[l]); + init_placement(&(individual->placements[p++]), individual, (struct request *) &requests_line[j].sections[k].segments[l]); } } } for (uns j=0; jplacements[p++]), (struct request *) &requests_area[j]); + init_placement(&(individual->placements[p++]), individual, (struct request *) &requests_area[j]); } hide_segment_labels(individual); @@ -1418,13 +1418,14 @@ void hide_segment_labels(struct individual *individual) } } -void init_placement(struct placement *p, struct request *r) +void init_placement(struct placement *p, struct individual *individual, struct request *r) { // FIXME p->request = r; p->processed = 0; p->x = p->y = 0; // To prevent valgrind from complaining p->variant_used = 0; + p->individual = individual; switch (r->type) { case REQUEST_POINT: ; diff --git a/labeller.h b/labeller.h index c16c43d..4e643df 100644 --- a/labeller.h +++ b/labeller.h @@ -152,6 +152,7 @@ struct placement double y; int variant_used; bool processed; + struct individual *individual; }; struct map_part