From a0abdd9e5995eecd302ca71f2365a4833c52c4ab Mon Sep 17 00:00:00 2001 From: Karryanna Date: Tue, 9 Jun 2015 14:17:06 +0200 Subject: [PATCH] Labelling: Scrap of penalties for not placing a label --- labeller.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/labeller.c b/labeller.c index 2f5a176..309e209 100644 --- a/labeller.c +++ b/labeller.c @@ -129,6 +129,9 @@ int individual_overlap(struct individual *individual); double get_distance(struct placement *p); double individual_distances(struct individual *individual); +double get_omittment(struct placement *p); +double individual_omittment(struct individual *individual); + struct individual **perform_crossover(struct individual *parent1, struct individual *parent2); void perform_mutation(struct individual *individual); void init_placement(struct placement *p, struct individual *individual, struct request *r); @@ -1536,6 +1539,34 @@ double individual_distances(struct individual *individual) return distances; } +double get_omittment(struct placement *p) +{ + if (p->variant_used >= 0) return 0; + + // FIX ME :) + switch (p->request->type) + { + case REQUEST_POINT: + case REQUEST_AREA: + return 10; + break; + default: + return 0; + } +} + +double individual_omittment(struct individual *individual) +{ + int omittment = 0; + + for (uns i=0; iplacements); i++) + { + omittment += get_omittment(&individual->placements[i]); + } + + return omittment; +} + int cmp_individual(const void *a, const void *b) { struct individual **ia = (struct individual **) a; @@ -1554,6 +1585,11 @@ void rank_population(void) printf("Individual %d\n", i); population1[i]->penalty = 0; + penalty = individual_omittment(population1[i]); + if (dbg_rank >= VERBOSITY_INDIVIDUAL) + printf("Increasing penalty by %d for omittment\n", penalty); + population1[i]->penalty += penalty; + penalty = individual_overlap(population1[i]); if (dbg_rank >= VERBOSITY_INDIVIDUAL) printf("Increasing penalty by %d for overlap\n", penalty); -- 2.39.2