Skip to main content

A Python Genetic Algorithm Library.

Project description

PyGA

Build Status

PyGA is an extensible toolkit for Genetic Algorithms (GA) in Python.

The library aims to provide a high-level declarative interface which ensures that GAs can be implemented and customised with ease. PyGA features an extensible framework which allows researchers to provide custom implementations which interface with existing functionality.

  • License: MIT
  • Python Versions: 3.6+

Features:

  • High-level module for Genetic Algorithms.
  • Extensible API for implementing new functionality.

Basic Usage:

PyGA aims to provide a high-level interface for Genetic Algorithms - the code below demonstrates just how easy running an optimisation procedure can be.

import pyga
from pyga.utils.functions import single_objective as fx


bounds = {
    'x0': [-1e6, 1e6],
    'x1': [-1e6, 1e6],
    'x2': [-1e6, 1e6]
}

optimiser = pyga.SOGA(bounds, n_individuals=30, n_iterations=100)
optimiser.optimise(fx.sphere)

History:

The optimisation history is written to a History data structure to allow the user to further investigate the optimisation procedure upon completion. This is a powerful tool, letting the user define custom history classes which can record whichever data the user desires.

Tracking the history of the optimisation process allows for plotting of the results, an example demonstration is seen in the plot_fitness_history function - this can be further customised through the designation of a PlotDesigner object which provides formatting instructions for the graphing tools.

Constraints:

PyGA allows the user to define a set of constraints for the optimisation problem - this is achieved through inheriting a template class and implementing the designated method. An example of which is demonstrated below:

from pyga.constraints.base_constraints import PositionConstraint


class UserConstraint(PositionConstraint):

    def constrain(self, position):
        return position['x0'] > 0 and position['x1'] < 0


optimiser.constraint_manager.register_constraint(UserConstraint())

This provides the user with a large amount of freedom to define the appropriate constraints and allows the ConstraintManager to deal with the relevant constraints at the appropriate time.

Customisation:

Though the base SOGA will work for many, there maybe aspects that one may want to change, such as the selection / recombination methods. A common interface has been designed for these, this ensures that the user can alter the functionality at will and researchers can implement additional functionality with ease.

Attributes of the SOGA instance can be modified to implement alternative methods, this is demonstrated below:

# using 'uniform crossover' as the crossover method
from pyga.utils.crossovers import UniformCrossover
optimiser.crossover = UniformCrossover(p_swap=0.25)
# using 'fitness-proportionate selection' as the selection method
from pyga.utils.selections import FitnessProportionateSelection
optimiser.selection = FitnessProportionateSelection()

It is also possible to define alternative termination criteria through implementation of a TerminationManager class, a couple of examples are demonstrated below:

# using elapsed time as the termination criteria
from pyga.utils.termination_manager import TimeTerminationManager
optimiser.termination_manager = TimeTerminationManager(t_budget=10_000)
# using error as the termination criteria
from pyga.utils.termination_manager import ErrorTerminationManager
optimiser.termination_manager = ErrorTerminationManager(
    optimiser, target=0.0, threshold=1e-3
)
Author: Daniel Kelshaw

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

PyGAopt-1.0.0.tar.gz (12.9 kB view details)

Uploaded Source

Built Distribution

PyGAopt-1.0.0-py3-none-any.whl (24.6 kB view details)

Uploaded Python 3

File details

Details for the file PyGAopt-1.0.0.tar.gz.

File metadata

  • Download URL: PyGAopt-1.0.0.tar.gz
  • Upload date:
  • Size: 12.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0.post20200210 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.7.6

File hashes

Hashes for PyGAopt-1.0.0.tar.gz
Algorithm Hash digest
SHA256 5bb0ecb7aea15362f27244b151cbfb6aea9f1e658de475e95423b09ab3403711
MD5 3de2ecfdc0ac9a48f5600ad9e77ad98d
BLAKE2b-256 f8f910f9e0f9fbe79b955a9c5287719be768e39f513526314ad1883fd522b514

See more details on using hashes here.

File details

Details for the file PyGAopt-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: PyGAopt-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 24.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0.post20200210 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.7.6

File hashes

Hashes for PyGAopt-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 848580b3ab01b8ee544a4cb05b6a4c54aecd42efe87a0d85f13c175e20e72eaf
MD5 0d3a078cdc9b920062f6c0deae94cef7
BLAKE2b-256 cbe0b907115f619eb2a1d91db0e97f1077194967cad486e3a54d78dec34de209

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