-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfitness.c
More file actions
22 lines (21 loc) · 782 Bytes
/
fitness.c
File metadata and controls
22 lines (21 loc) · 782 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "a4.h"
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
double comp_distance(const PIXEL *A, const PIXEL *B, int image_size) {
double sum = 0;
for (int i = 0; i < image_size; i++) {
sum += (double)((A[i].r - B[i].r) * (A[i].r - B[i].r)) +
(double)((A[i].g - B[i].g) * (A[i].g - B[i].g)) +
(double)((A[i].b - B[i].b) * (A[i].b - B[i].b));
}
return sqrt(sum);
}
void comp_fitness_population(const PIXEL *image, Individual *individual,
int population_size) {
int image_size = individual[0].image.width * individual[0].image.height;
for (int i = 0; i < population_size; i++) {
individual[i].fitness =
comp_distance(image, individual[i].image.data, image_size);
}
}