Skip to main content

Genetic algorithms for 2-dimensional function maximization.

Project description

fmga

fmga (function maximization through genetic algorithms) is a package that takes a genetic algorithm approach to maximization problem of non-convex objective functions in two dimensions.

The idea is to sample an evolving population of points converging to the function maximum over many iterations.

Installation

Install with pip:

pip install fmga

Import within the python script with:

import fmga

Execution

Given a function on two variables x and y, say:

def f(x, y):
    return x - math.sin(y) + 28

Pass this function as the objective_function argument to the population2D constructor (lambdas work too!):

population = fmga.population2D(objective_function=f, population_size=60)

The population can be set to breed and iterate by using the .converge() method.

population.converge(iterations=20)

To perform only one iteration of breeding and mutating, do:

population.iterate()

Access population mean fitness and mean L1 diversity stats through the .mean_fitness and .mean_diversity attributes:

print(population.mean_fitness, population.mean_diversity)

The .best_estimate() method returns the point closest to the function point of maxima in the population, as a Point2D object.

best_point = population.best_estimate()

Every Point2D object has attributes 'x' and 'y', signifying the coordinates of the maxima point.

print(best_point.x, " ", best_point.y)

To find the value of the function at this point, use:

print(best_point.fitness)

The objective function doesn't have to be differentiable, or even continuous in the specified domain!
The population of 2-dimensional points undergoes random mutations - and is selected through elitism along with breeding with selection weights inversely proportional to fitness and diversity ranks.

population2D Class Methods

The population2D constructor takes the following arguments:

population_size (default = 60) Number of points in the population.
objective_function The function to maximize!
elite_fraction (default = 0.1) Fraction of the population's points to be kept as elite during breeding. Must be between 0 and 1, inclusive.
x_min, x_max, y_min, y_max (default = 0, 100, 0, and 100 respectively) The domain where the points are spread.
mutation_probability (default = 0.05) How likely is is for a single point to mutate - this probability is the same for all points in the population. Must be between 0 and 1, inclusive.
mutation_range (default = 5) The range of the mutation when it does occur. Note that the point will never mutate out of the domain defined!
verbose (default = 2) How much output to be displayed when iterating population after population. Must take values 0, 1 or 2 with 2 representing the most output, and 0 representing none.

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

fmga-0.2.1.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

fmga-0.2.1-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

Details for the file fmga-0.2.1.tar.gz.

File metadata

  • Download URL: fmga-0.2.1.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for fmga-0.2.1.tar.gz
Algorithm Hash digest
SHA256 5938de70fb3c766c2ec1eb1a23df03366235856221fb7b8fa6b7f3c67d236ed1
MD5 f1145ece4a2ed4b94de13f620005a456
BLAKE2b-256 e44544c62ffca9aa74c5c071bac20605b42b4f5a33a5b88b88514fece1c3e61b

See more details on using hashes here.

File details

Details for the file fmga-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for fmga-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6ce1a662a58770a6be14107e297723c8316f988c4801ff5096c1417d65cecb8a
MD5 16cb57a1b375bdeefae8d5f371b26a80
BLAKE2b-256 aaafe9c0a20a26eb87ea94f4fcfd78c0b9444a02cb47deb379de597bf1e7a33e

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