class_docstr: An implementation of a Genetic Algorithm which will try to produce the user
  specified target string.
  
  Parameters:
  -----------
  target_string: string
      The string which the GA should try to produce.
  population_size: int
      The number of individuals (possible solutions) in the population.
  mutation_rate: float
      The rate (or probability) of which the alleles (chars in this case) should be
      randomly changed.
code: def __init__(self, target_string, population_size, mutation_rate):
      self.target = target_string
      self.population_size = population_size
      self.mutation_rate = mutation_rate
      self.letters = [" "] + list(string.ascii_letters)
  
file_path: ML-From-Scratch/mlfromscratch/unsupervised_learning/genetic_algorithm.py
imports: from __future__ import print_function, division
  import string
  import numpy
label_desc: Use image node_id 1 to create a new GeneticAlgorithm object  with example: obj = GeneticAlgorithm(target_string, population_size, mutation_rate)