#++++++++++++++++++++++++++ # THE SEARCH # restrictions: # - 5000 offsprings/run max* # - 50 offsprings/generation max* # - use at least 5 runs for your benchmarks # * including reproduction #++++++++++++++++++++++++++ ga1 = GeneticAlgorithm2(ann_op_i, random_state, ps, uls.parametrized_tournament_selection(pressure), uls.one_point_crossover, p_c, uls.parametrized_ball_mutation(radius), 0.2) ga2 = GeneticAlgorithm(ann_op_i, random_state, ps, uls.parametrized_tournament_selection(pressure), uls.two_point_crossover, p_c, uls.parametrized_ball_mutation(radius), 0.1) sa1 = SimulatedAnnealing(ann_op_i, random_state, ps, uls.parametrized_ball_mutation(radius), control, update_rate) search_algorithms = [ga1, ga2] # initialize search algorithms [algorithm.initialize() for algorithm in search_algorithms] # execute search [algorithm.search(n_iterations=n_gen, report=False) for algorithm in search_algorithms] #++++++++++++++++++++++++++ # TEST # - test algorithms on unseen data #++++++++++++++++++++++++++ for algorithm in search_algorithms: ann_i._set_weights(algorithm.best_solution.representation) y_pred = ann_i.stimulate_with(X_test, False) accuracy = accuracy_score(y_test, y_pred) print("Unseen Accuracy of %s: %.2f" % (algorithm.__class__, accuracy_score(y_test, y_pred)))
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 #++++++++++++++++++++++++++ ann_i._set_weights(best_solution.representation) y_pred = ann_i.stimulate_with(X_test, False) print("Unseen Accuracy of the best solution: %.2f" % accuracy_score(y_test, y_pred)) if make_plots: n_images = 25 images = X_test[0:n_images].reshape((n_images, 8, 8)) f = plt.figure(figsize=(10, 10)) for i in range(n_images): sub = f.add_subplot(5, 5, i + 1) sub.imshow(images[i], cmap=plt.get_cmap("Greens") if y_pred[i] == y_test[i] else plt.get_cmap("Reds")) plt.xticks([]) plt.yticks([])
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)