]> mj.ucw.cz Git - leo.git/commitdiff
Labelling: Scrap of penalties for not placing a label
authorKarryanna <karry@karryanna.cz>
Tue, 9 Jun 2015 12:17:06 +0000 (14:17 +0200)
committerKarryanna <karry@karryanna.cz>
Tue, 9 Jun 2015 12:17:06 +0000 (14:17 +0200)
labeller.c

index 2f5a176f18c6bf79d354401945fff0aa56d5606a..309e209adb1591ee2b061530ce8ce866d0acf3f1 100644 (file)
@@ -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; i<GARY_SIZE(individual->placements); 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);