/EasyGA

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.

Primary LanguagePythonMIT LicenseMIT

EasyGA - Genetic Algorithms made Easy

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.

Check out our Wiki or Youtube for more information.

Installation:

Run python's pip3 to install:

pip3 install EasyGA

Getting started with EasyGA(Basic Example):

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()

Output:

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

Getting started with EasyGA (Password Cracker Example):

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()

Ouput:

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

Issues

We would love to know if your having any issues. Please start a new issue on the Issues Page.

Local System Approach

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.

Check out our wiki for more information.