Skip to content
Snippets Groups Projects

Converting list to numpy array when calling the fitness function

Merged Gutama Ibrahim Mohammad requested to merge genetic-gutama into main
1 file
+ 8
9
Compare changes
  • Side-by-side
  • Inline
+ 8
9
import random
import math
import json
import numpy as np
def calculate_distance(ind):
x1, y1 = ind[0]
x2, y2 = ind[1]
@@ -29,11 +29,10 @@ def generate_random_coordinates(start_point, side_length):
Random coordinates of four points that are inside a square-box that is defined by the input parameters
"""
def one_coordinate():
return [random.uniform(start_point[0], start_point[0]+side_length), random.uniform(start_point[1], start_point[1]+side_length)]
return [(random.randint(start_point[0], start_point[0]+side_length), random.randint(start_point[1], start_point[1]+side_length)),
(random.randint(start_point[0], start_point[0]+side_length), random.randint(start_point[1], start_point[1]+side_length)),
(random.randint(start_point[0], start_point[0]+side_length), random.randint(start_point[1], start_point[1]+side_length)),
(random.randint(start_point[0], start_point[0]+side_length), random.randint(start_point[1], start_point[1]+side_length))]
return [one_coordinate(),one_coordinate(),one_coordinate(),one_coordinate()]
class Individual():
"""Indivual of four points
@@ -93,7 +92,7 @@ class Population():
self.fit_func = fit_func
self.population = [Individual(coordinates=generate_random_coordinates(self.__start_point, self.__side_length)) for _ in range(self.__size)]
for i in self.population:
i.set_fitness_score(self.fit_func(i.coordinates))
i.set_fitness_score(self.fit_func(np.array(i.coordinates)))
def get_size(self):
return self.__size
@@ -213,11 +212,11 @@ class Genetic_algorithm():
dad = top_individuals[i+1]
coordinate1 = [dad.coordinates[0], dad.coordinates[1], mom.coordinates[2], mom.coordinates[3]]
child1 = Individual(coordinates=coordinate1)
child1.set_fitness_score(self.fit_func(coordinate1))
child1.set_fitness_score(self.fit_func(np.array(coordinate1)))
children.append(child1)
coordinate2 = [mom.coordinates[0], mom.coordinates[1], dad.coordinates[2], dad.coordinates[3]]
child2 = Individual(coordinates=coordinate2)
child2.set_fitness_score(self.fit_func(coordinate2))
child2.set_fitness_score(self.fit_func(np.array(coordinate2)))
children.append(child2)
return children
@@ -244,7 +243,7 @@ random.randint(start_point[1], start_point[1]+side_length)),
gene_index=random.choice([0,1,2,3])
c.coordinates[gene_index] =(random.randint(self.__start_point[0], self.__start_point[0]+self.__side_length),random.randint(self.__start_point[1], self.__start_point[1]+self.__side_length))
c.set_fitness_score(self.fit_func(c.coordinates))
c.set_fitness_score(self.fit_func(np.array(c.coordinates)))
#print(f'mutated children : ', [i.fitness_score for i in population.population])
Loading