Example #1
0
    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
Example #3
0
    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
#++++++++++++++++++++++++++
Example #5
0
 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))
Example #7
0
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: ",
Example #9
0
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)