X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=labeller.c;h=1db25fca59721a57be2199c4e79154de98772460;hb=3232a51a5fed20b6d3f0d6b9df0b8c66fdc75ca4;hp=b7b8ee4cdbc43d58d2b1b859bc0a033f2b687504;hpb=19d8760311b1e306939469380cfbb291103554f7;p=leo.git diff --git a/labeller.c b/labeller.c index b7b8ee4..1db25fc 100644 --- a/labeller.c +++ b/labeller.c @@ -122,6 +122,8 @@ void elite(void); void rank_population(void); void plan_individual(struct individual *individual); +int cmp_individual(const void *a, const void *b); + void make_bitmap(struct variant *v, struct symbol *sym); void make_bitmap_icon(struct variant *v, struct sym_icon *si); void make_bitmap_point(struct variant *v, struct sym_point *sp); @@ -1072,6 +1074,10 @@ void make_population(void) { for (int i=0; ipenalty - (*ib)->penalty; +} + void rank_population(void) { int penalty; @@ -1700,8 +1714,7 @@ int flip(int a, int b) double randdouble(void) { - // FIXME: How the hell shall double in range <0, 1> be generated? O:) - return 0.5; + return ((double) rand() / (double) RAND_MAX); } void cleanup(void) @@ -1714,10 +1727,19 @@ void cleanup(void) void copy_individual(struct individual *src, struct individual *dest) { - src->penalty = dest->penalty; + dest->penalty = src->penalty; GARY_INIT(dest->placements, GARY_SIZE(src->placements)); for (uns i=0; iplacements); i++) { dest->placements[i] = src->placements[i]; + dest->placements[i].map_links = NULL; + } + for (uns j=0; jmap); + GARY_INIT(part->placement, 0); + struct map_placement *mp = GARY_PUSH(part->placement); + mp->placement = &dummy_placement; + mp->next = mp->prev = NULL; } }