Skip to main content

An Efficient Python Genetic Algorithm API

Project description

pygenetic: An Efficient Generic, User-friendly Python Genetic Algorithm API

Build Status MIT Licence docs

pygenetic is a Python Genetic Algorithm API which is User-Friendly as well as Generic in nature unlike most GA APIs which make a trade off between the two.

Motivation

alt text While some APIs like DEAP and many more recent ones which are very efficient and generic are less user friendly in nature, other APIs like genetics and other smaller ones which are the best in terms of user friendliness, they are less generic. This API intends to strike a balance - good in terms of both user friendliness and genericity.

Features

  • Presence of both High-Level(SimpleGA) and Low-Level API(GAEngine) which users can use as per need.
  • Very generic API - Users can customize different part of the GA be it Evolution, Statistics, Different handlers, Chromosome Representations.
  • Supports efficient evolution execution using Apache Spark. This is highly scalable as more workers can be deployed. Parallelization of fitness evaluation, selection, crossovers and mutations are taken care of.
  • Supports Adaptive Mutation Rates based on how diverse the population is.
  • Supports Hall of Fame(best ever chromosome) Injection so that the best chromosome isn't lost in later generations due to the selection method used.
  • Supports Efficient Iteration Halt
  • Supports Visualization of Statistics like max, min, avg, diversity of fitnesses, mutation rates. Users can also define custom statistics
  • Supports usage of multiple crossovers and mutations in one GA execution to enhance diversity
  • Supports Population Control(control the population size or allow it grow/shrink) which users can make use of in various research purposes
  • Provides a bunch of Standard Selection, Crossovers, Mutations and Fitness Functions
  • Provides continue evolve feature so users can continue from previous evolutions instead of starting all over again.
  • Provides ANN Best Topology finder using GA functionality

Installation

pygenetic is published on pypi(https://pypi.org/project/pygenetic/) and can be easily installed by:

$ pip3 install pygenetic

For using pyspark functionality, install pyspark , Apache Spark, Scala and JVM. For using the ANN Topology Finder, install tensorflow and keras

Tests

The various tests are present in the tests/ directory. The main API tests can tested by:

$ pytest tests/modules

Usage

High Level API Basic Usage

from pygenetic import SimpleGA
ga = SimpleGA.SimpleGA(minValue=1,maxValue=120,
                      noOfGenes=20,fitness_func=lambda x:sum(x),
                      duplicates=False,population_size=1000,
                      fitness_type='max')
ga.evolve(100)
print(ga.best_fitness)

Low Level API Basic Usage

from pygenetic import ChromosomeFactory, GAEngine, Utils
factory = ChromosomeFactory.ChromosomeRangeFactory(
			noOfGenes=8,minValue=1,maxValue=8)
ga = GAEngine.GAEngine(factory,100,fitness_type=('equal',8)
						,mut_prob = 0.3)
ga.addCrossoverHandler(Utils.CrossoverHandlers.distinct)
ga.addMutationHandler(Utils.MutationHandlers.swap)
ga.setSelectionHandler(Utils.SelectionHandlers.best)
ga.setFitnessHandler(Utils.Fitness.addition)
ga.evolve(10)
print(ga.best_fitness)

For more advanced usages and tutorials

Our python package is extensively documented on ReadTheDocs. Also, refer this for step by step tutorials.

Refer examples for examples of solving different GAs using pygenetic

GA Online Execution

Install python flask and run

$ python3 flask/views.py

Input all the various fields needed for the GA. You can run the GA online and get the best 5 chromosomes of each generations followed by statistics. You can also download the equivalent pygenetic code based on all user inputs in the form

Authors

Special Mentions

  • Special thanks to Ganesh K, Rahul Bhardwaj and Hardik Surana who lended their UI made for their Design Patterns project (https://github.com/ganesh-k13/GOF-Templates) as an intial template for us to work on for our Web GUI.
  • Special thanks to our Project Guide Prof.Chitra G M

License: MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pygenetic-1.0.2.tar.gz (19.1 kB view details)

Uploaded Source

Built Distribution

pygenetic-1.0.2-py3-none-any.whl (20.7 kB view details)

Uploaded Python 3

File details

Details for the file pygenetic-1.0.2.tar.gz.

File metadata

  • Download URL: pygenetic-1.0.2.tar.gz
  • Upload date:
  • Size: 19.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/2.7.15

File hashes

Hashes for pygenetic-1.0.2.tar.gz
Algorithm Hash digest
SHA256 d5960b20a7925246ae8ef09bcdc0784435ab9e830bd92d43169dafd0fd9b0b5e
MD5 569464351fda92ca99c3bb3233b0ad5f
BLAKE2b-256 7e3d713e2ffa28051701909f21a67dd1a25933cbf92e56a7c76335c26abe5c48

See more details on using hashes here.

File details

Details for the file pygenetic-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: pygenetic-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 20.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/2.7.15

File hashes

Hashes for pygenetic-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 117871e02d7110647d2474531c1d55564b912432a069f0291cba043acdc5190e
MD5 156a9f58b2cce9e1d8702d887ef6ce6c
BLAKE2b-256 1a877e7c24d90d8d4eec253fbd51212bd05872462bf1f6a7090f411ae4ddec2a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page