def calculate_probability_of_crossover(self, individual, crossover_pressure): avg = uls.calculate_media_solution(self.population) if individual.fitness >= avg: best_fitness = self.best_solution.fitness return crossover_pressure * (best_fitness - individual.fitness) / ( best_fitness - avg) return self.p_c
def calculate_probability_of_crossover(self, p1, p2, crossover_pressure): if p1.fitness < p2.fitness: parent_fitness = p2.fitness else: parent_fitness = p1.fitness avg = uls.calculate_media_solution(self.population) if parent_fitness >= avg: best_fitness = self.best_solution.fitness return crossover_pressure*(best_fitness - parent_fitness)/(best_fitness - avg) return self.p_c
def search(self, n_iterations=0, report=False, log=False): offsprings = [] while len(offsprings) < len(self.population): off1, off2 = p1, p2 = self.selection(self.population, self._random_state, self.pressure) if self._random_state.uniform() < self.p_c: self._crossover(p1, p2) if self._random_state.uniform() < self.p_m: off1 = self._mutation(off1) off2 = self._mutation(off2) if not (hasattr(off1, 'fitness') and hasattr(off2, 'fitness')): self.problem_instance.evaluate(off1) self.problem_instance.evaluate(off2) #self.select_the_offpring(p1, p2, off1, off2, offsprings) offsprings.extend([off1, off2]) while len(offsprings) > len(self.population): offsprings.pop() #print(np.std([offspring.fitness for offspring in offsprings])) if np.std([offspring.fitness for offspring in offsprings]) < 0.02: self.selection = uls.parametrized_tournament_selection(0.2) else: self.selection = uls.parametrize_roulette_wheel_w_pressure(0.2) self.population = np.asarray(self.sort_populations(offsprings)) self.best_solution = self._get_elite(self.population) if report: self._verbose_reporter_inner(self.best_solution, n_iterations) if self.flag: if self.best_solution.fitness - uls.calculate_media_solution( self.population) < 0.02: self.selection = uls.parametrize_rank_selection(self.pressure) else: self.selection = uls.parametrize_roulette_wheel_w_pressure( self.pressure)
ga1.initialize() islands.append(ga1) best_solution = ga1.best_solution for iteration in range(n_gen): ga1.search(iteration, False, False) for i in range(len(islands)): if best_solution.fitness < islands[i].best_solution.fitness: algorithm = islands[i] best_solution = islands[i].best_solution print("\n") print(">>>>>>>>>>>>>>>>>INTERATION: ", iteration) print(">>>>>>>>>>>>>>>>>BEST_SOLUTION: ", best_solution.id) print("G1: ", [ ga1.best_solution.fitness, round(uls.calculate_media_solution(ga1.population), 2), len(ga1.population) ], sep='\t') print(">>>>>>>>>>>>>>>>>FITNESS>>>>>>>>>>>>>>>>>>>>: ", str(round(best_solution.fitness, 2))) print("\n") best_solution.print_() print("Training fitness of the best solution: %.2f" % best_solution.fitness) print("Validation fitness of the best solution: %.2f" % best_solution.fitness) #++++++++++++++++++++++++++ # TEST #++++++++++++++++++++++++++
def determinine_pressure(self): return (self.pressure * self._determine_average_reproductive_guys() ) / (uls.calculate_media_solution(self.population))
def determinine_pressure(self): print("Média: ", self._determine_average_reproductive_guys()) print("Denominador: ", uls.calculate_media_solution(self.population)) return (self.presure * self._determine_average_reproductive_guys()) / ( uls.calculate_media_solution(self.population))
save_solutions = [] save_solutions.append(ga1.best_solution) for iteration in range(n_gen): ga1.search(100, False, False) ga2.search(100, False, False) ga3.search(100, False, False) ga4.search(100, False, False) for i in range(len(islands)): if best_solution.fitness < islands[i].best_solution.fitness: algorithm = islands[i] best_solution = islands[i].best_solution print('\n') print(">>>>>>>>>>>>>>>>>INTERATION: ", iteration) print(">>>>>>>>>>>>>>>>>FITNESS>>>>>>>>>>>>>>>>>>>>: ", str(ga1.best_solution.fitness)) print(">>>>>>>>>>>>>>>>>G1 - MEAN: ", uls.calculate_media_solution(ga1.population)) print("\n") print(">>>>>>>>>>>>>>>>>FITNESS>>>>>>>>>>>>>>>>>>>>: ", str(ga2.best_solution.fitness)) print(">>>>>>>>>>>>>>>>>G2 - MEAN: ", uls.calculate_media_solution(ga2.population)) print("\n") print(">>>>>>>>>>>>>>>>>FITNESS>>>>>>>>>>>>>>>>>>>>: ", str(ga3.best_solution.fitness)) print(">>>>>>>>>>>>>>>>>G3 - MEAN: ", uls.calculate_media_solution(ga3.population)) print("\n") print(">>>>>>>>>>>>>>>>>FITNESS>>>>>>>>>>>>>>>>>>>>: ", str(ga4.best_solution.fitness)) print(">>>>>>>>>>>>>>>>>G4 - MEAN: ", uls.calculate_media_solution(ga4.population)) best_solution.print_() print("Training fitness of the best solution: %.2f" % best_solution.fitness) print("Validation fitness of the best solution: %.2f" % best_solution.validation_fitness)
migration3 = copy.deepcopy(ga3.population[:3]) migration4 = copy.deepcopy(ga4.population[:3]) migration5 = copy.deepcopy(ga5.population[:3]) ga1.population[:3] = migration2 ga2.population[:3] = migration3 ga3.population[:3] = migration4 ga4.population[:3] = migration5 ga5.population[:3] = migration1 print('\n') print(">>>>>>>>>>>>>>>>>INTERATION: ", iteration) print(">>>>>>>>>>>>>>>>>FITNESS>>>>>>>>>>>>>>>>>>>>: ", str(ga1.best_solution.fitness)) print(">>>>>>>>>>>>>>>>>G1 - MEAN: ", uls.calculate_media_solution(ga1.population)) print(">>>>>>>>>>>>>>>>>FITNESS>>>>>>>>>>>>>>>>>>>>: ", str(ga2.best_solution.fitness)) print(">>>>>>>>>>>>>>>>>G2 - MEAN: ", uls.calculate_media_solution(ga2.population)) print(">>>>>>>>>>>>>>>>>FITNESS>>>>>>>>>>>>>>>>>>>>: ", str(ga3.best_solution.fitness)) print(">>>>>>>>>>>>>>>>>G3 - MEAN: ", uls.calculate_media_solution(ga3.population)) print(">>>>>>>>>>>>>>>>>FITNESS>>>>>>>>>>>>>>>>>>>>: ", str(ga4.best_solution.fitness)) print(">>>>>>>>>>>>>>>>>G4 - MEAN: ", uls.calculate_media_solution(ga4.population)) print(">>>>>>>>>>>>>>>>>FITNESS>>>>>>>>>>>>>>>>>>>>: ", str(ga5.best_solution.fitness)) print(">>>>>>>>>>>>>>>>>G5 - MEAN: ",
import os import datetime import logging import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.metrics import accuracy_score from sklearn.model_selection import train_test_split import utils as uls from problems.ANNOP import ANNOP from ANN.ANN import ANN, softmax, sigmoid from algorithms.genetic_algorithm_Elitism import GeneticAlgorithm # setup logger file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "LogFiles/" + (str(datetime.datetime.now().date()) + "-" + str(datetime.datetime.now().hour) + \ "_" + str(datetime.datetime.now().minute) + "_log.csv")) logging.basicConfig(filename=file_path, level=logging.DEBUG, format='%(name)s,%(message)s') #++++++++++++++++++++++++++ # THE DATA # restrictions: # - MNIST digits (8*8) # - 33% for testing # - flattened input images #++++++++++++++++++++++++++ # import data digits = datasets.load_digits() flat_images = np.array([image.flatten() for image in digits.images]) print(flat_images.shape) print(digits.target_names)