EasyGA is a python package designed to provide an easy-to-use Genetic Algorithm. The package is designed to work right out of the box, while also allowing the user to customize features as they see fit.
Run python's pip3 to install:
pip3 install EasyGA
The goal of the basic example is to get all 5's in the chromosome.
import EasyGA
# Create the Genetic algorithm
ga = EasyGA.GA()
# Evolve the whole genetic algorithm until termination has been reached
ga.evolve()
# Print out the current generation and the population
ga.print_generation()
ga.print_population()
Current Generation : 15
Current population:
Chromosome - 0 [7][4][4][5][3][5][5][8][3][7] / Fitness = 3
Chromosome - 1 [7][4][4][5][3][5][5][8][3][7] / Fitness = 3
Chromosome - 2 [7][4][4][5][3][5][5][8][3][7] / Fitness = 3
Chromosome - 3 [7][4][4][5][3][5][5][8][3][7] / Fitness = 3
Chromosome - 4 [7][2][4][5][3][5][5][8][3][7] / Fitness = 3
Chromosome - 5 [7][2][4][5][3][5][5][8][3][7] / Fitness = 3
Chromosome - 6 [5][8][8][6][10][10][5][7][2][7] / Fitness = 2
Chromosome - 7 [5][8][8][6][10][10][5][7][2][7] / Fitness = 2
Chromosome - 8 [5][8][8][6][10][10][5][7][2][7] / Fitness = 2
Chromosome - 9 [7][2][8][10][3][5][5][8][1][7] / Fitness = 2
import EasyGA
import random
ga = EasyGA.GA()
word = input("Please enter a word: \n")
# Basic Attributes
ga.chromosome_length = len(word)
ga.fitness_goal = len(word)
# Size Attributes
ga.population_size = 50
ga.generation_goal = 10000
# User definded fitness
def password_fitness(chromosome):
return sum(1 for gene, letter
in zip(chromosome, word)
if gene.value == letter
)
ga.fitness_function_impl = password_fitness
# What the genes will look like.
ga.gene_impl = lambda: random.choice(["A","a","B","b","C","c","D","d","E","e",
"F","f","G","g","H","h","I","i","J","j",
"K","k","L","l","M","m","N","n","O","o",
"P","p","Q","q","R","r","S","s","T","t",
"U","u","V","v","W","w","X","x","Y","y",
"Z","z"," "])
# Evolve the gentic algorithm
ga.evolve()
# Print out the current generation and the population
ga.print_generation()
ga.print_population()
# Show graph of progress
ga.graph.highest_value_chromosome()
ga.graph.show()
Please enter a word:
EasyGA
Current Generation : 44
Chromosome - 0 [E][a][s][y][G][A] / Fitness = 6
Chromosome - 1 [E][a][s][Y][G][A] / Fitness = 5
Chromosome - 2 [E][a][s][O][G][A] / Fitness = 5
Chromosome - 3 [E][a][s][Y][G][A] / Fitness = 5
Chromosome - 4 [E][a][s][c][G][A] / Fitness = 5
Chromosome - 5 [E][a][s][c][G][A] / Fitness = 5
Chromosome - 6 [E][a][s][y][Z][A] / Fitness = 5
Chromosome - 7 [E][a][s][Y][G][A] / Fitness = 5
Chromosome - 8 [E][a][s][y][Z][A] / Fitness = 5
Chromosome - 9 [E][a][s][Y][G][A] / Fitness = 5
We would love to know if your having any issues. Please start a new issue on the Issues Page.
Download the repository to some folder on your computer.
https://github.com/danielwilczak101/EasyGA/archive/master.zip
Use the run.py file inside the EasyGA folder to run your code. This is a local version of the package.